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 }