44 lines
1006 B
Go
44 lines
1006 B
Go
package httpx
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
bootstrapservice "moku-backend/internal/bootstrap"
|
|
)
|
|
|
|
type saveThemePresetRequest struct {
|
|
PresetID string `json:"presetId"`
|
|
}
|
|
|
|
func (routes apiRoutes) handleSaveThemePreset(w http.ResponseWriter, r *http.Request) {
|
|
payload, ok := decodeBootstrapRequest[saveThemePresetRequest](w, r)
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
payload.PresetID = strings.TrimSpace(payload.PresetID)
|
|
if payload.PresetID == "" {
|
|
WriteError(w, http.StatusBadRequest, RequestIDFromContext(r.Context()), "invalid_request", "Theme preset ID is required.")
|
|
return
|
|
}
|
|
|
|
admin, err := routes.bootstrapService().SaveThemePreset(r.Context(), bootstrapservice.SaveThemePresetInput{
|
|
PresetID: payload.PresetID,
|
|
})
|
|
if err != nil {
|
|
routes.writeBootstrapPersistenceError(w, r, err)
|
|
return
|
|
}
|
|
|
|
WriteJSON(w, http.StatusOK, map[string]any{
|
|
"data": map[string]any{
|
|
"presetId": payload.PresetID,
|
|
"admin": admin,
|
|
},
|
|
"meta": map[string]any{
|
|
"resource": "settings-theme",
|
|
},
|
|
})
|
|
}
|