Skip to content

Commit b73da88

Browse files
committed
reduce redundancy
Signed-off-by: Javier Rodriguez <javier@chainloop.dev>
1 parent 9bb52db commit b73da88

1 file changed

Lines changed: 5 additions & 24 deletions

File tree

app/controlplane/pkg/data/membership.go

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,6 @@ func (r *MembershipRepo) SetRole(ctx context.Context, membershipID uuid.UUID, ro
244244
// Delete deletes a membership by ID.
245245
// When deleting a membership, it's important to ensure we're not leaving any dangling references.
246246
func (r *MembershipRepo) Delete(ctx context.Context, id uuid.UUID) error {
247-
var membershipToDelete *ent.Membership
248-
249247
// First, fetch the membership to understand what we're deleting
250248
membershipToDelete, err := r.data.DB.Membership.Query().Where(membership.ID(id)).WithOrganization().Only(ctx)
251249
if err != nil {
@@ -255,7 +253,7 @@ func (r *MembershipRepo) Delete(ctx context.Context, id uuid.UUID) error {
255253
return fmt.Errorf("failed to get membership: %w", err)
256254
}
257255

258-
err = WithTx(ctx, r.data.DB, func(tx *ent.Tx) error {
256+
return WithTx(ctx, r.data.DB, func(tx *ent.Tx) error {
259257
// Delete the specific membership
260258
if err := tx.Membership.DeleteOneID(id).Exec(ctx); err != nil {
261259
return fmt.Errorf("failed to delete membership: %w", err)
@@ -264,14 +262,12 @@ func (r *MembershipRepo) Delete(ctx context.Context, id uuid.UUID) error {
264262
// If this is an organization membership and the member type is a user,
265263
// we also need to clean up any resource memberships for this user in the organization
266264
if membershipToDelete.ResourceType == authz.ResourceTypeOrganization && membershipToDelete.MembershipType == authz.MembershipTypeUser {
267-
// Extract the organization id from the membership
265+
// Extract the organization id and user ID from the membership
268266
orgID := membershipToDelete.Edges.Organization.ID
269-
270-
// Extract the user ID from the membership
271-
// Note: membershipToDelete.MemberID is already the user ID in this case
272267
userID := membershipToDelete.MemberID
273268

274269
// Delete all other resource memberships for this user in the organization
270+
// This will cover all membership types including group-related ones
275271
_, err := tx.Membership.Delete().Where(
276272
membership.IDNEQ(id), // Don't try to delete the one we already deleted
277273
membership.MemberID(userID),
@@ -305,17 +301,8 @@ func (r *MembershipRepo) Delete(ctx context.Context, id uuid.UUID) error {
305301
return fmt.Errorf("failed to remove user from group: %w", err)
306302
}
307303

308-
if gm.Maintainer {
309-
// Also remove the user membership if it exists
310-
if _, err := tx.Membership.Delete().Where(
311-
membership.MemberID(userID),
312-
membership.ResourceTypeEQ(authz.ResourceTypeGroup),
313-
membership.ResourceID(gm.GroupID),
314-
membership.HasOrganizationWith(organization.ID(orgID)),
315-
).Exec(ctx); err != nil {
316-
return fmt.Errorf("failed to remove user from group: %w", err)
317-
}
318-
}
304+
// We don't need to delete the user's membership to this group separately
305+
// since we already deleted all memberships for this user in this organization above
319306

320307
// Decrement the member count of the group
321308
if err := tx.Group.UpdateOneID(gm.GroupID).
@@ -328,12 +315,6 @@ func (r *MembershipRepo) Delete(ctx context.Context, id uuid.UUID) error {
328315

329316
return nil
330317
})
331-
332-
if err != nil {
333-
return fmt.Errorf("failed to delete membership: %w", err)
334-
}
335-
336-
return nil
337318
}
338319

339320
// RBAC methods

0 commit comments

Comments
 (0)