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;