54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
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"})
|
|
}
|