MCPcopy Index your code
hub / github.com/coder/coder / findTemplateAdmins

Function findTemplateAdmins

coderd/notifications/reports/generator.go:298–332  ·  view source on GitHub ↗
(ctx context.Context, db database.Store, stats database.GetWorkspaceBuildStatsByTemplatesRow)

Source from the content-addressed store, hash-verified

296}
297
298func findTemplateAdmins(ctx context.Context, db database.Store, stats database.GetWorkspaceBuildStatsByTemplatesRow) ([]database.GetUsersRow, error) {
299 users, err := db.GetUsers(ctx, database.GetUsersParams{
300 RbacRole: []string{codersdk.RoleTemplateAdmin},
301 })
302 if err != nil {
303 return nil, xerrors.Errorf("unable to fetch template admins: %w", err)
304 }
305
306 var templateAdmins []database.GetUsersRow
307 if len(users) == 0 {
308 return templateAdmins, nil
309 }
310
311 usersByIDs := map[uuid.UUID]database.GetUsersRow{}
312 var userIDs []uuid.UUID
313 for _, user := range users {
314 usersByIDs[user.ID] = user
315 userIDs = append(userIDs, user.ID)
316 }
317
318 orgIDsByMemberIDs, err := db.GetOrganizationIDsByMemberIDs(ctx, userIDs)
319 if err != nil {
320 return nil, xerrors.Errorf("unable to fetch organization IDs by member IDs: %w", err)
321 }
322
323 for _, entry := range orgIDsByMemberIDs {
324 if slices.Contains(entry.OrganizationIDs, stats.TemplateOrganizationID) {
325 templateAdmins = append(templateAdmins, usersByIDs[entry.UserID])
326 }
327 }
328 sort.Slice(templateAdmins, func(i, j int) bool {
329 return templateAdmins[i].Username < templateAdmins[j].Username
330 })
331 return templateAdmins, nil
332}

Callers 1

Calls 4

GetUsersMethod · 0.65
ErrorfMethod · 0.45
ContainsMethod · 0.45

Tested by

no test coverage detected