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

Method setArchiveTemplateVersion

coderd/templateversions.go:1275–1348  ·  view source on GitHub ↗

nolint:revive

(archive bool)

Source from the content-addressed store, hash-verified

1273
1274//nolint:revive
1275func (api *API) setArchiveTemplateVersion(archive bool) func(rw http.ResponseWriter, r *http.Request) {
1276 return func(rw http.ResponseWriter, r *http.Request) {
1277 var (
1278 ctx = r.Context()
1279 templateVersion = httpmw.TemplateVersionParam(r)
1280 auditor = *api.Auditor.Load()
1281 aReq, commitAudit = audit.InitRequest[database.TemplateVersion](rw, &audit.RequestParams{
1282 Audit: auditor,
1283 Log: api.Logger,
1284 Request: r,
1285 Action: database.AuditActionWrite,
1286 OrganizationID: templateVersion.OrganizationID,
1287 })
1288 )
1289 defer commitAudit()
1290 aReq.Old = templateVersion
1291
1292 verb := "archived"
1293 if !archive {
1294 verb = "unarchived"
1295 }
1296 if templateVersion.Archived == archive {
1297 httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
1298 Message: fmt.Sprintf("Template version already %s", verb),
1299 })
1300 return
1301 }
1302
1303 if !templateVersion.TemplateID.Valid {
1304 // Maybe we should allow this?
1305 httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
1306 Message: "Cannot archive template versions not associate with a template.",
1307 })
1308 return
1309 }
1310
1311 var err error
1312 if archive {
1313 archived, archiveError := api.Database.ArchiveUnusedTemplateVersions(ctx, database.ArchiveUnusedTemplateVersionsParams{
1314 UpdatedAt: dbtime.Now(),
1315 TemplateID: templateVersion.TemplateID.UUID,
1316 TemplateVersionID: templateVersion.ID,
1317 JobStatus: database.NullProvisionerJobStatus{},
1318 })
1319
1320 if archiveError != nil {
1321 err = archiveError
1322 } else if len(archived) == 0 {
1323 err = xerrors.New("Unable to archive specified version, the version is likely in use by a workspace or currently set to the active version")
1324 }
1325 } else {
1326 err = api.Database.UnarchiveTemplateVersion(ctx, database.UnarchiveTemplateVersionParams{
1327 UpdatedAt: dbtime.Now(),
1328 TemplateVersionID: templateVersion.ID,
1329 })
1330 }
1331
1332 if httpapi.Is404Error(err) {

Callers 2

Calls 12

TemplateVersionParamFunction · 0.92
InitRequestFunction · 0.92
WriteFunction · 0.92
NowFunction · 0.92
Is404ErrorFunction · 0.92
ContextMethod · 0.65
NewMethod · 0.65
LoadMethod · 0.45
ErrorMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected