( ctx context.Context, logger slog.Logger, requesterID uuid.UUID, workspaces []database.Workspace, data workspaceData, )
| 2733 | } |
| 2734 | |
| 2735 | func convertWorkspaces( |
| 2736 | ctx context.Context, |
| 2737 | logger slog.Logger, |
| 2738 | requesterID uuid.UUID, |
| 2739 | workspaces []database.Workspace, |
| 2740 | data workspaceData, |
| 2741 | ) ([]codersdk.Workspace, error) { |
| 2742 | buildByWorkspaceID := map[uuid.UUID]codersdk.WorkspaceBuild{} |
| 2743 | for _, workspaceBuild := range data.builds { |
| 2744 | buildByWorkspaceID[workspaceBuild.WorkspaceID] = workspaceBuild |
| 2745 | } |
| 2746 | templateByID := map[uuid.UUID]database.Template{} |
| 2747 | for _, template := range data.templates { |
| 2748 | templateByID[template.ID] = template |
| 2749 | } |
| 2750 | appStatusesByWorkspaceID := map[uuid.UUID]codersdk.WorkspaceAppStatus{} |
| 2751 | for _, appStatus := range data.appStatuses { |
| 2752 | appStatusesByWorkspaceID[appStatus.WorkspaceID] = appStatus |
| 2753 | } |
| 2754 | |
| 2755 | apiWorkspaces := make([]codersdk.Workspace, 0, len(workspaces)) |
| 2756 | for _, workspace := range workspaces { |
| 2757 | // If any data is missing from the workspace, just skip returning |
| 2758 | // this workspace. This is not ideal, but the user cannot read |
| 2759 | // all the workspace's data, so do not show them. |
| 2760 | // Ideally we could just return some sort of "unknown" for the missing |
| 2761 | // fields? |
| 2762 | build, exists := buildByWorkspaceID[workspace.ID] |
| 2763 | if !exists { |
| 2764 | continue |
| 2765 | } |
| 2766 | template, exists := templateByID[workspace.TemplateID] |
| 2767 | if !exists { |
| 2768 | continue |
| 2769 | } |
| 2770 | appStatus := appStatusesByWorkspaceID[workspace.ID] |
| 2771 | |
| 2772 | w, err := convertWorkspace( |
| 2773 | ctx, |
| 2774 | logger, |
| 2775 | requesterID, |
| 2776 | workspace, |
| 2777 | build, |
| 2778 | template, |
| 2779 | data.allowRenames, |
| 2780 | appStatus, |
| 2781 | ) |
| 2782 | if err != nil { |
| 2783 | return nil, xerrors.Errorf("convert workspace: %w", err) |
| 2784 | } |
| 2785 | |
| 2786 | apiWorkspaces = append(apiWorkspaces, w) |
| 2787 | } |
| 2788 | return apiWorkspaces, nil |
| 2789 | } |
| 2790 | |
| 2791 | func convertWorkspace( |
| 2792 | ctx context.Context, |
no test coverage detected