Skip to content

Commit 7a692df

Browse files
committed
add parent resource ID to project memberships
Signed-off-by: Jose I. Paris <jiparis@chainloop.dev>
1 parent d7a13c6 commit 7a692df

8 files changed

Lines changed: 210 additions & 150 deletions

File tree

app/controlplane/api/controlplane/v1/project.pb.go

Lines changed: 154 additions & 141 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/controlplane/api/controlplane/v1/project.proto

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,10 @@ message ProjectMember {
6868
google.protobuf.Timestamp updated_at = 5;
6969
// The ID of latest project version this member is associated with
7070
string latest_project_version_id = 6;
71-
// Optional parent ID for nested project memberships
71+
// Optional parent membership ID for nested project memberships
7272
optional string parent_id = 7;
73+
// Optional parent resource ID for nested project memberships
74+
optional string parent_resource_id = 8;
7375
}
7476

7577
// ProjectServiceAddMemberRequest contains the information needed to add a user to a project

app/controlplane/api/gen/frontend/controlplane/v1/project.ts

Lines changed: 20 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/controlplane/api/gen/jsonschema/controlplane.v1.ProjectMember.jsonschema.json

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/controlplane/api/gen/jsonschema/controlplane.v1.ProjectMember.schema.json

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/controlplane/internal/service/project.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,10 @@ func bizProjectMembershipToPb(m *biz.ProjectMembership) *pb.ProjectMember {
392392
pbMember.ParentId = biz.ToPtr(m.ParentID.String())
393393
}
394394

395+
if m.ParentResourceID != nil {
396+
pbMember.ParentResourceId = biz.ToPtr(m.ParentResourceID.String())
397+
}
398+
395399
if m.User != nil {
396400
pbMember.Subject = &pb.ProjectMember_User{
397401
User: bizUserToPb(m.User),

app/controlplane/pkg/biz/project.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,10 @@ type ProjectMembership struct {
9494
CreatedAt *time.Time
9595
// UpdatedAt is the timestamp when the membership was last updated.
9696
UpdatedAt *time.Time
97-
// ParentID is used for nested memberships, if applicable
97+
// ParentID is the parent membership object used for nested memberships, if applicable
9898
ParentID *uuid.UUID
99+
// ParentResourceID identifies the parent resource of this membership, if applicable
100+
ParentResourceID *uuid.UUID
99101
}
100102

101103
// GroupProjectInfo represents detailed information about a project that a group is a member of

app/controlplane/pkg/data/project.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (r *ProjectRepo) ListMembers(ctx context.Context, orgID uuid.UUID, projectI
128128
Where(
129129
membership.ResourceTypeEQ(authz.ResourceTypeProject),
130130
membership.ResourceID(projectID),
131-
)
131+
).WithParent()
132132

133133
// Get total count before applying pagination
134134
totalCount, err := query.Count(ctx)
@@ -362,6 +362,11 @@ func entProjectMembershipToBiz(m *ent.Membership, u *ent.User, g *ent.Group) *bi
362362
ParentID: m.ParentID,
363363
}
364364

365+
// Add the parent resource ID if it exists
366+
if m.Edges.Parent != nil {
367+
mem.ParentResourceID = &m.Edges.Parent.ResourceID
368+
}
369+
365370
if u != nil {
366371
mem.User = entUserToBizUser(u)
367372
}

0 commit comments

Comments
 (0)