diff --git a/internal/budget/handler.go b/internal/budget/handler.go index d81ac9e..bac366e 100644 --- a/internal/budget/handler.go +++ b/internal/budget/handler.go @@ -2,7 +2,6 @@ package budget import ( "fmt" - "log/slog" "math" "net/http" "spend-sparrow/internal/core" @@ -33,6 +32,7 @@ func NewHandler(s Service, r *core.Render) Handler { func (h HandlerImpl) Handle(r *http.ServeMux) { r.Handle("GET /budget", h.handlePage()) + r.Handle("GET /budget/new", h.handleNew()) r.Handle("GET /budget/{id}", h.handleEdit()) r.Handle("POST /budget/{id}", h.handlePost()) // r.Handle("DELETE /budget/{id}", h.handleDelete()) @@ -59,7 +59,49 @@ func (h HandlerImpl) handlePage() http.HandlerFunc { } } +func (h HandlerImpl) handleNew() http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + core.UpdateSpan(r) + + user := core.GetUser(r) + if user == nil { + core.DoRedirect(w, r, "/auth/signin") + return + } + + comp := editNew() + h.r.RenderLayout(r, w, comp, user) + } +} + func (h HandlerImpl) handleEdit() http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + core.UpdateSpan(r) + + user := core.GetUser(r) + if user == nil { + core.DoRedirect(w, r, "/auth/signin") + return + } + + id, err := uuid.Parse(r.PathValue("id")) + if err != nil { + core.HandleError(w, r, fmt.Errorf("could not parse Id: %w", core.ErrBadRequest)) + return + } + + budget, err := h.s.Get(r.Context(), user, id) + if err != nil { + core.HandleError(w, r, fmt.Errorf("could not parse Id: %w", core.ErrBadRequest)) + return + } + + comp := edit(*budget) + h.r.RenderLayout(r, w, comp, user) + } +} + +func (h HandlerImpl) handlePost() http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { core.UpdateSpan(r) @@ -83,35 +125,6 @@ func (h HandlerImpl) handleEdit() http.HandlerFunc { // } } - comp := editNew() - h.r.Render(r, w, comp) - } -} - -func (h HandlerImpl) handlePost() http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - core.UpdateSpan(r) - - user := core.GetUser(r) - if user == nil { - core.DoRedirect(w, r, "/auth/signin") - return - } - - var ( - id uuid.UUID - err error - ) - - idStr := r.PathValue("id") - if idStr != "new" { - id, err = uuid.Parse(idStr) - if err != nil { - core.HandleError(w, r, fmt.Errorf("could not parse Id: %w", core.ErrBadRequest)) - return - } - } - valueF, err := strconv.ParseFloat(r.FormValue("value"), 64) if err != nil { core.HandleError(w, r, fmt.Errorf("could not parse value: %w", core.ErrBadRequest)) @@ -120,9 +133,8 @@ func (h HandlerImpl) handlePost() http.HandlerFunc { value := int64(math.Round(valueF * DECIMALS_MULTIPLIER)) input := Budget{ - Id: id, Value: value, - Description: r.FormValue("description"), + Description: r.FormValue("name"), } var budget *Budget @@ -132,17 +144,14 @@ func (h HandlerImpl) handlePost() http.HandlerFunc { core.HandleError(w, r, err) return } - } else { - budget, err = h.s.Update(r.Context(), user, input) - if err != nil { - core.HandleError(w, r, err) - return - } + // } else { + // budget, err = h.s.Update(r.Context(), user, input) + // if err != nil { + // core.HandleError(w, r, err) + // return + // } } - // To disable unused variable - slog.Info("test", "item", budget) - // comp := item() - // h.r.Render(r, w, comp) + core.DoRedirect(w, r, "/budget/"+budget.Id.String()) } } diff --git a/internal/budget/template.templ b/internal/budget/template.templ index 89cb5d4..83787ea 100644 --- a/internal/budget/template.templ +++ b/internal/budget/template.templ @@ -1,9 +1,12 @@ package budget -import "spend-sparrow/internal/template/svg" +import ( + "spend-sparrow/internal/core" + "spend-sparrow/internal/template/svg" +) templ page(budgets []Budget) { - + @core.Breadcrumb([]string{"Home", "Budget"}, []string{"/", "/budget"})