From 01732b97fca4d7bdc98de0eaac619820d90dd2b8 Mon Sep 17 00:00:00 2001 From: bronku Date: Wed, 26 Mar 2025 14:33:07 +0100 Subject: [PATCH] Add single cake endpoint handler --- internal/server/get.go | 19 ++++++++++++++++++ internal/server/server.go | 1 + internal/server/templates/cake.html | 31 +++++++++++++++++++++++++++++ internal/store/migrations/5.sql | 5 +++++ 4 files changed, 56 insertions(+) create mode 100644 internal/server/templates/cake.html create mode 100644 internal/store/migrations/5.sql diff --git a/internal/server/get.go b/internal/server/get.go index 4b4f4d4..a019f03 100644 --- a/internal/server/get.go +++ b/internal/server/get.go @@ -18,6 +18,25 @@ func (h *Server) cakes(r *http.Request) (any, int, error) { return data, http.StatusOK, err } +func (h *Server) cake(r *http.Request) (any, int, error) { + url := strings.Split(r.URL.String(), "/") + if len(url) < 3 || url[2] == "" { + return store.Cake{}, http.StatusOK, nil + } + + id, err := strconv.Atoi(url[2]) + if err != nil { + return nil, http.StatusBadRequest, err + } + + data, err := h.s.GetCake(id) + if err != nil { + return nil, http.StatusNotFound, err + } + + return data, http.StatusOK, nil +} + func (h *Server) order(r *http.Request) (any, int, error) { type formData struct { Order store.Order diff --git a/internal/server/server.go b/internal/server/server.go index 6a53997..49edc48 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -26,6 +26,7 @@ func (h *Server) loadHandler() { mux.HandleFunc("GET /", h.render(h.index, "index.html")) mux.HandleFunc("POST /order/", h.render(h.postOrder, "confirmation.html")) mux.HandleFunc("GET /cakes", h.render(h.cakes, "cakes.html")) + mux.HandleFunc("GET /cake/", h.render(h.cake, "cake.html")) h.Handler = mux } diff --git a/internal/server/templates/cake.html b/internal/server/templates/cake.html new file mode 100644 index 0000000..17cc5a2 --- /dev/null +++ b/internal/server/templates/cake.html @@ -0,0 +1,31 @@ +
+

New Order

+
+ +
+
+
+

Info

+ + + + + + + + + +
+ +
+
diff --git a/internal/store/migrations/5.sql b/internal/store/migrations/5.sql new file mode 100644 index 0000000..328ed55 --- /dev/null +++ b/internal/store/migrations/5.sql @@ -0,0 +1,5 @@ +update cake +set + availability = "available"; + +pragma user_version = 5;