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

Function convertWorkspaces

coderd/workspaces.go:2735–2789  ·  view source on GitHub ↗
(
	ctx context.Context,
	logger slog.Logger,
	requesterID uuid.UUID,
	workspaces []database.Workspace,
	data workspaceData,
)

Source from the content-addressed store, hash-verified

2733}
2734
2735func 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
2791func convertWorkspace(
2792 ctx context.Context,

Callers 2

workspacesMethod · 0.85
convertTasksMethod · 0.85

Calls 2

convertWorkspaceFunction · 0.85
ErrorfMethod · 0.45

Tested by

no test coverage detected