package api import ( "database/sql" "net/http" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) type Server struct { db *sql.DB } func NewServer(db *sql.DB) (*Server, error) { return &Server{db: db}, nil } func (s *Server) Router() http.Handler { r := chi.NewRouter() r.Use(middleware.RequestID) r.Use(middleware.RealIP) r.Use(middleware.Recoverer) r.Use(jsonMiddleware) r.Get("/health", s.handleHealth) r.Route("/projects", func(r chi.Router) { r.Post("/", s.handleCreateProject) r.Get("/", s.handleListProjects) r.Get("/{id}", s.handleGetProject) r.Patch("/{id}", s.handlePatchProject) }) r.Route("/work", func(r chi.Router) { r.Post("/", s.handleCreateWork) r.Get("/", s.handleListWork) r.Get("/{id}", s.handleGetWork) r.Patch("/{id}", s.handlePatchWork) r.Delete("/{id}", s.handleDeleteWork) }) return r } func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) { writeJSON(w, http.StatusOK, map[string]string{"status": "ok"}) }