Builder encapsulates the business logic of inserting a new workspace build into the database. Builder follows the so-called "Builder" pattern where options that customize the kind of build you get return a new instance of the Builder with the option applied. Example: b = wsbuilder.New(workspace,
| 50 | // b = wsbuilder.New(workspace, transition).VersionID(vID).Initiator(me) |
| 51 | // build, job, err := b.Build(...) |
| 52 | type Builder struct { |
| 53 | // settings that control the kind of build you get |
| 54 | workspace database.Workspace |
| 55 | trans database.WorkspaceTransition |
| 56 | version versionTarget |
| 57 | state stateTarget |
| 58 | logLevel string |
| 59 | deploymentValues *codersdk.DeploymentValues |
| 60 | experiments codersdk.Experiments |
| 61 | usageChecker UsageChecker |
| 62 | |
| 63 | richParameterValues []codersdk.WorkspaceBuildParameter |
| 64 | initiator uuid.UUID |
| 65 | reason database.BuildReason |
| 66 | templateVersionPresetID uuid.UUID |
| 67 | |
| 68 | // used during build, makes function arguments less verbose |
| 69 | ctx context.Context |
| 70 | store database.Store |
| 71 | fileCache *files.CacheCloser |
| 72 | |
| 73 | // cache of objects, so we only fetch once |
| 74 | template *database.Template |
| 75 | templateVersion *database.TemplateVersion |
| 76 | templateVersionJob *database.ProvisionerJob |
| 77 | terraformValues *database.TemplateVersionTerraformValue |
| 78 | templateVersionParameters *[]previewtypes.Parameter |
| 79 | templateVersionVariables *[]database.TemplateVersionVariable |
| 80 | templateVersionWorkspaceTags *[]database.TemplateVersionWorkspaceTag |
| 81 | lastBuild *database.WorkspaceBuild |
| 82 | lastBuildErr *error |
| 83 | lastBuildParameters *[]database.WorkspaceBuildParameter |
| 84 | lastBuildJob *database.ProvisionerJob |
| 85 | parameterNames *[]string |
| 86 | parameterValues *[]string |
| 87 | templateVersionPresetParameterValues *[]database.TemplateVersionPresetParameter |
| 88 | parameterRender dynamicparameters.Renderer |
| 89 | workspaceTags *map[string]string |
| 90 | task *database.Task |
| 91 | hasTask *bool // A workspace without a task will have a nil `task` and false `hasTask`. |
| 92 | |
| 93 | prebuiltWorkspaceBuildStage sdkproto.PrebuiltWorkspaceBuildStage |
| 94 | verifyNoLegacyParametersOnce bool |
| 95 | |
| 96 | buildMetrics *Metrics |
| 97 | } |
| 98 | |
| 99 | type UsageChecker interface { |
| 100 | CheckBuildUsage(ctx context.Context, store database.Store, templateVersion *database.TemplateVersion, task *database.Task, transition database.WorkspaceTransition) (UsageCheckResponse, error) |
nothing calls this directly
no outgoing calls
no test coverage detected