Files
SEEN/backend/internal/api/server.go
T
2026-04-10 12:06:24 +02:00

38 lines
1.0 KiB
Go

package api
import (
"github.com/gin-gonic/gin"
"github.com/tdvorak/seen/backend/internal/api/handlers"
v1 "github.com/tdvorak/seen/backend/internal/api/routes/v1"
"github.com/tdvorak/seen/backend/internal/config"
"github.com/tdvorak/seen/backend/internal/middleware"
"go.uber.org/zap"
)
type Handlers struct {
Health *handlers.HealthHandler
Auth *handlers.AuthHandler
Catalog *handlers.CatalogHandler
Download *handlers.DownloadHandler
Placeholder *handlers.PlaceholderHandler
}
func NewRouter(cfg config.Config, log *zap.Logger, handlers Handlers) *gin.Engine {
if cfg.Env == "production" {
gin.SetMode(gin.ReleaseMode)
}
engine := gin.New()
engine.Use(middleware.RequestID())
engine.Use(middleware.CORS(cfg.CORS))
engine.Use(middleware.AccessLog(log))
engine.Use(middleware.Recovery(log))
engine.GET("/healthz", handlers.Health.Live)
apiV1 := engine.Group("/api/v1")
v1.Register(apiV1, handlers.Health, handlers.Auth, handlers.Catalog, handlers.Download, handlers.Placeholder)
return engine
}