mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
package coderd
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/coder/coder/v2/coderd/httpapi"
|
|
"github.com/coder/coder/v2/coderd/httpmw"
|
|
"github.com/coder/coder/v2/codersdk"
|
|
)
|
|
|
|
// @Summary Get template version presets
|
|
// @ID get-template-version-presets
|
|
// @Security CoderSessionToken
|
|
// @Produce json
|
|
// @Tags Templates
|
|
// @Param templateversion path string true "Template version ID" format(uuid)
|
|
// @Success 200 {array} codersdk.Preset
|
|
// @Router /templateversions/{templateversion}/presets [get]
|
|
func (api *API) templateVersionPresets(rw http.ResponseWriter, r *http.Request) {
|
|
ctx := r.Context()
|
|
templateVersion := httpmw.TemplateVersionParam(r)
|
|
|
|
presets, err := api.Database.GetPresetsByTemplateVersionID(ctx, templateVersion.ID)
|
|
if err != nil {
|
|
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
|
|
Message: "Internal error fetching template version presets.",
|
|
Detail: err.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
presetParams, err := api.Database.GetPresetParametersByTemplateVersionID(ctx, templateVersion.ID)
|
|
if err != nil {
|
|
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
|
|
Message: "Internal error fetching template version presets.",
|
|
Detail: err.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
var res []codersdk.Preset
|
|
for _, preset := range presets {
|
|
sdkPreset := codersdk.Preset{
|
|
ID: preset.ID,
|
|
Name: preset.Name,
|
|
Default: preset.IsDefault,
|
|
}
|
|
for _, presetParam := range presetParams {
|
|
if presetParam.TemplateVersionPresetID != preset.ID {
|
|
continue
|
|
}
|
|
|
|
sdkPreset.Parameters = append(sdkPreset.Parameters, codersdk.PresetParameter{
|
|
Name: presetParam.Name,
|
|
Value: presetParam.Value,
|
|
})
|
|
}
|
|
res = append(res, sdkPreset)
|
|
}
|
|
|
|
httpapi.Write(ctx, rw, http.StatusOK, res)
|
|
}
|