package server import ( "net/http" "DanceLessonsCoach/pkg/greet" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) type Server struct { router *chi.Mux } func NewServer() *Server { s := &Server{ router: chi.NewRouter(), } s.setupRoutes() return s } func (s *Server) setupRoutes() { s.router.Use(middleware.Logger) s.router.Route("/api", func(r chi.Router) { r.Use(s.apiMiddlewares()...) r.Get("/health", s.handleHealth) s.registerApiV1Routes(r) }) } func (s *Server) registerApiV1Routes(r chi.Router) { r.Route("/v1", func(r chi.Router) { greetService := greet.NewService() greetHandler := greet.NewApiV1GreetHandler(greetService) r.Route("/greet", func(r chi.Router) { greetHandler.RegisterRoutes(r) }) }) } func (s *Server) apiMiddlewares() []func(http.Handler) http.Handler { return []func(http.Handler) http.Handler{ middleware.StripSlashes, middleware.Recoverer, } } func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) { w.Write([]byte(`{"status":"healthy"}`)) } func (s *Server) Router() http.Handler { return s.router }