Skip to content

Commit de1a7a9

Browse files
authored
chore: join user information to workspace_build and template_version (#8625)
* include minimial user on template version and build * Add unit test to ensure join is superset
1 parent fbb2a6a commit de1a7a9

39 files changed

+819
-717
lines changed

coderd/activitybump.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func activityBumpWorkspace(ctx context.Context, log slog.Logger, db database.Sto
7474
newDeadline = build.MaxDeadline
7575
}
7676

77-
if _, err := s.UpdateWorkspaceBuildByID(ctx, database.UpdateWorkspaceBuildByIDParams{
77+
if err := s.UpdateWorkspaceBuildByID(ctx, database.UpdateWorkspaceBuildByIDParams{
7878
ID: build.ID,
7979
UpdatedAt: database.Now(),
8080
ProvisionerState: build.ProvisionerState,

coderd/activitybump_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func TestWorkspaceActivityBump(t *testing.T) {
9292
dbBuild, err := db.GetWorkspaceBuildByID(ctx, workspace.LatestBuild.ID)
9393
require.NoError(t, err)
9494

95-
_, err = db.UpdateWorkspaceBuildByID(ctx, database.UpdateWorkspaceBuildByIDParams{
95+
err = db.UpdateWorkspaceBuildByID(ctx, database.UpdateWorkspaceBuildByIDParams{
9696
ID: workspace.LatestBuild.ID,
9797
UpdatedAt: database.Now(),
9898
ProvisionerState: dbBuild.ProvisionerState,

coderd/apidoc/docs.go

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

coderd/apidoc/swagger.json

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

coderd/database/dbauthz/dbauthz.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1839,23 +1839,23 @@ func (q *querier) InsertTemplate(ctx context.Context, arg database.InsertTemplat
18391839
return q.db.InsertTemplate(ctx, arg)
18401840
}
18411841

1842-
func (q *querier) InsertTemplateVersion(ctx context.Context, arg database.InsertTemplateVersionParams) (database.TemplateVersion, error) {
1842+
func (q *querier) InsertTemplateVersion(ctx context.Context, arg database.InsertTemplateVersionParams) error {
18431843
if !arg.TemplateID.Valid {
18441844
// Making a new template version is the same permission as creating a new template.
18451845
err := q.authorizeContext(ctx, rbac.ActionCreate, rbac.ResourceTemplate.InOrg(arg.OrganizationID))
18461846
if err != nil {
1847-
return database.TemplateVersion{}, err
1847+
return err
18481848
}
18491849
} else {
18501850
// Must do an authorized fetch to prevent leaking template ids this way.
18511851
tpl, err := q.GetTemplateByID(ctx, arg.TemplateID.UUID)
18521852
if err != nil {
1853-
return database.TemplateVersion{}, err
1853+
return err
18541854
}
18551855
// Check the create permission on the template.
18561856
err = q.authorizeContext(ctx, rbac.ActionCreate, tpl)
18571857
if err != nil {
1858-
return database.TemplateVersion{}, err
1858+
return err
18591859
}
18601860
}
18611861

@@ -1954,10 +1954,10 @@ func (q *querier) InsertWorkspaceApp(ctx context.Context, arg database.InsertWor
19541954
return q.db.InsertWorkspaceApp(ctx, arg)
19551955
}
19561956

1957-
func (q *querier) InsertWorkspaceBuild(ctx context.Context, arg database.InsertWorkspaceBuildParams) (database.WorkspaceBuild, error) {
1957+
func (q *querier) InsertWorkspaceBuild(ctx context.Context, arg database.InsertWorkspaceBuildParams) error {
19581958
w, err := q.db.GetWorkspaceByID(ctx, arg.WorkspaceID)
19591959
if err != nil {
1960-
return database.WorkspaceBuild{}, err
1960+
return err
19611961
}
19621962

19631963
var action rbac.Action = rbac.ActionUpdate
@@ -1966,7 +1966,7 @@ func (q *querier) InsertWorkspaceBuild(ctx context.Context, arg database.InsertW
19661966
}
19671967

19681968
if err = q.authorizeContext(ctx, action, w.WorkspaceBuildRBAC(arg.Transition)); err != nil {
1969-
return database.WorkspaceBuild{}, err
1969+
return err
19701970
}
19711971

19721972
return q.db.InsertWorkspaceBuild(ctx, arg)
@@ -2195,24 +2195,24 @@ func (q *querier) UpdateTemplateScheduleByID(ctx context.Context, arg database.U
21952195
return update(q.log, q.auth, fetch, q.db.UpdateTemplateScheduleByID)(ctx, arg)
21962196
}
21972197

2198-
func (q *querier) UpdateTemplateVersionByID(ctx context.Context, arg database.UpdateTemplateVersionByIDParams) (database.TemplateVersion, error) {
2198+
func (q *querier) UpdateTemplateVersionByID(ctx context.Context, arg database.UpdateTemplateVersionByIDParams) error {
21992199
// An actor is allowed to update the template version if they are authorized to update the template.
22002200
tv, err := q.db.GetTemplateVersionByID(ctx, arg.ID)
22012201
if err != nil {
2202-
return database.TemplateVersion{}, err
2202+
return err
22032203
}
22042204
var obj rbac.Objecter
22052205
if !tv.TemplateID.Valid {
22062206
obj = rbac.ResourceTemplate.InOrg(tv.OrganizationID)
22072207
} else {
22082208
tpl, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID)
22092209
if err != nil {
2210-
return database.TemplateVersion{}, err
2210+
return err
22112211
}
22122212
obj = tpl
22132213
}
22142214
if err := q.authorizeContext(ctx, rbac.ActionUpdate, obj); err != nil {
2215-
return database.TemplateVersion{}, err
2215+
return err
22162216
}
22172217
return q.db.UpdateTemplateVersionByID(ctx, arg)
22182218
}
@@ -2468,28 +2468,28 @@ func (q *querier) UpdateWorkspaceAutostart(ctx context.Context, arg database.Upd
24682468
return update(q.log, q.auth, fetch, q.db.UpdateWorkspaceAutostart)(ctx, arg)
24692469
}
24702470

2471-
func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.UpdateWorkspaceBuildByIDParams) (database.WorkspaceBuild, error) {
2471+
func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.UpdateWorkspaceBuildByIDParams) error {
24722472
build, err := q.db.GetWorkspaceBuildByID(ctx, arg.ID)
24732473
if err != nil {
2474-
return database.WorkspaceBuild{}, err
2474+
return err
24752475
}
24762476

24772477
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
24782478
if err != nil {
2479-
return database.WorkspaceBuild{}, err
2479+
return err
24802480
}
24812481
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace.RBACObject())
24822482
if err != nil {
2483-
return database.WorkspaceBuild{}, err
2483+
return err
24842484
}
24852485

24862486
return q.db.UpdateWorkspaceBuildByID(ctx, arg)
24872487
}
24882488

24892489
// UpdateWorkspaceBuildCostByID is used by the provisioning system to update the cost of a workspace build.
2490-
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) (database.WorkspaceBuild, error) {
2490+
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
24912491
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceSystem); err != nil {
2492-
return database.WorkspaceBuild{}, err
2492+
return err
24932493
}
24942494
return q.db.UpdateWorkspaceBuildCostByID(ctx, arg)
24952495
}

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@ func (s *MethodTestSuite) TestTemplate() {
810810
TemplateID: uuid.NullUUID{UUID: t1.ID, Valid: true},
811811
Name: tv.Name,
812812
UpdatedAt: tv.UpdatedAt,
813-
}).Asserts(t1, rbac.ActionUpdate).Returns(tv)
813+
}).Asserts(t1, rbac.ActionUpdate)
814814
}))
815815
s.Run("UpdateTemplateVersionDescriptionByJobID", s.Subtest(func(db database.Store, check *expects) {
816816
jobID := uuid.New()
@@ -1242,7 +1242,7 @@ func (s *MethodTestSuite) TestWorkspace() {
12421242
UpdatedAt: build.UpdatedAt,
12431243
Deadline: build.Deadline,
12441244
ProvisionerState: []byte{},
1245-
}).Asserts(ws, rbac.ActionUpdate).Returns(build)
1245+
}).Asserts(ws, rbac.ActionUpdate)
12461246
}))
12471247
s.Run("SoftDeleteWorkspaceByID", s.Subtest(func(db database.Store, check *expects) {
12481248
ws := dbgen.Workspace(s.T(), db, database.Workspace{})
@@ -1377,7 +1377,7 @@ func (s *MethodTestSuite) TestSystemFunctions() {
13771377
check.Args(database.UpdateWorkspaceBuildCostByIDParams{
13781378
ID: b.ID,
13791379
DailyCost: 10,
1380-
}).Asserts(rbac.ResourceSystem, rbac.ActionUpdate).Returns(o)
1380+
}).Asserts(rbac.ResourceSystem, rbac.ActionUpdate)
13811381
}))
13821382
s.Run("UpsertLastUpdateCheck", s.Subtest(func(db database.Store, check *expects) {
13831383
check.Args("value").Asserts(rbac.ResourceSystem, rbac.ActionUpdate)

0 commit comments

Comments
 (0)