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

Method patchTemplateVersion

coderd/templateversions.go:119–222  ·  view source on GitHub ↗

@Summary Patch template version by ID @ID patch-template-version-by-id @Security CoderSessionToken @Accept json @Produce json @Tags Templates @Param templateversion path string true "Template version ID" format(uuid) @Param request body codersdk.PatchTemplateVersionRequest true "Patch template versi

(rw http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

117// @Success 200 {object} codersdk.TemplateVersion
118// @Router /api/v2/templateversions/{templateversion} [patch]
119func (api *API) patchTemplateVersion(rw http.ResponseWriter, r *http.Request) {
120 ctx := r.Context()
121 templateVersion := httpmw.TemplateVersionParam(r)
122
123 var params codersdk.PatchTemplateVersionRequest
124 if !httpapi.Read(ctx, rw, r, &params) {
125 return
126 }
127
128 updateParams := database.UpdateTemplateVersionByIDParams{
129 ID: templateVersion.ID,
130 TemplateID: templateVersion.TemplateID,
131 UpdatedAt: dbtime.Now(),
132 Name: templateVersion.Name,
133 Message: templateVersion.Message,
134 }
135
136 if params.Name != "" {
137 updateParams.Name = params.Name
138 }
139
140 if params.Message != nil {
141 updateParams.Message = *params.Message
142 }
143
144 errTemplateVersionNameConflict := xerrors.New("template version name must be unique for a template")
145
146 var updatedTemplateVersion database.TemplateVersion
147 err := api.Database.InTx(func(tx database.Store) error {
148 if templateVersion.TemplateID.Valid && templateVersion.Name != updateParams.Name {
149 // User wants to rename the template version
150
151 _, err := tx.GetTemplateVersionByTemplateIDAndName(ctx, database.GetTemplateVersionByTemplateIDAndNameParams{
152 TemplateID: templateVersion.TemplateID,
153 Name: updateParams.Name,
154 })
155 if err != nil && !xerrors.Is(err, sql.ErrNoRows) {
156 return xerrors.Errorf("error on retrieving conflicting template version: %v", err)
157 }
158 if err == nil {
159 return errTemplateVersionNameConflict
160 }
161 }
162
163 // It is not allowed to "patch" the template ID, and reassign it.
164 var err error
165 err = tx.UpdateTemplateVersionByID(ctx, updateParams)
166 if err != nil {
167 return xerrors.Errorf("error on patching template version: %v", err)
168 }
169
170 updatedTemplateVersion, err = tx.GetTemplateVersionByID(ctx, updateParams.ID)
171 if err != nil {
172 return xerrors.Errorf("error on fetching patched template version: %v", err)
173 }
174
175 return nil
176 }, nil)

Callers 1

publishVersionFunction · 0.80

Calls 15

TemplateVersionParamFunction · 0.92
ReadFunction · 0.92
NowFunction · 0.92
WriteFunction · 0.92
RefFunction · 0.92
MatchedProvisionersFunction · 0.92
convertTemplateVersionFunction · 0.85
convertProvisionerJobFunction · 0.85
ContextMethod · 0.65
NewMethod · 0.65
InTxMethod · 0.65

Tested by

no test coverage detected