package web import ( "go_oxspeak_server/database" "go_oxspeak_server/network/http/handler" "go_oxspeak_server/network/http/middleware" "go_oxspeak_server/network/http/web/api" "github.com/gin-gonic/gin" ) func CreateRouter() *gin.Engine { router := gin.Default() // Register middleware router.Use(middleware.CORSMiddleware()) // Create base handler baseHandler := handler.NewHandler(database.DB) // Create specific handler authHandler := NewAuthHandler(baseHandler) serverHandler := api.NewServerHandler(baseHandler) categoryHandler := api.NewCategoryHandler(baseHandler) channelHandler := api.NewChannelHandler(baseHandler) messageHandler := api.NewMessageHandler(baseHandler) authGroup := router.Group("/auth") { authHandler.RegisterRoutes(authGroup) } apiGroup := router.Group("/api") { serverHandler.RegisterRoutes(apiGroup.Group("/server")) channelHandler.RegisterRoutes(apiGroup.Group("/channel")) categoryHandler.RegisterRoutes(apiGroup.Group("/category")) messageHandler.RegisterRoutes(apiGroup.Group("/message")) } router.GET("/health", healthcheck) // Expose OpenAPI specification (static file placed at repository root) router.GET("/openapi.yaml", func(c *gin.Context) { c.File("openapi.yaml") }) return router } func healthcheck(c *gin.Context) { c.JSON(200, gin.H{"status": "ok"}) }