40 lines
919 B
Go
40 lines
919 B
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
"github.com/go-chi/chi/v5/middleware"
|
|
"github.com/wotra/wotra/internal/service"
|
|
)
|
|
|
|
// NewRouter builds the full HTTP router.
|
|
func NewRouter(authToken string, entrySvc *service.EntryService, daySvc *service.DayService, settingsSvc *service.SettingsService) http.Handler {
|
|
r := chi.NewRouter()
|
|
r.Use(middleware.RequestID)
|
|
r.Use(middleware.RealIP)
|
|
r.Use(middleware.Logger)
|
|
r.Use(middleware.Recoverer)
|
|
|
|
// Unauthenticated
|
|
r.Get("/healthz", func(w http.ResponseWriter, r *http.Request) {
|
|
writeJSON(w, http.StatusOK, map[string]string{"status": "ok"})
|
|
})
|
|
|
|
// Authenticated API
|
|
r.Route("/api", func(r chi.Router) {
|
|
r.Use(AuthMiddleware(authToken))
|
|
|
|
entryH := NewEntryHandler(entrySvc)
|
|
entryH.Routes(r)
|
|
|
|
dayH := NewDayHandler(daySvc)
|
|
dayH.Routes(r)
|
|
|
|
settingsH := NewSettingsHandler(settingsSvc)
|
|
settingsH.Routes(r)
|
|
})
|
|
|
|
return r
|
|
}
|