moved route definition to a map
This commit is contained in:
parent
434708b291
commit
10140231a6
2 changed files with 25 additions and 12 deletions
|
|
@ -9,11 +9,17 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
tmpl map[string]*template.Template
|
tmpl map[string]*template.Template
|
||||||
s *store.Store
|
s *store.Store
|
||||||
|
routes map[string]route
|
||||||
http.Handler
|
http.Handler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type route struct {
|
||||||
|
function fetcher
|
||||||
|
template string
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Server) Close() {
|
func (h *Server) Close() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -23,13 +29,12 @@ var static embed.FS
|
||||||
func (h *Server) loadHandler() {
|
func (h *Server) loadHandler() {
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
|
|
||||||
mux.HandleFunc("GET /order/", h.render(h.order, "order"))
|
for i, e := range h.routes {
|
||||||
|
mux.HandleFunc(i, h.render(e.function, e.template))
|
||||||
|
}
|
||||||
|
|
||||||
mux.HandleFunc("GET /", h.redirect("/orders", http.StatusSeeOther))
|
mux.HandleFunc("GET /", h.redirect("/orders", http.StatusSeeOther))
|
||||||
mux.HandleFunc("GET /orders", h.render(h.orders, "orders"))
|
|
||||||
mux.HandleFunc("POST /order/", h.render(h.postOrder, "confirmation"))
|
|
||||||
mux.HandleFunc("GET /cakes", h.render(h.cakes, "cakes"))
|
|
||||||
mux.HandleFunc("GET /cake/", h.render(h.cake, "cake"))
|
|
||||||
mux.HandleFunc("POST /cake/", h.render(h.postCake, "confirmation"))
|
|
||||||
fs := http.FileServerFS(static)
|
fs := http.FileServerFS(static)
|
||||||
mux.Handle("GET /static/", fs)
|
mux.Handle("GET /static/", fs)
|
||||||
|
|
||||||
|
|
@ -39,6 +44,15 @@ func (h *Server) loadHandler() {
|
||||||
func New(store *store.Store) *Server {
|
func New(store *store.Store) *Server {
|
||||||
var server Server
|
var server Server
|
||||||
|
|
||||||
|
server.routes = map[string]route{
|
||||||
|
"GET /order/": {server.order, "order"},
|
||||||
|
"GET /orders": {server.orders, "orders"},
|
||||||
|
"GET /cake/": {server.cake, "cake"},
|
||||||
|
"GET /cakes": {server.cakes, "cakes"},
|
||||||
|
"POST /order/": {server.postOrder, "confirmation"},
|
||||||
|
"POST /cake/": {server.postCake, "confirmation"},
|
||||||
|
}
|
||||||
|
|
||||||
server.loadTemplates()
|
server.loadTemplates()
|
||||||
server.s = store
|
server.s = store
|
||||||
server.loadHandler()
|
server.loadHandler()
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,15 @@ var templates embed.FS
|
||||||
|
|
||||||
func (h *Server) loadTemplates() {
|
func (h *Server) loadTemplates() {
|
||||||
h.tmpl = make(map[string]*template.Template)
|
h.tmpl = make(map[string]*template.Template)
|
||||||
pages := []string{"orders", "order", "cake", "cakes", "confirmation"}
|
for _, page := range h.routes {
|
||||||
for _, page := range pages {
|
|
||||||
tmpl, err := template.ParseFS(templates,
|
tmpl, err := template.ParseFS(templates,
|
||||||
"templates/layout/*.html",
|
"templates/layout/*.html",
|
||||||
"templates/"+page+".html",
|
"templates/"+page.template+".html",
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
h.tmpl[page] = tmpl
|
h.tmpl[page.template] = tmpl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue