Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eddc782

Browse files
committed
include minimial user on template version and build
1 parent dc8b731 commit eddc782

31 files changed

+541
-467
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/database/dbauthz/dbauthz.go

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

1819-
func (q *querier) InsertTemplateVersion(ctx context.Context, arg database.InsertTemplateVersionParams) (database.TemplateVersion, error) {
1819+
func (q *querier) InsertTemplateVersion(ctx context.Context, arg database.InsertTemplateVersionParams) error {
18201820
if !arg.TemplateID.Valid {
18211821
// Making a new template version is the same permission as creating a new template.
18221822
err := q.authorizeContext(ctx, rbac.ActionCreate, rbac.ResourceTemplate.InOrg(arg.OrganizationID))
18231823
if err != nil {
1824-
return database.TemplateVersion{}, err
1824+
return err
18251825
}
18261826
} else {
18271827
// Must do an authorized fetch to prevent leaking template ids this way.
18281828
tpl, err := q.GetTemplateByID(ctx, arg.TemplateID.UUID)
18291829
if err != nil {
1830-
return database.TemplateVersion{}, err
1830+
return err
18311831
}
18321832
// Check the create permission on the template.
18331833
err = q.authorizeContext(ctx, rbac.ActionCreate, tpl)
18341834
if err != nil {
1835-
return database.TemplateVersion{}, err
1835+
return err
18361836
}
18371837
}
18381838

@@ -1931,10 +1931,10 @@ func (q *querier) InsertWorkspaceApp(ctx context.Context, arg database.InsertWor
19311931
return q.db.InsertWorkspaceApp(ctx, arg)
19321932
}
19331933

1934-
func (q *querier) InsertWorkspaceBuild(ctx context.Context, arg database.InsertWorkspaceBuildParams) (database.WorkspaceBuild, error) {
1934+
func (q *querier) InsertWorkspaceBuild(ctx context.Context, arg database.InsertWorkspaceBuildParams) error {
19351935
w, err := q.db.GetWorkspaceByID(ctx, arg.WorkspaceID)
19361936
if err != nil {
1937-
return database.WorkspaceBuild{}, err
1937+
return err
19381938
}
19391939

19401940
var action rbac.Action = rbac.ActionUpdate
@@ -1943,7 +1943,7 @@ func (q *querier) InsertWorkspaceBuild(ctx context.Context, arg database.InsertW
19431943
}
19441944

19451945
if err = q.authorizeContext(ctx, action, w.WorkspaceBuildRBAC(arg.Transition)); err != nil {
1946-
return database.WorkspaceBuild{}, err
1946+
return err
19471947
}
19481948

19491949
return q.db.InsertWorkspaceBuild(ctx, arg)
@@ -2172,24 +2172,24 @@ func (q *querier) UpdateTemplateScheduleByID(ctx context.Context, arg database.U
21722172
return update(q.log, q.auth, fetch, q.db.UpdateTemplateScheduleByID)(ctx, arg)
21732173
}
21742174

2175-
func (q *querier) UpdateTemplateVersionByID(ctx context.Context, arg database.UpdateTemplateVersionByIDParams) (database.TemplateVersion, error) {
2175+
func (q *querier) UpdateTemplateVersionByID(ctx context.Context, arg database.UpdateTemplateVersionByIDParams) error {
21762176
// An actor is allowed to update the template version if they are authorized to update the template.
21772177
tv, err := q.db.GetTemplateVersionByID(ctx, arg.ID)
21782178
if err != nil {
2179-
return database.TemplateVersion{}, err
2179+
return err
21802180
}
21812181
var obj rbac.Objecter
21822182
if !tv.TemplateID.Valid {
21832183
obj = rbac.ResourceTemplate.InOrg(tv.OrganizationID)
21842184
} else {
21852185
tpl, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID)
21862186
if err != nil {
2187-
return database.TemplateVersion{}, err
2187+
return err
21882188
}
21892189
obj = tpl
21902190
}
21912191
if err := q.authorizeContext(ctx, rbac.ActionUpdate, obj); err != nil {
2192-
return database.TemplateVersion{}, err
2192+
return err
21932193
}
21942194
return q.db.UpdateTemplateVersionByID(ctx, arg)
21952195
}
@@ -2445,28 +2445,28 @@ func (q *querier) UpdateWorkspaceAutostart(ctx context.Context, arg database.Upd
24452445
return update(q.log, q.auth, fetch, q.db.UpdateWorkspaceAutostart)(ctx, arg)
24462446
}
24472447

2448-
func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.UpdateWorkspaceBuildByIDParams) (database.WorkspaceBuild, error) {
2448+
func (q *querier) UpdateWorkspaceBuildByID(ctx context.Context, arg database.UpdateWorkspaceBuildByIDParams) error {
24492449
build, err := q.db.GetWorkspaceBuildByID(ctx, arg.ID)
24502450
if err != nil {
2451-
return database.WorkspaceBuild{}, err
2451+
return err
24522452
}
24532453

24542454
workspace, err := q.db.GetWorkspaceByID(ctx, build.WorkspaceID)
24552455
if err != nil {
2456-
return database.WorkspaceBuild{}, err
2456+
return err
24572457
}
24582458
err = q.authorizeContext(ctx, rbac.ActionUpdate, workspace.RBACObject())
24592459
if err != nil {
2460-
return database.WorkspaceBuild{}, err
2460+
return err
24612461
}
24622462

24632463
return q.db.UpdateWorkspaceBuildByID(ctx, arg)
24642464
}
24652465

24662466
// UpdateWorkspaceBuildCostByID is used by the provisioning system to update the cost of a workspace build.
2467-
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) (database.WorkspaceBuild, error) {
2467+
func (q *querier) UpdateWorkspaceBuildCostByID(ctx context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
24682468
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceSystem); err != nil {
2469-
return database.WorkspaceBuild{}, err
2469+
return err
24702470
}
24712471
return q.db.UpdateWorkspaceBuildCostByID(ctx, arg)
24722472
}

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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)

coderd/database/dbfake/dbfake.go

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ func (q *FakeQuerier) templateWithUserNoLock(tpl database.TemplateTable) databas
473473
d, _ := json.Marshal(tpl)
474474
_ = json.Unmarshal(d, &withUser)
475475
withUser.CreatedByUsername = user.Username
476-
withUser.CreatedByAvatarURL = user.AvatarURL.String
476+
withUser.CreatedByAvatarURL = user.AvatarURL
477477
return withUser
478478
}
479479

@@ -3489,13 +3489,13 @@ func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTempl
34893489
return nil
34903490
}
34913491

3492-
func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.InsertTemplateVersionParams) (database.TemplateVersion, error) {
3492+
func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.InsertTemplateVersionParams) error {
34933493
if err := validateDatabaseType(arg); err != nil {
3494-
return database.TemplateVersion{}, err
3494+
return err
34953495
}
34963496

34973497
if len(arg.Message) > 1048576 {
3498-
return database.TemplateVersion{}, xerrors.New("message too long")
3498+
return xerrors.New("message too long")
34993499
}
35003500

35013501
q.mutex.Lock()
@@ -3515,7 +3515,7 @@ func (q *FakeQuerier) InsertTemplateVersion(_ context.Context, arg database.Inse
35153515
CreatedBy: arg.CreatedBy,
35163516
}
35173517
q.templateVersions = append(q.templateVersions, version)
3518-
return version, nil
3518+
return nil
35193519
}
35203520

35213521
func (q *FakeQuerier) InsertTemplateVersionParameter(_ context.Context, arg database.InsertTemplateVersionParameterParams) (database.TemplateVersionParameter, error) {
@@ -3846,9 +3846,9 @@ func (q *FakeQuerier) InsertWorkspaceApp(_ context.Context, arg database.InsertW
38463846
return workspaceApp, nil
38473847
}
38483848

3849-
func (q *FakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.InsertWorkspaceBuildParams) (database.WorkspaceBuild, error) {
3849+
func (q *FakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.InsertWorkspaceBuildParams) error {
38503850
if err := validateDatabaseType(arg); err != nil {
3851-
return database.WorkspaceBuild{}, err
3851+
return err
38523852
}
38533853

38543854
q.mutex.Lock()
@@ -3869,7 +3869,7 @@ func (q *FakeQuerier) InsertWorkspaceBuild(_ context.Context, arg database.Inser
38693869
Reason: arg.Reason,
38703870
}
38713871
q.workspaceBuilds = append(q.workspaceBuilds, workspaceBuild)
3872-
return workspaceBuild, nil
3872+
return nil
38733873
}
38743874

38753875
func (q *FakeQuerier) InsertWorkspaceBuildParameters(_ context.Context, arg database.InsertWorkspaceBuildParametersParams) error {
@@ -4308,9 +4308,9 @@ func (q *FakeQuerier) UpdateTemplateScheduleByID(_ context.Context, arg database
43084308
return sql.ErrNoRows
43094309
}
43104310

4311-
func (q *FakeQuerier) UpdateTemplateVersionByID(_ context.Context, arg database.UpdateTemplateVersionByIDParams) (database.TemplateVersion, error) {
4311+
func (q *FakeQuerier) UpdateTemplateVersionByID(_ context.Context, arg database.UpdateTemplateVersionByIDParams) error {
43124312
if err := validateDatabaseType(arg); err != nil {
4313-
return database.TemplateVersion{}, err
4313+
return err
43144314
}
43154315

43164316
q.mutex.Lock()
@@ -4325,9 +4325,9 @@ func (q *FakeQuerier) UpdateTemplateVersionByID(_ context.Context, arg database.
43254325
templateVersion.Name = arg.Name
43264326
templateVersion.Message = arg.Message
43274327
q.templateVersions[index] = templateVersion
4328-
return templateVersion, nil
4328+
return nil
43294329
}
4330-
return database.TemplateVersion{}, sql.ErrNoRows
4330+
return sql.ErrNoRows
43314331
}
43324332

43334333
func (q *FakeQuerier) UpdateTemplateVersionDescriptionByJobID(_ context.Context, arg database.UpdateTemplateVersionDescriptionByJobIDParams) error {
@@ -4771,9 +4771,9 @@ func (q *FakeQuerier) UpdateWorkspaceAutostart(_ context.Context, arg database.U
47714771
return sql.ErrNoRows
47724772
}
47734773

4774-
func (q *FakeQuerier) UpdateWorkspaceBuildByID(_ context.Context, arg database.UpdateWorkspaceBuildByIDParams) (database.WorkspaceBuild, error) {
4774+
func (q *FakeQuerier) UpdateWorkspaceBuildByID(_ context.Context, arg database.UpdateWorkspaceBuildByIDParams) error {
47754775
if err := validateDatabaseType(arg); err != nil {
4776-
return database.WorkspaceBuild{}, err
4776+
return err
47774777
}
47784778

47794779
q.mutex.Lock()
@@ -4788,14 +4788,14 @@ func (q *FakeQuerier) UpdateWorkspaceBuildByID(_ context.Context, arg database.U
47884788
workspaceBuild.Deadline = arg.Deadline
47894789
workspaceBuild.MaxDeadline = arg.MaxDeadline
47904790
q.workspaceBuilds[index] = workspaceBuild
4791-
return workspaceBuild, nil
4791+
return nil
47924792
}
4793-
return database.WorkspaceBuild{}, sql.ErrNoRows
4793+
return sql.ErrNoRows
47944794
}
47954795

4796-
func (q *FakeQuerier) UpdateWorkspaceBuildCostByID(_ context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) (database.WorkspaceBuild, error) {
4796+
func (q *FakeQuerier) UpdateWorkspaceBuildCostByID(_ context.Context, arg database.UpdateWorkspaceBuildCostByIDParams) error {
47974797
if err := validateDatabaseType(arg); err != nil {
4798-
return database.WorkspaceBuild{}, err
4798+
return err
47994799
}
48004800

48014801
q.mutex.Lock()
@@ -4807,9 +4807,9 @@ func (q *FakeQuerier) UpdateWorkspaceBuildCostByID(_ context.Context, arg databa
48074807
}
48084808
workspaceBuild.DailyCost = arg.DailyCost
48094809
q.workspaceBuilds[index] = workspaceBuild
4810-
return workspaceBuild, nil
4810+
return nil
48114811
}
4812-
return database.WorkspaceBuild{}, sql.ErrNoRows
4812+
return sql.ErrNoRows
48134813
}
48144814

48154815
func (q *FakeQuerier) UpdateWorkspaceDeletedByID(_ context.Context, arg database.UpdateWorkspaceDeletedByIDParams) error {

coderd/database/dbgen/dbgen.go

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -180,21 +180,34 @@ func Workspace(t testing.TB, db database.Store, orig database.Workspace) databas
180180
}
181181

182182
func WorkspaceBuild(t testing.TB, db database.Store, orig database.WorkspaceBuild) database.WorkspaceBuild {
183-
build, err := db.InsertWorkspaceBuild(genCtx, database.InsertWorkspaceBuildParams{
184-
ID: takeFirst(orig.ID, uuid.New()),
185-
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
186-
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
187-
WorkspaceID: takeFirst(orig.WorkspaceID, uuid.New()),
188-
TemplateVersionID: takeFirst(orig.TemplateVersionID, uuid.New()),
189-
BuildNumber: takeFirst(orig.BuildNumber, 1),
190-
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
191-
InitiatorID: takeFirst(orig.InitiatorID, uuid.New()),
192-
JobID: takeFirst(orig.JobID, uuid.New()),
193-
ProvisionerState: takeFirstSlice(orig.ProvisionerState, []byte{}),
194-
Deadline: takeFirst(orig.Deadline, database.Now().Add(time.Hour)),
195-
Reason: takeFirst(orig.Reason, database.BuildReasonInitiator),
196-
})
183+
id := takeFirst(orig.ID, uuid.New())
184+
var build database.WorkspaceBuild
185+
err := db.InTx(func(store database.Store) error {
186+
err := db.InsertWorkspaceBuild(genCtx, database.InsertWorkspaceBuildParams{
187+
ID: takeFirst(orig.ID, uuid.New()),
188+
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
189+
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
190+
WorkspaceID: takeFirst(orig.WorkspaceID, uuid.New()),
191+
TemplateVersionID: takeFirst(orig.TemplateVersionID, uuid.New()),
192+
BuildNumber: takeFirst(orig.BuildNumber, 1),
193+
Transition: takeFirst(orig.Transition, database.WorkspaceTransitionStart),
194+
InitiatorID: takeFirst(orig.InitiatorID, uuid.New()),
195+
JobID: takeFirst(orig.JobID, uuid.New()),
196+
ProvisionerState: takeFirstSlice(orig.ProvisionerState, []byte{}),
197+
Deadline: takeFirst(orig.Deadline, database.Now().Add(time.Hour)),
198+
Reason: takeFirst(orig.Reason, database.BuildReasonInitiator),
199+
})
200+
if err != nil {
201+
return err
202+
}
203+
build, err = db.GetWorkspaceBuildByID(genCtx, id)
204+
if err != nil {
205+
return err
206+
}
207+
return nil
208+
}, nil)
197209
require.NoError(t, err, "insert workspace build")
210+
198211
return build
199212
}
200213

@@ -474,19 +487,32 @@ func GitAuthLink(t testing.TB, db database.Store, orig database.GitAuthLink) dat
474487
}
475488

476489
func TemplateVersion(t testing.TB, db database.Store, orig database.TemplateVersion) database.TemplateVersion {
477-
version, err := db.InsertTemplateVersion(genCtx, database.InsertTemplateVersionParams{
478-
ID: takeFirst(orig.ID, uuid.New()),
479-
TemplateID: orig.TemplateID,
480-
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
481-
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
482-
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
483-
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
484-
Message: orig.Message,
485-
Readme: takeFirst(orig.Readme, namesgenerator.GetRandomName(1)),
486-
JobID: takeFirst(orig.JobID, uuid.New()),
487-
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
488-
})
490+
var version database.TemplateVersion
491+
err := db.InTx(func(db database.Store) error {
492+
err := db.InsertTemplateVersion(genCtx, database.InsertTemplateVersionParams{
493+
ID: takeFirst(orig.ID, uuid.New()),
494+
TemplateID: orig.TemplateID,
495+
OrganizationID: takeFirst(orig.OrganizationID, uuid.New()),
496+
CreatedAt: takeFirst(orig.CreatedAt, database.Now()),
497+
UpdatedAt: takeFirst(orig.UpdatedAt, database.Now()),
498+
Name: takeFirst(orig.Name, namesgenerator.GetRandomName(1)),
499+
Message: orig.Message,
500+
Readme: takeFirst(orig.Readme, namesgenerator.GetRandomName(1)),
501+
JobID: takeFirst(orig.JobID, uuid.New()),
502+
CreatedBy: takeFirst(orig.CreatedBy, uuid.New()),
503+
})
504+
if err != nil {
505+
return err
506+
}
507+
508+
version, err = db.GetTemplateVersionByID(genCtx, version.ID)
509+
if err != nil {
510+
return err
511+
}
512+
return nil
513+
}, nil)
489514
require.NoError(t, err, "insert template version")
515+
490516
return version
491517
}
492518

0 commit comments

Comments
 (0)