feat: scaffold work queue API
This commit is contained in:
48
internal/api/server.go
Normal file
48
internal/api/server.go
Normal file
@@ -0,0 +1,48 @@
|
||||
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"})
|
||||
}
|
||||
Reference in New Issue
Block a user