Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita131bc3

Browse files
committed
perf: use a single query for notification target lookups
1 parentb90c74a commita131bc3

File tree

3 files changed

+41
-42
lines changed

3 files changed

+41
-42
lines changed

‎coderd/templates.go‎

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,19 +1130,11 @@ func (api *API) convertTemplate(
11301130

11311131
// findTemplateAdmins fetches all users with template admin permission including owners.
11321132
funcfindTemplateAdmins(ctx context.Context,store database.Store) ([]database.GetUsersRow,error) {
1133-
// Notice: we can't scrape the user information in parallel as pq
1134-
// fails with: unexpected describe rows response: 'D'
1135-
owners,err:=store.GetUsers(ctx, database.GetUsersParams{
1136-
RbacRole: []string{codersdk.RoleOwner},
1137-
})
1138-
iferr!=nil {
1139-
returnnil,xerrors.Errorf("get owners: %w",err)
1140-
}
11411133
templateAdmins,err:=store.GetUsers(ctx, database.GetUsersParams{
1142-
RbacRole: []string{codersdk.RoleTemplateAdmin},
1134+
RbacRole: []string{codersdk.RoleTemplateAdmin,codersdk.RoleOwner},
11431135
})
11441136
iferr!=nil {
1145-
returnnil,xerrors.Errorf("gettemplate admins: %w",err)
1137+
returnnil,xerrors.Errorf("getowners: %w",err)
11461138
}
1147-
returnappend(owners,templateAdmins...),nil
1139+
returntemplateAdmins,nil
11481140
}

‎coderd/users.go‎

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1537,21 +1537,13 @@ func (api *API) CreateUser(ctx context.Context, store database.Store, req Create
15371537

15381538
// findUserAdmins fetches all users with user admin permission including owners.
15391539
funcfindUserAdmins(ctx context.Context,store database.Store) ([]database.GetUsersRow,error) {
1540-
// Notice: we can't scrape the user information in parallel as pq
1541-
// fails with: unexpected describe rows response: 'D'
1542-
owners,err:=store.GetUsers(ctx, database.GetUsersParams{
1543-
RbacRole: []string{codersdk.RoleOwner},
1544-
})
1545-
iferr!=nil {
1546-
returnnil,xerrors.Errorf("get owners: %w",err)
1547-
}
15481540
userAdmins,err:=store.GetUsers(ctx, database.GetUsersParams{
1549-
RbacRole: []string{codersdk.RoleUserAdmin},
1541+
RbacRole: []string{codersdk.RoleOwner,codersdk.RoleUserAdmin},
15501542
})
15511543
iferr!=nil {
1552-
returnnil,xerrors.Errorf("getuser admins: %w",err)
1544+
returnnil,xerrors.Errorf("getowners: %w",err)
15531545
}
1554-
returnappend(owners,userAdmins...),nil
1546+
returnuserAdmins,nil
15551547
}
15561548

15571549
funcconvertUsers(users []database.User,organizationIDsByUserIDmap[uuid.UUID][]uuid.UUID) []codersdk.User {

‎coderd/users_test.go‎

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -604,16 +604,22 @@ func TestNotifyDeletedUser(t *testing.T) {
604604
// sent[2]: "Member" account created, "user admin" notified
605605

606606
// "Member" account deleted, "owner" notified
607-
require.Equal(t,notifications.TemplateUserAccountDeleted,sent[3].TemplateID)
608-
require.Equal(t,firstUser.UserID,sent[3].UserID)
609-
require.Contains(t,sent[3].Targets,member.ID)
610-
require.Equal(t,member.Username,sent[3].Labels["deleted_account_name"])
607+
ownerNotifications:=notifyEnq.Sent(func(n*notificationstest.FakeNotification)bool {
608+
returnn.TemplateID==notifications.TemplateUserAccountDeleted&&
609+
n.UserID==firstUser.UserID&&
610+
slices.Contains(n.Targets,member.ID)&&
611+
n.Labels["deleted_account_name"]==member.Username
612+
})
613+
require.Len(t,ownerNotifications,1)
611614

612615
// "Member" account deleted, "user admin" notified
613-
require.Equal(t,notifications.TemplateUserAccountDeleted,sent[4].TemplateID)
614-
require.Equal(t,userAdmin.ID,sent[4].UserID)
615-
require.Contains(t,sent[4].Targets,member.ID)
616-
require.Equal(t,member.Username,sent[4].Labels["deleted_account_name"])
616+
adminNotifications:=notifyEnq.Sent(func(n*notificationstest.FakeNotification)bool {
617+
returnn.TemplateID==notifications.TemplateUserAccountDeleted&&
618+
n.UserID==userAdmin.ID&&
619+
slices.Contains(n.Targets,member.ID)&&
620+
n.Labels["deleted_account_name"]==member.Username
621+
})
622+
require.Len(t,adminNotifications,1)
617623
})
618624
}
619625

@@ -960,22 +966,31 @@ func TestNotifyCreatedUser(t *testing.T) {
960966
require.Len(t,sent,3)
961967

962968
// "User admin" account created, "owner" notified
963-
require.Equal(t,notifications.TemplateUserAccountCreated,sent[0].TemplateID)
964-
require.Equal(t,firstUser.UserID,sent[0].UserID)
965-
require.Contains(t,sent[0].Targets,userAdmin.ID)
966-
require.Equal(t,userAdmin.Username,sent[0].Labels["created_account_name"])
969+
ownerNotifiedAboutUserAdmin:=notifyEnq.Sent(func(n*notificationstest.FakeNotification)bool {
970+
returnn.TemplateID==notifications.TemplateUserAccountCreated&&
971+
n.UserID==firstUser.UserID&&
972+
slices.Contains(n.Targets,userAdmin.ID)&&
973+
n.Labels["created_account_name"]==userAdmin.Username
974+
})
975+
require.Len(t,ownerNotifiedAboutUserAdmin,1)
967976

968977
// "Member" account created, "owner" notified
969-
require.Equal(t,notifications.TemplateUserAccountCreated,sent[1].TemplateID)
970-
require.Equal(t,firstUser.UserID,sent[1].UserID)
971-
require.Contains(t,sent[1].Targets,member.ID)
972-
require.Equal(t,member.Username,sent[1].Labels["created_account_name"])
978+
ownerNotifiedAboutMember:=notifyEnq.Sent(func(n*notificationstest.FakeNotification)bool {
979+
returnn.TemplateID==notifications.TemplateUserAccountCreated&&
980+
n.UserID==firstUser.UserID&&
981+
slices.Contains(n.Targets,member.ID)&&
982+
n.Labels["created_account_name"]==member.Username
983+
})
984+
require.Len(t,ownerNotifiedAboutMember,1)
973985

974986
// "Member" account created, "user admin" notified
975-
require.Equal(t,notifications.TemplateUserAccountCreated,sent[1].TemplateID)
976-
require.Equal(t,userAdmin.ID,sent[2].UserID)
977-
require.Contains(t,sent[2].Targets,member.ID)
978-
require.Equal(t,member.Username,sent[2].Labels["created_account_name"])
987+
userAdminNotifiedAboutMember:=notifyEnq.Sent(func(n*notificationstest.FakeNotification)bool {
988+
returnn.TemplateID==notifications.TemplateUserAccountCreated&&
989+
n.UserID==userAdmin.ID&&
990+
slices.Contains(n.Targets,member.ID)&&
991+
n.Labels["created_account_name"]==member.Username
992+
})
993+
require.Len(t,userAdminNotifiedAboutMember,1)
979994
})
980995
}
981996

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp