Skip to content

Commit 0aea7f8

Browse files
committed
- make the GroupMember type contain all user fields
- fix type issues coming from replacing User with GroupMember in group member queries
1 parent 1027d9f commit 0aea7f8

File tree

13 files changed

+155
-41
lines changed

13 files changed

+155
-41
lines changed

coderd/apidoc/docs.go

Lines changed: 2 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: 2 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: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,35 @@ func ReducedUser(user database.User) codersdk.ReducedUser {
159159
}
160160
}
161161

162+
func UserFromGroupMember(member database.GroupMember) database.User {
163+
return database.User{
164+
ID: member.UserID,
165+
Email: member.UserEmail,
166+
Username: member.UserUsername,
167+
HashedPassword: member.UserHashedPassword,
168+
CreatedAt: member.UserCreatedAt,
169+
UpdatedAt: member.UserUpdatedAt,
170+
Status: member.UserStatus,
171+
RBACRoles: member.UserRbacRoles,
172+
LoginType: member.UserLoginType,
173+
AvatarURL: member.UserAvatarUrl,
174+
Deleted: member.UserDeleted,
175+
LastSeenAt: member.UserLastSeenAt,
176+
QuietHoursSchedule: member.UserQuietHoursSchedule,
177+
ThemePreference: member.UserThemePreference,
178+
Name: member.UserName,
179+
GithubComUserID: member.UserGithubComUserID,
180+
}
181+
}
182+
183+
func ReducedUserFromGroupMember(member database.GroupMember) codersdk.ReducedUser {
184+
return ReducedUser(UserFromGroupMember(member))
185+
}
186+
187+
func ReducedUsersFromGroupMembers(members []database.GroupMember) []codersdk.ReducedUser {
188+
return List(members, ReducedUserFromGroupMember)
189+
}
190+
162191
func ReducedUsers(users []database.User) []codersdk.ReducedUser {
163192
return List(users, ReducedUser)
164193
}
@@ -179,14 +208,14 @@ func Users(users []database.User, organizationIDs map[uuid.UUID][]uuid.UUID) []c
179208
})
180209
}
181210

182-
func Group(group database.Group, members []database.User) codersdk.Group {
211+
func Group(group database.Group, members []database.GroupMember) codersdk.Group {
183212
return codersdk.Group{
184213
ID: group.ID,
185214
Name: group.Name,
186215
DisplayName: group.DisplayName,
187216
OrganizationID: group.OrganizationID,
188217
AvatarURL: group.AvatarURL,
189-
Members: ReducedUsers(members),
218+
Members: ReducedUsersFromGroupMembers(members),
190219
QuotaAllowance: int(group.QuotaAllowance),
191220
Source: codersdk.GroupSource(group.Source),
192221
}

coderd/database/dbmem/dbmem.go

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -724,17 +724,40 @@ func (q *FakeQuerier) getOrganizationMemberNoLock(orgID uuid.UUID) []database.Or
724724
}
725725

726726
// getEveryoneGroupMembersNoLock fetches all the users in an organization.
727-
func (q *FakeQuerier) getEveryoneGroupMembersNoLock(orgID uuid.UUID) []database.User {
727+
func (q *FakeQuerier) getEveryoneGroupMembersNoLock(orgID uuid.UUID) []database.GroupMember {
728728
var (
729-
everyone []database.User
729+
everyone []database.GroupMember
730730
orgMembers = q.getOrganizationMemberNoLock(orgID)
731731
)
732732
for _, member := range orgMembers {
733733
user, err := q.getUserByIDNoLock(member.UserID)
734734
if err != nil {
735735
return nil
736736
}
737-
everyone = append(everyone, user)
737+
if user.Deleted {
738+
continue
739+
}
740+
everyone = append(everyone, database.GroupMember{
741+
UserID: user.ID,
742+
UserEmail: user.Email,
743+
UserUsername: user.Username,
744+
UserHashedPassword: user.HashedPassword,
745+
UserCreatedAt: user.CreatedAt,
746+
UserUpdatedAt: user.UpdatedAt,
747+
UserStatus: user.Status,
748+
UserRbacRoles: user.RBACRoles,
749+
UserLoginType: user.LoginType,
750+
UserAvatarUrl: user.AvatarURL,
751+
UserDeleted: user.Deleted,
752+
UserLastSeenAt: user.LastSeenAt,
753+
UserQuietHoursSchedule: user.QuietHoursSchedule,
754+
UserThemePreference: user.ThemePreference,
755+
UserName: user.Name,
756+
UserGithubComUserID: user.GithubComUserID,
757+
OrganizationID: orgID,
758+
GroupName: "Everyone",
759+
GroupID: orgID,
760+
})
738761
}
739762
return everyone
740763
}
@@ -2510,18 +2533,7 @@ func (q *FakeQuerier) GetGroupMembersByGroupID(_ context.Context, id uuid.UUID)
25102533
}
25112534
}
25122535

2513-
users := make([]database.User, 0, len(members))
2514-
2515-
for _, member := range members {
2516-
for _, user := range q.users {
2517-
if user.ID == member.UserID && !user.Deleted {
2518-
users = append(users, user)
2519-
break
2520-
}
2521-
}
2522-
}
2523-
2524-
return users, nil
2536+
return members, nil
25252537
}
25262538

25272539
func (q *FakeQuerier) GetGroupMembersCountByGroupID(ctx context.Context, groupID uuid.UUID) (int64, error) {

coderd/database/dump.sql

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

coderd/database/migrations/000241_group_members_view.up.sql

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,21 @@ WITH all_members AS (
1010
)
1111
SELECT
1212
users.id AS user_id,
13-
users.username,
13+
users.email AS user_email,
14+
users.username AS user_username,
15+
users.hashed_password AS user_hashed_password,
16+
users.created_at AS user_created_at,
17+
users.updated_at AS user_updated_at,
18+
users.status AS user_status,
19+
users.rbac_roles AS user_rbac_roles,
20+
users.login_type AS user_login_type,
1421
users.avatar_url AS user_avatar_url,
22+
users.deleted AS user_deleted,
23+
users.last_seen_at AS user_last_seen_at,
24+
users.quiet_hours_schedule AS user_quiet_hours_schedule,
25+
users.theme_preference AS user_theme_preference,
26+
users.name AS user_name,
27+
users.github_com_user_id AS user_github_com_user_id,
1528
groups.organization_id AS organization_id,
1629
groups.name AS group_name,
1730
all_members.group_id AS group_id

coderd/database/modelmethods.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,18 +76,18 @@ func (m OrganizationMember) Auditable(username string) AuditableOrganizationMemb
7676

7777
type AuditableGroup struct {
7878
Group
79-
Members []GroupMember `json:"members"`
79+
Members []GroupMemberTable `json:"members"`
8080
}
8181

8282
// Auditable returns an object that can be used in audit logs.
8383
// Covers both group and group member changes.
84-
func (g Group) Auditable(users []User) AuditableGroup {
85-
members := make([]GroupMember, 0, len(users))
86-
for _, u := range users {
87-
members = append(members, GroupMember{
88-
UserID: u.ID,
89-
GroupID: g.ID,
90-
})
84+
func (g Group) Auditable(members []GroupMember) AuditableGroup {
85+
membersTable := make([]GroupMemberTable, len(members))
86+
for i, member := range members {
87+
membersTable[i] = GroupMemberTable{
88+
UserID: member.UserID,
89+
GroupID: member.GroupID,
90+
}
9191
}
9292

9393
// consistent ordering
@@ -97,7 +97,7 @@ func (g Group) Auditable(users []User) AuditableGroup {
9797

9898
return AuditableGroup{
9999
Group: g,
100-
Members: members,
100+
Members: membersTable,
101101
}
102102
}
103103

coderd/database/models.go

Lines changed: 19 additions & 6 deletions
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: 30 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/api/members.md

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

docs/api/schemas.md

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

enterprise/coderd/groups.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ func (api *API) postGroupByOrganization(rw http.ResponseWriter, r *http.Request)
7777
return
7878
}
7979

80-
var emptyUsers []database.User
81-
aReq.New = group.Auditable(emptyUsers)
80+
var emptyMembers []database.GroupMember
81+
aReq.New = group.Auditable(emptyMembers)
8282

8383
httpapi.Write(ctx, rw, http.StatusCreated, db2sdk.Group(group, nil))
8484
}

enterprise/coderd/templates.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (api *API) templateACL(rw http.ResponseWriter, r *http.Request) {
121121

122122
groups := make([]codersdk.TemplateGroup, 0, len(dbGroups))
123123
for _, group := range dbGroups {
124-
var members []database.User
124+
var members []database.GroupMember
125125

126126
// This is a bit of a hack. The caller might not have permission to do this,
127127
// but they can read the acl list if the function got this far. So we let

0 commit comments

Comments
 (0)