Files
work-queue-api/internal/api/server.go
2026-04-11 18:38:52 +00:00

49 lines
1011 B
Go

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"})
}