( ctx context.Context, initiatorID uuid.UUID, receiverID uuid.UUID, workspace database.Workspace, parameters []codersdk.WorkspaceBuildParameter, )
| 585 | } |
| 586 | |
| 587 | func (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}, |
no test coverage detected