lyrics

lyrics
git clone git://brookjeynes.dev/bjeynes/lyrics.git
Log | Files | Refs

router.go (1339B)


      1 package server
      2 
      3 import (
      4 	"net/http"
      5 
      6 	"github.com/go-chi/chi/v5"
      7 	"github.com/gorilla/schema"
      8 )
      9 
     10 var decoder = schema.NewDecoder()
     11 
     12 func (ss *ServerState) Router() http.Handler {
     13 	router := chi.NewRouter()
     14 
     15 	router.Get("/", ss.Index)
     16 
     17 	router.Get("/search", ss.Search)
     18 
     19 	router.Route("/song", func(router chi.Router) {
     20 		router.Route("/{id}", func(router chi.Router) {
     21 			router.Get("/{slug}", ss.Song)
     22 		})
     23 		router.Get("/new", ss.NewSong)
     24 		router.Post("/new", ss.NewSong)
     25 		router.Get("/search", ss.SearchSong)
     26 	})
     27 
     28 	router.Route("/release", func(router chi.Router) {
     29 		router.Route("/{id}", func(router chi.Router) {
     30 			router.Get("/{slug}", ss.Release)
     31 			router.Get("/{slug}/edit", ss.EditRelease)
     32 			router.Post("/{slug}/edit", ss.EditRelease)
     33 			router.Get("/{slug}/cover", ss.ReleaseCover)
     34 		})
     35 		router.Get("/new", ss.NewRelease)
     36 		router.Post("/new", ss.NewRelease)
     37 		router.Get("/search", ss.SearchRelease)
     38 	})
     39 
     40 	router.Route("/artist", func(router chi.Router) {
     41 		router.Route("/{id}", func(router chi.Router) {
     42 			router.Get("/{slug}", ss.Artist)
     43 			router.Get("/{slug}/edit", ss.EditArtist)
     44 			router.Post("/{slug}/edit", ss.EditArtist)
     45 		})
     46 		router.Get("/new", ss.NewArtist)
     47 		router.Post("/new", ss.NewArtist)
     48 		router.Get("/search", ss.SearchArtist)
     49 	})
     50 
     51 	router.Handle("/static/*", ss.staticHandler)
     52 
     53 	return router
     54 }