@@ -328,6 +328,12 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
328
328
return
329
329
}
330
330
331
+ builder := wsbuilder .New (workspace , database .WorkspaceTransition (createBuild .Transition )).
332
+ Initiator (apiKey .UserID ).
333
+ RichParameterValues (createBuild .RichParameterValues ).
334
+ LogLevel (string (createBuild .LogLevel )).
335
+ DeploymentValues (api .Options .DeploymentValues )
336
+
331
337
var (
332
338
previousWorkspaceBuild database.WorkspaceBuild
333
339
workspaceBuild * database.WorkspaceBuild
@@ -348,12 +354,6 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
348
354
return nil
349
355
}
350
356
351
- builder := wsbuilder .New (workspace , database .WorkspaceTransition (createBuild .Transition )).
352
- Initiator (apiKey .UserID ).
353
- RichParameterValues (createBuild .RichParameterValues ).
354
- LogLevel (string (createBuild .LogLevel )).
355
- DeploymentValues (api .Options .DeploymentValues )
356
-
357
357
if createBuild .TemplateVersionID != uuid .Nil {
358
358
builder = builder .VersionID (createBuild .TemplateVersionID )
359
359
}
@@ -385,17 +385,7 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
385
385
},
386
386
audit .WorkspaceBuildBaggageFromRequest (r ),
387
387
)
388
- if err != nil {
389
- return err
390
- }
391
-
392
- // If this workspace build has a different template version ID to the previous build
393
- // we can assume it has just been updated.
394
- if createBuild .TemplateVersionID != uuid .Nil && createBuild .TemplateVersionID != previousWorkspaceBuild .TemplateVersionID {
395
- api .notifyWorkspaceUpdated (ctx , tx , apiKey .UserID , workspace , createBuild .RichParameterValues )
396
- }
397
-
398
- return nil
388
+ return err
399
389
}, nil )
400
390
var buildErr wsbuilder.BuildError
401
391
if xerrors .As (err , & buildErr ) {
@@ -453,6 +443,12 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
453
443
return
454
444
}
455
445
446
+ // If this workspace build has a different template version ID to the previous build
447
+ // we can assume it has just been updated.
448
+ if createBuild .TemplateVersionID != uuid .Nil && createBuild .TemplateVersionID != previousWorkspaceBuild .TemplateVersionID {
449
+ api .notifyWorkspaceUpdated (ctx , apiKey .UserID , workspace , createBuild .RichParameterValues )
450
+ }
451
+
456
452
api .publishWorkspaceUpdate (ctx , workspace .OwnerID , wspubsub.WorkspaceEvent {
457
453
Kind : wspubsub .WorkspaceEventKindStateChange ,
458
454
WorkspaceID : workspace .ID ,
@@ -463,32 +459,31 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
463
459
464
460
func (api * API ) notifyWorkspaceUpdated (
465
461
ctx context.Context ,
466
- db database.Store ,
467
462
initiatorID uuid.UUID ,
468
463
workspace database.Workspace ,
469
464
parameters []codersdk.WorkspaceBuildParameter ,
470
465
) {
471
466
log := api .Logger .With (slog .F ("workspace_id" , workspace .ID ))
472
467
473
- template , err := db .GetTemplateByID (ctx , workspace .TemplateID )
468
+ template , err := api . Database .GetTemplateByID (ctx , workspace .TemplateID )
474
469
if err != nil {
475
470
log .Warn (ctx , "failed to fetch template for workspace creation notification" , slog .F ("template_id" , workspace .TemplateID ), slog .Error (err ))
476
471
return
477
472
}
478
473
479
- version , err := db .GetTemplateVersionByID (ctx , template .ActiveVersionID )
474
+ version , err := api . Database .GetTemplateVersionByID (ctx , template .ActiveVersionID )
480
475
if err != nil {
481
476
log .Warn (ctx , "failed to fetch template version for workspace creation notification" , slog .F ("template_id" , workspace .TemplateID ), slog .Error (err ))
482
477
return
483
478
}
484
479
485
- initiator , err := db .GetUserByID (ctx , initiatorID )
480
+ initiator , err := api . Database .GetUserByID (ctx , initiatorID )
486
481
if err != nil {
487
482
log .Warn (ctx , "failed to fetch user for workspace update notification" , slog .F ("initiator_id" , initiatorID ), slog .Error (err ))
488
483
return
489
484
}
490
485
491
- owner , err := db .GetUserByID (ctx , workspace .OwnerID )
486
+ owner , err := api . Database .GetUserByID (ctx , workspace .OwnerID )
492
487
if err != nil {
493
488
log .Warn (ctx , "failed to fetch user for workspace update notification" , slog .F ("owner_id" , workspace .OwnerID ), slog .Error (err ))
494
489
return
0 commit comments