mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
This pull request fixes a bug in presets and adds tests to ensure it doesn't happen again. Due to an oversight in refactoring, we returned extra and incorrect parameters from other presets in the same template version when calling `/templateversions/{templateversion}/presets`.
62 lines
1.7 KiB
Go
62 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,
|
|
}
|
|
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)
|
|
}
|