mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
feat(coderd): add support for presets to the coder API
This commit is contained in:
77
coderd/presets.go
Normal file
77
coderd/presets.go
Normal file
@ -0,0 +1,77 @@
|
||||
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
|
||||
}
|
||||
|
||||
var res []codersdk.Preset
|
||||
for _, preset := range presets {
|
||||
res = append(res, codersdk.Preset{
|
||||
ID: preset.ID,
|
||||
Name: preset.Name,
|
||||
})
|
||||
}
|
||||
|
||||
httpapi.Write(ctx, rw, http.StatusOK, res)
|
||||
}
|
||||
|
||||
// @Summary Get template version preset parameters
|
||||
// @ID get-template-version-preset-parameters
|
||||
// @Security CoderSessionToken
|
||||
// @Produce json
|
||||
// @Tags Templates
|
||||
// @Param templateversion path string true "Template version ID" format(uuid)
|
||||
// @Success 200 {array} codersdk.PresetParameter
|
||||
// @Router /templateversions/{templateversion}/presets/parameters [get]
|
||||
func (api *API) templateVersionPresetParameters(rw http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
templateVersion := httpmw.TemplateVersionParam(r)
|
||||
|
||||
// TODO (sasswart): Test case: what if a user tries to read presets or preset parameters from a different org?
|
||||
// TODO (sasswart): Do a prelim auth check here.
|
||||
|
||||
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.PresetParameter
|
||||
for _, presetParam := range presetParams {
|
||||
res = append(res, codersdk.PresetParameter{
|
||||
PresetID: presetParam.TemplateVersionPresetID,
|
||||
Name: presetParam.Name,
|
||||
Value: presetParam.Value,
|
||||
})
|
||||
}
|
||||
|
||||
httpapi.Write(ctx, rw, http.StatusOK, res)
|
||||
}
|
Reference in New Issue
Block a user