package handler import ( "encoding/json" "net/http" "financeiro-carvalho/internal/model" "financeiro-carvalho/internal/service" ) type SettingsHandler struct { svc *service.SettingsService } func NewSettingsHandler(svc *service.SettingsService) *SettingsHandler { return &SettingsHandler{svc: svc} } func (h *SettingsHandler) Get(w http.ResponseWriter, r *http.Request) { s, err := h.svc.Get(r.Context()) if err != nil { respondError(w, http.StatusInternalServerError, "failed to get settings") return } respondJSON(w, http.StatusOK, s) } func (h *SettingsHandler) Update(w http.ResponseWriter, r *http.Request) { var in model.UserSettings if err := json.NewDecoder(r.Body).Decode(&in); err != nil { respondError(w, http.StatusBadRequest, "invalid JSON") return } out, err := h.svc.Update(r.Context(), in) if err != nil { if err == service.ErrInvalidSavingsGoal { respondError(w, http.StatusUnprocessableEntity, err.Error()) return } respondError(w, http.StatusInternalServerError, "failed to update settings") return } respondJSON(w, http.StatusOK, out) }