From c540ccc28e1092a0b7d9665afc2ac293918149ee Mon Sep 17 00:00:00 2001 From: bronku Date: Tue, 16 Jun 2026 16:54:35 +0200 Subject: [PATCH] post order --- server/errors.go | 18 ++++++++++++++++++ server/get.go | 10 ---------- server/post.go | 19 +++++++++++-------- server/server.go | 8 ++------ server/templates/confirmation.templ | 20 +++++++------------- 5 files changed, 38 insertions(+), 37 deletions(-) create mode 100644 server/errors.go diff --git a/server/errors.go b/server/errors.go new file mode 100644 index 0000000..7d5293e --- /dev/null +++ b/server/errors.go @@ -0,0 +1,18 @@ +package server + +import "net/http" + +type httpError struct { + code int + error +} + +func internalError(err error) *httpError { + return &httpError{http.StatusInternalServerError, err} +} +func badRequest(err error) *httpError { + return &httpError{http.StatusBadRequest, err} +} +func notFound(err error) *httpError { + return &httpError{http.StatusNotFound, err} +} diff --git a/server/get.go b/server/get.go index a583f45..b4224ca 100644 --- a/server/get.go +++ b/server/get.go @@ -159,16 +159,6 @@ func (h *Server) blocked(r *http.Request) (templ.Component, int, error) { return templates.BlockedPage(dates), http.StatusOK, nil } -func internalError(err error) *httpError { - return &httpError{http.StatusInternalServerError, err} -} -func badRequest(err error) *httpError { - return &httpError{http.StatusBadRequest, err} -} -func notFound(err error) *httpError { - return &httpError{http.StatusNotFound, err} -} - func (h *Server) newOrder(r *http.Request) (dto.OrderPage, *httpError) { var dto dto.OrderPage var err error diff --git a/server/post.go b/server/post.go index 926ed15..dccdf65 100644 --- a/server/post.go +++ b/server/post.go @@ -46,32 +46,32 @@ func (h *Server) postCake(r *http.Request) (templ.Component, int, error) { } n.ID, err = h.s.SaveCake(n) - return templates.Confirmation("Potwierdzone", n.ID), http.StatusAccepted, err + return templates.Confirmation(n.ID), http.StatusAccepted, err } -func (h *Server) postOrder(r *http.Request) (templ.Component, int, error) { +func (h *Server) postOrder(r *http.Request) (int, *httpError) { cakes, err := h.s.GetCakes() if err != nil { - return nil, http.StatusInternalServerError, err + return 0, internalError(err) } err = r.ParseForm() if err != nil { - return nil, http.StatusBadRequest, err + return 0, badRequest(err) } var n models.Order n.ID, err = strconv.Atoi(r.FormValue("id")) if err != nil { - return nil, http.StatusBadRequest, err + return 0, badRequest(err) } n.Paid, err = models.ParsePrice(r.FormValue("paid")) if err != nil { - return nil, http.StatusBadRequest, err + return 0, badRequest(err) } n.Date, err = time.Parse(config.DateFormat, r.FormValue("date")) if err != nil { - return nil, http.StatusBadRequest, err + return 0, badRequest(err) } n.Cakes = make([]models.Cake, 0) @@ -132,7 +132,10 @@ func (h *Server) postOrder(r *http.Request) (templ.Component, int, error) { n.Status = strings.TrimSpace(r.FormValue("status")) n.ID, err = h.s.SaveOrder(n) - return templates.Confirmation("Potwierdzone", n.ID), http.StatusAccepted, err + if err != nil { + return 0, internalError(err) + } + return n.ID, nil } func safeStr(s []string, i int) string { diff --git a/server/server.go b/server/server.go index 4ed4cfa..3445ee3 100644 --- a/server/server.go +++ b/server/server.go @@ -10,11 +10,6 @@ import ( "github.com/a-h/templ" ) -type httpError struct { - code int - error -} - type fetcher[T any] func(r *http.Request) (T, *httpError) type templateBuilder[T any] func(data T) templ.Component @@ -64,10 +59,11 @@ func New(store *store.Store) *Server { mux.HandleFunc("GET /", redirect("/orders", http.StatusSeeOther)) mux.HandleFunc("GET /order", render("Nowe zamówienie", server.newOrder, templates.OrderForm)) mux.HandleFunc("GET /order/{id}", render("Zamówienie", server.order, templates.OrderForm)) + mux.HandleFunc("POST /order", render("Potwierdzenie", server.postOrder, templates.Confirmation)) + mux.HandleFunc("POST /order/{id}", render("Potwierdzenie", server.postOrder, templates.Confirmation)) // mux.HandleFunc("GET /orders", render(server.orders)) // mux.HandleFunc("GET /cake", render(server.cake)) // mux.HandleFunc("GET /cakes", render(server.cakes)) - // mux.HandleFunc("POST /order", render(server.postOrder)) // mux.HandleFunc("POST /order/{id}/status", render(server.updateStatus)) // mux.HandleFunc("POST /cake", render(server.postCake)) // mux.HandleFunc("GET /blocked", render(server.blocked)) diff --git a/server/templates/confirmation.templ b/server/templates/confirmation.templ index b486629..7998b65 100644 --- a/server/templates/confirmation.templ +++ b/server/templates/confirmation.templ @@ -2,17 +2,11 @@ package templates import "strconv" -templ Confirmation(title string, id int) { - @Layout(title, ConfirmationBody(id)) -} - -templ ConfirmationBody(id int) { -
- check_circle -

{ strconv.Itoa(id) } — zapisano

- - arrow_back - Powrót do zamówień - -
+templ Confirmation(id int) { + check_circle +

{ strconv.Itoa(id) } — zapisano

+ + arrow_back + Powrót do zamówień + }