MCPcopy Index your code
hub / github.com/coder/coder / notifyWorkspaceUpdated

Method notifyWorkspaceUpdated

coderd/workspacebuilds.go:587–654  ·  view source on GitHub ↗
(
	ctx context.Context,
	initiatorID uuid.UUID,
	receiverID uuid.UUID,
	workspace database.Workspace,
	parameters []codersdk.WorkspaceBuildParameter,
)

Source from the content-addressed store, hash-verified

585}
586
587func (api *API) notifyWorkspaceUpdated(
588 ctx context.Context,
589 initiatorID uuid.UUID,
590 receiverID uuid.UUID,
591 workspace database.Workspace,
592 parameters []codersdk.WorkspaceBuildParameter,
593) {
594 log := api.Logger.With(slog.F("workspace_id", workspace.ID))
595
596 template, err := api.Database.GetTemplateByID(ctx, workspace.TemplateID)
597 if err != nil {
598 log.Warn(ctx, "failed to fetch template for workspace creation notification", slog.F("template_id", workspace.TemplateID), slog.Error(err))
599 return
600 }
601
602 version, err := api.Database.GetTemplateVersionByID(ctx, template.ActiveVersionID)
603 if err != nil {
604 log.Warn(ctx, "failed to fetch template version for workspace creation notification", slog.F("template_id", workspace.TemplateID), slog.Error(err))
605 return
606 }
607
608 initiator, err := api.Database.GetUserByID(ctx, initiatorID)
609 if err != nil {
610 log.Warn(ctx, "failed to fetch user for workspace update notification", slog.F("initiator_id", initiatorID), slog.Error(err))
611 return
612 }
613
614 owner, err := api.Database.GetUserByID(ctx, workspace.OwnerID)
615 if err != nil {
616 log.Warn(ctx, "failed to fetch user for workspace update notification", slog.F("owner_id", workspace.OwnerID), slog.Error(err))
617 return
618 }
619
620 buildParameters := make([]map[string]any, len(parameters))
621 for idx, parameter := range parameters {
622 buildParameters[idx] = map[string]any{
623 "name": parameter.Name,
624 "value": parameter.Value,
625 }
626 }
627
628 if _, err := api.NotificationsEnqueuer.EnqueueWithData(
629 // nolint:gocritic // Need notifier actor to enqueue notifications
630 dbauthz.AsNotifier(ctx),
631 receiverID,
632 notifications.TemplateWorkspaceManuallyUpdated,
633 map[string]string{
634 "organization": template.OrganizationName,
635 "initiator": initiator.Name,
636 "workspace": workspace.Name,
637 "template": template.Name,
638 "version": version.Name,
639 "workspace_owner_username": owner.Username,
640 },
641 map[string]any{
642 "workspace": map[string]any{"id": workspace.ID, "name": workspace.Name},
643 "template": map[string]any{"id": template.ID, "name": template.Name},
644 "template_version": map[string]any{"id": version.ID, "name": version.Name},

Callers 1

Calls 6

AsNotifierFunction · 0.92
GetTemplateByIDMethod · 0.65
GetUserByIDMethod · 0.65
EnqueueWithDataMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected