(ctx context.Context, alog database.GetAuditLogsOffsetRow, additionalFields audit.AdditionalFields)
| 519 | } |
| 520 | |
| 521 | func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAuditLogsOffsetRow, additionalFields audit.AdditionalFields) string { |
| 522 | switch alog.AuditLog.ResourceType { |
| 523 | case database.ResourceTypeTemplate: |
| 524 | return fmt.Sprintf("/templates/%s", |
| 525 | alog.AuditLog.ResourceTarget) |
| 526 | |
| 527 | case database.ResourceTypeUser: |
| 528 | return fmt.Sprintf("/users?filter=%s", |
| 529 | alog.AuditLog.ResourceTarget) |
| 530 | |
| 531 | case database.ResourceTypeWorkspace: |
| 532 | workspace, getWorkspaceErr := api.Database.GetWorkspaceByID(ctx, alog.AuditLog.ResourceID) |
| 533 | if getWorkspaceErr != nil { |
| 534 | return "" |
| 535 | } |
| 536 | workspaceOwner, getWorkspaceOwnerErr := api.Database.GetUserByID(ctx, workspace.OwnerID) |
| 537 | if getWorkspaceOwnerErr != nil { |
| 538 | return "" |
| 539 | } |
| 540 | return fmt.Sprintf("/@%s/%s", |
| 541 | workspaceOwner.Username, alog.AuditLog.ResourceTarget) |
| 542 | |
| 543 | case database.ResourceTypeWorkspaceBuild: |
| 544 | if len(additionalFields.WorkspaceName) == 0 || len(additionalFields.BuildNumber) == 0 { |
| 545 | return "" |
| 546 | } |
| 547 | workspaceBuild, getWorkspaceBuildErr := api.Database.GetWorkspaceBuildByID(ctx, alog.AuditLog.ResourceID) |
| 548 | if getWorkspaceBuildErr != nil { |
| 549 | return "" |
| 550 | } |
| 551 | workspace, getWorkspaceErr := api.Database.GetWorkspaceByID(ctx, workspaceBuild.WorkspaceID) |
| 552 | if getWorkspaceErr != nil { |
| 553 | return "" |
| 554 | } |
| 555 | workspaceOwner, getWorkspaceOwnerErr := api.Database.GetUserByID(ctx, workspace.OwnerID) |
| 556 | if getWorkspaceOwnerErr != nil { |
| 557 | return "" |
| 558 | } |
| 559 | return fmt.Sprintf("/@%s/%s/builds/%s", |
| 560 | workspaceOwner.Username, additionalFields.WorkspaceName, additionalFields.BuildNumber) |
| 561 | |
| 562 | case database.ResourceTypeWorkspaceAgent: |
| 563 | if additionalFields.WorkspaceOwner != "" && additionalFields.WorkspaceName != "" { |
| 564 | return fmt.Sprintf("/@%s/%s", additionalFields.WorkspaceOwner, additionalFields.WorkspaceName) |
| 565 | } |
| 566 | workspace, getWorkspaceErr := api.Database.GetWorkspaceByAgentID(ctx, alog.AuditLog.ResourceID) |
| 567 | if getWorkspaceErr != nil { |
| 568 | return "" |
| 569 | } |
| 570 | return fmt.Sprintf("/@%s/%s", workspace.OwnerName, workspace.Name) |
| 571 | |
| 572 | case database.ResourceTypeWorkspaceApp: |
| 573 | if additionalFields.WorkspaceOwner != "" && additionalFields.WorkspaceName != "" { |
| 574 | return fmt.Sprintf("/@%s/%s", additionalFields.WorkspaceOwner, additionalFields.WorkspaceName) |
| 575 | } |
| 576 | workspace, getWorkspaceErr := api.Database.GetWorkspaceByWorkspaceAppID(ctx, alog.AuditLog.ResourceID) |
| 577 | if getWorkspaceErr != nil { |
| 578 | return "" |
no test coverage detected