Skip to content

Commit 16e95d0

Browse files
committed
add the MemberTotalCount field to codersdk.Group
1 parent e5c5f3f commit 16e95d0

File tree

12 files changed

+146
-86
lines changed

12 files changed

+146
-86
lines changed

coderd/apidoc/docs.go

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

coderd/apidoc/swagger.json

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

coderd/database/db2sdk/db2sdk.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,17 @@ func Users(users []database.User, organizationIDs map[uuid.UUID][]uuid.UUID) []c
208208
})
209209
}
210210

211-
func Group(group database.Group, members []database.GroupMember) codersdk.Group {
211+
func Group(group database.Group, members []database.GroupMember, totalMemberCount int) codersdk.Group {
212212
return codersdk.Group{
213-
ID: group.ID,
214-
Name: group.Name,
215-
DisplayName: group.DisplayName,
216-
OrganizationID: group.OrganizationID,
217-
AvatarURL: group.AvatarURL,
218-
Members: ReducedUsersFromGroupMembers(members),
219-
QuotaAllowance: int(group.QuotaAllowance),
220-
Source: codersdk.GroupSource(group.Source),
213+
ID: group.ID,
214+
Name: group.Name,
215+
DisplayName: group.DisplayName,
216+
OrganizationID: group.OrganizationID,
217+
AvatarURL: group.AvatarURL,
218+
Members: ReducedUsersFromGroupMembers(members),
219+
TotalMemberCount: totalMemberCount,
220+
QuotaAllowance: int(group.QuotaAllowance),
221+
Source: codersdk.GroupSource(group.Source),
221222
}
222223
}
223224

coderd/database/querier.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/groupmembers.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ SELECT * FROM group_members_expanded;
55
SELECT * FROM group_members_expanded WHERE group_id = @group_id;
66

77
-- name: GetGroupMembersCountByGroupID :one
8+
-- Returns the total count of members in a group. Shows the total
9+
-- count even if the caller does not have read access to ResourceGroupMember.
10+
-- They only need ResourceGroup read access.
811
SELECT
912
gme.organization_id,
1013
gme.group_id,
@@ -13,7 +16,6 @@ FROM
1316
group_members_expanded gme
1417
WHERE
1518
gme.group_id = @group_id
16-
-- This aggregation is guaranteed to return a single row
1719
GROUP BY
1820
gme.organization_id, gme.group_id;
1921

codersdk/groups.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,13 @@ type Group struct {
3030
DisplayName string `json:"display_name"`
3131
OrganizationID uuid.UUID `json:"organization_id" format:"uuid"`
3232
Members []ReducedUser `json:"members"`
33-
AvatarURL string `json:"avatar_url"`
34-
QuotaAllowance int `json:"quota_allowance"`
35-
Source GroupSource `json:"source"`
33+
// How many members are in this group. Shows the total count,
34+
// even if the user is not authorized to read group member details.
35+
// May be greater than `len(Group.Members)`.
36+
TotalMemberCount int `json:"total_member_count"`
37+
AvatarURL string `json:"avatar_url"`
38+
QuotaAllowance int `json:"quota_allowance"`
39+
Source GroupSource `json:"source"`
3640
}
3741

3842
type ReducedGroup struct {

0 commit comments

Comments
 (0)