Skip to content

Commit b3d5199

Browse files
committed
Template -> TemplateWithUser
1 parent 3f2a8dd commit b3d5199

File tree

15 files changed

+208
-199
lines changed

15 files changed

+208
-199
lines changed

cli/server.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,6 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
607607
options.Pubsub = pubsub.NewInMemory()
608608
} else {
609609
sqlDB, err := connectToPostgres(ctx, logger, sqlDriver, cfg.PostgresURL.String())
610-
611610
if err != nil {
612611
return xerrors.Errorf("connect to postgres: %w", err)
613612
}

coderd/database/dbauthz/dbauthz.go

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1808,9 +1808,12 @@ func (q *querier) InsertReplica(ctx context.Context, arg database.InsertReplicaP
18081808
return q.db.InsertReplica(ctx, arg)
18091809
}
18101810

1811-
func (q *querier) InsertTemplate(ctx context.Context, arg database.InsertTemplateParams) (error, error) {
1811+
func (q *querier) InsertTemplate(ctx context.Context, arg database.InsertTemplateParams) error {
18121812
obj := rbac.ResourceTemplate.InOrg(arg.OrganizationID)
1813-
return insert(q.log, q.auth, obj, q.db.InsertTemplate)(ctx, arg)
1813+
if err := q.authorizeContext(ctx, rbac.ActionCreate, obj); err != nil {
1814+
return err
1815+
}
1816+
return q.db.InsertTemplate(ctx, arg)
18141817
}
18151818

18161819
func (q *querier) InsertTemplateVersion(ctx context.Context, arg database.InsertTemplateVersionParams) (database.TemplateVersion, error) {
@@ -2134,17 +2137,17 @@ func (q *querier) UpdateReplica(ctx context.Context, arg database.UpdateReplicaP
21342137
return q.db.UpdateReplica(ctx, arg)
21352138
}
21362139

2137-
func (q *querier) UpdateTemplateACLByID(ctx context.Context, arg database.UpdateTemplateACLByIDParams) (error, error) {
2138-
// UpdateTemplateACL uses the ActionCreate action. Only users that can create the template
2139-
// may update the ACL.
2140-
fetch := func(ctx context.Context, arg database.UpdateTemplateACLByIDParams) (database.Template, error) {
2140+
func (q *querier) UpdateTemplateACLByID(ctx context.Context, arg database.UpdateTemplateACLByIDParams) error {
2141+
fetch := func(ctx context.Context, arg database.UpdateTemplateACLByIDParams) (database.TemplateWithUser, error) {
21412142
return q.db.GetTemplateByID(ctx, arg.ID)
21422143
}
2143-
return fetchAndQuery(q.log, q.auth, rbac.ActionCreate, fetch, q.db.UpdateTemplateACLByID)(ctx, arg)
2144+
// UpdateTemplateACL uses the ActionCreate action. Only users that can create the template
2145+
// may update the ACL.
2146+
return fetchAndExec(q.log, q.auth, rbac.ActionCreate, fetch, q.db.UpdateTemplateACLByID)(ctx, arg)
21442147
}
21452148

21462149
func (q *querier) UpdateTemplateActiveVersionByID(ctx context.Context, arg database.UpdateTemplateActiveVersionByIDParams) error {
2147-
fetch := func(ctx context.Context, arg database.UpdateTemplateActiveVersionByIDParams) (database.Template, error) {
2150+
fetch := func(ctx context.Context, arg database.UpdateTemplateActiveVersionByIDParams) (database.TemplateWithUser, error) {
21482151
return q.db.GetTemplateByID(ctx, arg.ID)
21492152
}
21502153
return update(q.log, q.auth, fetch, q.db.UpdateTemplateActiveVersionByID)(ctx, arg)
@@ -2155,18 +2158,18 @@ func (q *querier) UpdateTemplateDeletedByID(ctx context.Context, arg database.Up
21552158
return q.SoftDeleteTemplateByID(ctx, arg.ID)
21562159
}
21572160

2158-
func (q *querier) UpdateTemplateMetaByID(ctx context.Context, arg database.UpdateTemplateMetaByIDParams) (error, error) {
2159-
fetch := func(ctx context.Context, arg database.UpdateTemplateMetaByIDParams) (database.Template, error) {
2161+
func (q *querier) UpdateTemplateMetaByID(ctx context.Context, arg database.UpdateTemplateMetaByIDParams) error {
2162+
fetch := func(ctx context.Context, arg database.UpdateTemplateMetaByIDParams) (database.TemplateWithUser, error) {
21602163
return q.db.GetTemplateByID(ctx, arg.ID)
21612164
}
2162-
return updateWithReturn(q.log, q.auth, fetch, q.db.UpdateTemplateMetaByID)(ctx, arg)
2165+
return update(q.log, q.auth, fetch, q.db.UpdateTemplateMetaByID)(ctx, arg)
21632166
}
21642167

2165-
func (q *querier) UpdateTemplateScheduleByID(ctx context.Context, arg database.UpdateTemplateScheduleByIDParams) (error, error) {
2166-
fetch := func(ctx context.Context, arg database.UpdateTemplateScheduleByIDParams) (database.Template, error) {
2168+
func (q *querier) UpdateTemplateScheduleByID(ctx context.Context, arg database.UpdateTemplateScheduleByIDParams) error {
2169+
fetch := func(ctx context.Context, arg database.UpdateTemplateScheduleByIDParams) (database.TemplateWithUser, error) {
21672170
return q.db.GetTemplateByID(ctx, arg.ID)
21682171
}
2169-
return updateWithReturn(q.log, q.auth, fetch, q.db.UpdateTemplateScheduleByID)(ctx, arg)
2172+
return update(q.log, q.auth, fetch, q.db.UpdateTemplateScheduleByID)(ctx, arg)
21702173
}
21712174

21722175
func (q *querier) UpdateTemplateVersionByID(ctx context.Context, arg database.UpdateTemplateVersionByIDParams) (database.TemplateVersion, error) {
@@ -2507,7 +2510,7 @@ func (q *querier) UpdateWorkspaceTTL(ctx context.Context, arg database.UpdateWor
25072510
}
25082511

25092512
func (q *querier) UpdateWorkspaceTTLToBeWithinTemplateMax(ctx context.Context, arg database.UpdateWorkspaceTTLToBeWithinTemplateMaxParams) error {
2510-
fetch := func(ctx context.Context, arg database.UpdateWorkspaceTTLToBeWithinTemplateMaxParams) (database.Template, error) {
2513+
fetch := func(ctx context.Context, arg database.UpdateWorkspaceTTLToBeWithinTemplateMaxParams) (database.TemplateWithUser, error) {
25112514
return q.db.GetTemplateByID(ctx, arg.TemplateID)
25122515
}
25132516
return fetchAndExec(q.log, q.auth, rbac.ActionUpdate, fetch, q.db.UpdateWorkspaceTTLToBeWithinTemplateMax)(ctx, arg)
@@ -2574,7 +2577,7 @@ func (q *querier) UpsertTailnetCoordinator(ctx context.Context, id uuid.UUID) (d
25742577
return q.db.UpsertTailnetCoordinator(ctx, id)
25752578
}
25762579

2577-
func (q *querier) GetAuthorizedTemplates(ctx context.Context, arg database.GetTemplatesWithFilterParams, _ rbac.PreparedAuthorized) ([]database.Template, error) {
2580+
func (q *querier) GetAuthorizedTemplates(ctx context.Context, arg database.GetTemplatesWithFilterParams, _ rbac.PreparedAuthorized) ([]database.TemplateWithUser, error) {
25782581
// TODO Delete this function, all GetTemplates should be authorized. For now just call getTemplates on the authz querier.
25792582
return q.GetTemplatesWithFilter(ctx, arg)
25802583
}

coderd/database/dbfake/dbfake.go

Lines changed: 49 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -443,13 +443,38 @@ func (q *FakeQuerier) getLatestWorkspaceBuildByWorkspaceIDNoLock(_ context.Conte
443443
return row, nil
444444
}
445445

446-
func (q *FakeQuerier) getTemplateByIDNoLock(_ context.Context, id uuid.UUID) (database.Template, error) {
446+
func (q *FakeQuerier) getTemplateByIDNoLock(_ context.Context, id uuid.UUID) (database.TemplateWithUser, error) {
447447
for _, template := range q.templates {
448448
if template.ID == id {
449-
return template.DeepCopy(), nil
449+
return q.templateWithUser(template), nil
450450
}
451451
}
452-
return database.Template{}, sql.ErrNoRows
452+
return database.TemplateWithUser{}, sql.ErrNoRows
453+
}
454+
455+
func (q *FakeQuerier) templatesWithUser(tpl []database.Template) []database.TemplateWithUser {
456+
cpy := make([]database.TemplateWithUser, 0, len(tpl))
457+
for _, t := range tpl {
458+
cpy = append(cpy, q.templateWithUser(t))
459+
}
460+
return cpy
461+
}
462+
463+
func (q *FakeQuerier) templateWithUser(tpl database.Template) database.TemplateWithUser {
464+
var user database.User
465+
for _, _user := range q.users {
466+
if _user.ID == tpl.CreatedBy {
467+
user = _user
468+
break
469+
}
470+
}
471+
var withUser database.TemplateWithUser
472+
// This is a cheeky way to copy the fields over without explictly listing them all.
473+
d, _ := json.Marshal(tpl)
474+
_ = json.Unmarshal(d, &withUser)
475+
withUser.CreatedByUsername = user.Username
476+
withUser.CreatedByAvatarURL = user.AvatarURL.String
477+
return withUser
453478
}
454479

455480
func (q *FakeQuerier) getTemplateVersionByIDNoLock(_ context.Context, templateVersionID uuid.UUID) (database.TemplateVersion, error) {
@@ -1853,7 +1878,7 @@ func (q *FakeQuerier) GetTemplateByID(ctx context.Context, id uuid.UUID) (databa
18531878

18541879
func (q *FakeQuerier) GetTemplateByOrganizationAndName(_ context.Context, arg database.GetTemplateByOrganizationAndNameParams) (database.TemplateWithUser, error) {
18551880
if err := validateDatabaseType(arg); err != nil {
1856-
return database.Template{}, err
1881+
return database.TemplateWithUser{}, err
18571882
}
18581883

18591884
q.mutex.RLock()
@@ -1869,9 +1894,9 @@ func (q *FakeQuerier) GetTemplateByOrganizationAndName(_ context.Context, arg da
18691894
if template.Deleted != arg.Deleted {
18701895
continue
18711896
}
1872-
return template.DeepCopy(), nil
1897+
return q.templateWithUser(template), nil
18731898
}
1874-
return database.Template{}, sql.ErrNoRows
1899+
return database.TemplateWithUser{}, sql.ErrNoRows
18751900
}
18761901

18771902
func (q *FakeQuerier) GetTemplateDAUs(_ context.Context, arg database.GetTemplateDAUsParams) ([]database.GetTemplateDAUsRow, error) {
@@ -2102,7 +2127,7 @@ func (q *FakeQuerier) GetTemplates(_ context.Context) ([]database.TemplateWithUs
21022127
return i.ID.String() < j.ID.String()
21032128
})
21042129

2105-
return templates, nil
2130+
return q.templatesWithUser(templates), nil
21062131
}
21072132

21082133
func (q *FakeQuerier) GetTemplatesWithFilter(ctx context.Context, arg database.GetTemplatesWithFilterParams) ([]database.TemplateWithUser, error) {
@@ -3436,9 +3461,9 @@ func (q *FakeQuerier) InsertReplica(_ context.Context, arg database.InsertReplic
34363461
return replica, nil
34373462
}
34383463

3439-
func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTemplateParams) (error, error) {
3464+
func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTemplateParams) error {
34403465
if err := validateDatabaseType(arg); err != nil {
3441-
return database.Template{}, err
3466+
return err
34423467
}
34433468

34443469
q.mutex.Lock()
@@ -3464,7 +3489,7 @@ func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTempl
34643489
AllowUserAutostop: true,
34653490
}
34663491
q.templates = append(q.templates, template)
3467-
return template.DeepCopy(), nil
3492+
return nil
34683493
}
34693494

34703495
func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.InsertTemplateVersionParams) (database.TemplateVersion, error) {
@@ -4172,9 +4197,9 @@ func (q *FakeQuerier) UpdateReplica(_ context.Context, arg database.UpdateReplic
41724197
return database.Replica{}, sql.ErrNoRows
41734198
}
41744199

4175-
func (q *FakeQuerier) UpdateTemplateACLByID(_ context.Context, arg database.UpdateTemplateACLByIDParams) (error, error) {
4200+
func (q *FakeQuerier) UpdateTemplateACLByID(_ context.Context, arg database.UpdateTemplateACLByIDParams) error {
41764201
if err := validateDatabaseType(arg); err != nil {
4177-
return database.Template{}, err
4202+
return err
41784203
}
41794204

41804205
q.mutex.Lock()
@@ -4186,11 +4211,11 @@ func (q *FakeQuerier) UpdateTemplateACLByID(_ context.Context, arg database.Upda
41864211
template.UserACL = arg.UserACL
41874212

41884213
q.templates[i] = template
4189-
return template.DeepCopy(), nil
4214+
return nil
41904215
}
41914216
}
41924217

4193-
return database.Template{}, sql.ErrNoRows
4218+
return sql.ErrNoRows
41944219
}
41954220

41964221
func (q *FakeQuerier) UpdateTemplateActiveVersionByID(_ context.Context, arg database.UpdateTemplateActiveVersionByIDParams) error {
@@ -4233,9 +4258,9 @@ func (q *FakeQuerier) UpdateTemplateDeletedByID(_ context.Context, arg database.
42334258
return sql.ErrNoRows
42344259
}
42354260

4236-
func (q *FakeQuerier) UpdateTemplateMetaByID(_ context.Context, arg database.UpdateTemplateMetaByIDParams) (error, error) {
4261+
func (q *FakeQuerier) UpdateTemplateMetaByID(_ context.Context, arg database.UpdateTemplateMetaByIDParams) error {
42374262
if err := validateDatabaseType(arg); err != nil {
4238-
return database.Template{}, err
4263+
return err
42394264
}
42404265

42414266
q.mutex.Lock()
@@ -4251,15 +4276,15 @@ func (q *FakeQuerier) UpdateTemplateMetaByID(_ context.Context, arg database.Upd
42514276
tpl.Description = arg.Description
42524277
tpl.Icon = arg.Icon
42534278
q.templates[idx] = tpl
4254-
return tpl.DeepCopy(), nil
4279+
return nil
42554280
}
42564281

4257-
return database.Template{}, sql.ErrNoRows
4282+
return sql.ErrNoRows
42584283
}
42594284

4260-
func (q *FakeQuerier) UpdateTemplateScheduleByID(_ context.Context, arg database.UpdateTemplateScheduleByIDParams) (error, error) {
4285+
func (q *FakeQuerier) UpdateTemplateScheduleByID(_ context.Context, arg database.UpdateTemplateScheduleByIDParams) error {
42614286
if err := validateDatabaseType(arg); err != nil {
4262-
return database.Template{}, err
4287+
return err
42634288
}
42644289

42654290
q.mutex.Lock()
@@ -4278,10 +4303,10 @@ func (q *FakeQuerier) UpdateTemplateScheduleByID(_ context.Context, arg database
42784303
tpl.InactivityTTL = arg.InactivityTTL
42794304
tpl.LockedTTL = arg.LockedTTL
42804305
q.templates[idx] = tpl
4281-
return tpl.DeepCopy(), nil
4306+
return nil
42824307
}
42834308

4284-
return database.Template{}, sql.ErrNoRows
4309+
return sql.ErrNoRows
42854310
}
42864311

42874312
func (q *FakeQuerier) UpdateTemplateVersionByID(_ context.Context, arg database.UpdateTemplateVersionByIDParams) (database.TemplateVersion, error) {
@@ -4967,7 +4992,7 @@ func (*FakeQuerier) UpsertTailnetCoordinator(context.Context, uuid.UUID) (databa
49674992
return database.TailnetCoordinator{}, ErrUnimplemented
49684993
}
49694994

4970-
func (q *FakeQuerier) GetAuthorizedTemplates(ctx context.Context, arg database.GetTemplatesWithFilterParams, prepared rbac.PreparedAuthorized) ([]database.Template, error) {
4995+
func (q *FakeQuerier) GetAuthorizedTemplates(ctx context.Context, arg database.GetTemplatesWithFilterParams, prepared rbac.PreparedAuthorized) ([]database.TemplateWithUser, error) {
49714996
if err := validateDatabaseType(arg); err != nil {
49724997
return nil, err
49734998
}
@@ -5021,7 +5046,7 @@ func (q *FakeQuerier) GetAuthorizedTemplates(ctx context.Context, arg database.G
50215046
}
50225047
return i.ID.String() < j.ID.String()
50235048
})
5024-
return templates, nil
5049+
return q.templatesWithUser(templates), nil
50255050
}
50265051

50275052
return nil, sql.ErrNoRows

coderd/database/dbmetrics/dbmetrics.go

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

0 commit comments

Comments
 (0)