71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package http
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"starter-kit/internal/helper/config"
|
|
"starter-kit/internal/transport/http/handler"
|
|
"starter-kit/internal/transport/http/middleware"
|
|
)
|
|
|
|
// SetupRouter cấu hình router cho HTTP server
|
|
func SetupRouter(cfg *config.Config) *gin.Engine {
|
|
// Khởi tạo router với mode phù hợp với môi trường
|
|
if cfg.App.Environment == "production" {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
}
|
|
|
|
router := gin.New()
|
|
|
|
// Logger middleware
|
|
router.Use(middleware.Logger())
|
|
|
|
// Recovery middleware
|
|
router.Use(gin.Recovery())
|
|
|
|
<<<<<<< Updated upstream
|
|
// CORS middleware nếu cần
|
|
// router.Use(middleware.CORS())
|
|
=======
|
|
// CORS middleware
|
|
router.Use(middleware.CORS(middleware.DefaultCORSConfig()))
|
|
|
|
// Khởi tạo repositories
|
|
userRepo := persistence.NewUserRepository(db)
|
|
roleRepo := persistence.NewRoleRepository(db)
|
|
|
|
// Khởi tạo services
|
|
authSvc := service.NewAuthService(
|
|
userRepo,
|
|
roleRepo,
|
|
cfg.JWT.Secret,
|
|
time.Duration(cfg.JWT.AccessTokenExpire)*time.Minute,
|
|
cfg.JWT.RefreshTokenExpire * 24, // Convert days to hours
|
|
)
|
|
|
|
// Khởi tạo middleware
|
|
authMiddleware := middleware.NewAuthMiddleware(authSvc)
|
|
>>>>>>> Stashed changes
|
|
|
|
// Khởi tạo các handlers
|
|
healthHandler := handler.NewHealthHandler(cfg)
|
|
|
|
// Đăng ký các routes
|
|
|
|
// Health check routes
|
|
router.GET("/ping", healthHandler.Ping)
|
|
router.GET("/health", healthHandler.HealthCheck)
|
|
|
|
// API versioning - Cảnh báo: API routes hiện đang được comment out
|
|
// Khi cần sử dụng, bỏ comment đoạn code sau
|
|
/*
|
|
v1 := router.Group("/api/v1")
|
|
{
|
|
// Các API endpoints version 1
|
|
// v1.GET("/resources", resourceHandler.List)
|
|
// v1.POST("/resources", resourceHandler.Create)
|
|
}
|
|
*/
|
|
|
|
return router
|
|
}
|