Skip to content

Commit f7a13d3

Browse files
authored
chore: add load membership by orgName (#1525)
Signed-off-by: Miguel Martinez <miguel@chainloop.dev>
1 parent 5fba88e commit f7a13d3

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

app/controlplane/pkg/biz/membership.go

+17
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ type MembershipRepo interface {
4040
FindByIDInUser(ctx context.Context, userID, ID uuid.UUID) (*Membership, error)
4141
FindByIDInOrg(ctx context.Context, orgID, ID uuid.UUID) (*Membership, error)
4242
FindByOrgAndUser(ctx context.Context, orgID, userID uuid.UUID) (*Membership, error)
43+
FindByOrgNameAndUser(ctx context.Context, orgName string, userID uuid.UUID) (*Membership, error)
4344
SetCurrent(ctx context.Context, ID uuid.UUID) (*Membership, error)
4445
SetRole(ctx context.Context, ID uuid.UUID, role authz.Role) (*Membership, error)
4546
Create(ctx context.Context, orgID, userID uuid.UUID, current bool, role authz.Role) (*Membership, error)
@@ -275,3 +276,19 @@ func (uc *MembershipUseCase) FindByOrgAndUser(ctx context.Context, orgID, userID
275276

276277
return m, nil
277278
}
279+
280+
func (uc *MembershipUseCase) FindByOrgNameAndUser(ctx context.Context, orgName, userID string) (*Membership, error) {
281+
userUUID, err := uuid.Parse(userID)
282+
if err != nil {
283+
return nil, NewErrInvalidUUID(err)
284+
}
285+
286+
m, err := uc.repo.FindByOrgNameAndUser(ctx, orgName, userUUID)
287+
if err != nil {
288+
return nil, fmt.Errorf("failed to find membership: %w", err)
289+
} else if m == nil {
290+
return nil, NewErrNotFound("membership")
291+
}
292+
293+
return m, nil
294+
}

app/controlplane/pkg/data/membership.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright 2023 The Chainloop Authors.
2+
// Copyright 2024 The Chainloop Authors.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
55
// you may not use this file except in compliance with the License.
@@ -108,6 +108,16 @@ func (r *MembershipRepo) FindByOrgAndUser(ctx context.Context, orgID, userID uui
108108

109109
return entMembershipToBiz(m), nil
110110
}
111+
func (r *MembershipRepo) FindByOrgNameAndUser(ctx context.Context, orgName string, userID uuid.UUID) (*biz.Membership, error) {
112+
m, err := r.data.DB.Organization.Query().Where(organization.Name(orgName)).
113+
QueryMemberships().Where(membership.HasUserWith(user.ID(userID))).
114+
WithOrganization().WithUser().Only(ctx)
115+
if err != nil && !ent.IsNotFound(err) {
116+
return nil, err
117+
}
118+
119+
return entMembershipToBiz(m), nil
120+
}
111121

112122
func (r *MembershipRepo) FindByIDInUser(ctx context.Context, userID, membershipID uuid.UUID) (*biz.Membership, error) {
113123
m, err := r.data.DB.User.Query().Where(user.ID(userID)).

0 commit comments

Comments
 (0)