mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
This pull request builds on the existing migrations and queries to add support for presets to the coder API.
58 lines
1.6 KiB
Go
58 lines
1.6 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,
|
|
}
|
|
for _, presetParam := range presetParams {
|
|
sdkPreset.Parameters = append(sdkPreset.Parameters, codersdk.PresetParameter{
|
|
Name: presetParam.Name,
|
|
Value: presetParam.Value,
|
|
})
|
|
}
|
|
res = append(res, sdkPreset)
|
|
}
|
|
|
|
httpapi.Write(ctx, rw, http.StatusOK, res)
|
|
}
|