@@ -385,7 +385,17 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
385
385
},
386
386
audit .WorkspaceBuildBaggageFromRequest (r ),
387
387
)
388
- return err
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
389
399
}, nil )
390
400
var buildErr wsbuilder.BuildError
391
401
if xerrors .As (err , & buildErr ) {
@@ -443,12 +453,6 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
443
453
return
444
454
}
445
455
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
-
452
456
api .publishWorkspaceUpdate (ctx , workspace .OwnerID , wspubsub.WorkspaceEvent {
453
457
Kind : wspubsub .WorkspaceEventKindStateChange ,
454
458
WorkspaceID : workspace .ID ,
@@ -459,31 +463,32 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
459
463
460
464
func (api * API ) notifyWorkspaceUpdated (
461
465
ctx context.Context ,
466
+ db database.Store ,
462
467
initiatorID uuid.UUID ,
463
468
workspace database.Workspace ,
464
469
parameters []codersdk.WorkspaceBuildParameter ,
465
470
) {
466
471
log := api .Logger .With (slog .F ("workspace_id" , workspace .ID ))
467
472
468
- template , err := api . Database .GetTemplateByID (ctx , workspace .TemplateID )
473
+ template , err := db .GetTemplateByID (ctx , workspace .TemplateID )
469
474
if err != nil {
470
475
log .Warn (ctx , "failed to fetch template for workspace creation notification" , slog .F ("template_id" , workspace .TemplateID ), slog .Error (err ))
471
476
return
472
477
}
473
478
474
- version , err := api . Database .GetTemplateVersionByID (ctx , template .ActiveVersionID )
479
+ version , err := db .GetTemplateVersionByID (ctx , template .ActiveVersionID )
475
480
if err != nil {
476
481
log .Warn (ctx , "failed to fetch template version for workspace creation notification" , slog .F ("template_id" , workspace .TemplateID ), slog .Error (err ))
477
482
return
478
483
}
479
484
480
- initiator , err := api . Database .GetUserByID (ctx , initiatorID )
485
+ initiator , err := db .GetUserByID (ctx , initiatorID )
481
486
if err != nil {
482
487
log .Warn (ctx , "failed to fetch user for workspace update notification" , slog .F ("initiator_id" , initiatorID ), slog .Error (err ))
483
488
return
484
489
}
485
490
486
- owner , err := api . Database .GetUserByID (ctx , workspace .OwnerID )
491
+ owner , err := db .GetUserByID (ctx , workspace .OwnerID )
487
492
if err != nil {
488
493
log .Warn (ctx , "failed to fetch user for workspace update notification" , slog .F ("owner_id" , workspace .OwnerID ), slog .Error (err ))
489
494
return
0 commit comments