Update template go

This commit is contained in:
2025-08-14 09:08:34 +07:00
parent 8c6fb0ce48
commit a64cbf4438
23 changed files with 4297 additions and 137 deletions

View File

@@ -3,8 +3,10 @@ package v1
import (
"net/http"
"api-service/internal/config"
"api-service/internal/handlers"
"api-service/internal/middleware"
"api-service/internal/services"
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
@@ -12,37 +14,64 @@ import (
)
// RegisterRoutes registers all API routes for version 1
func RegisterRoutes() *gin.Engine {
func RegisterRoutes(cfg *config.Config) *gin.Engine {
router := gin.New()
// Add middleware
router.Use(middleware.CORSConfig())
router.Use(middleware.ErrorHandler())
// router.Use(middleware.AuthMiddleware()) // Added auth middleware here
router.Use(gin.Logger())
router.Use(gin.Recovery())
// Initialize services
authService := services.NewAuthService(cfg)
// Swagger UI route
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// API v1 group
v1 := router.Group("/api/v1")
{
router.Use(middleware.AuthMiddleware()) // Added auth middleware here
// Public routes (no authentication required)
// Health endpoints
healthHandler := handlers.NewHealthHandler()
v1.GET("/health", healthHandler.GetHealth)
v1.GET("/", healthHandler.HelloWorld)
// Example endpoints
exampleHandler := handlers.NewExampleHandler()
v1.GET("/example", exampleHandler.GetExample)
v1.POST("/example", exampleHandler.PostExample)
// Authentication routes
authHandler := handlers.NewAuthHandler(authService)
tokenHandler := handlers.NewTokenHandler(authService)
// WebSocket endpoint
v1.GET("/websocket", WebSocketHandler)
v1.POST("/auth/login", authHandler.Login)
v1.POST("/auth/register", authHandler.Register)
v1.GET("/auth/me", middleware.JWTAuthMiddleware(authService), authHandler.Me)
v1.POST("/auth/refresh", authHandler.RefreshToken)
v1.GET("/webservice", WebServiceHandler)
// Token generation routes
v1.POST("/token/generate", tokenHandler.GenerateToken)
v1.POST("/token/generate-direct", tokenHandler.GenerateTokenDirect)
// Protected routes (require authentication)
protected := v1.Group("/")
protected.Use(middleware.JWTAuthMiddleware(authService))
{
// Product endpoints
productHandler := handlers.NewProductHandler()
protected.GET("/products", productHandler.GetProduct)
protected.GET("/products/:id", productHandler.GetProductByID)
protected.POST("/products", productHandler.CreateProduct)
protected.PUT("/products/:id", productHandler.UpdateProduct)
protected.DELETE("/products/:id", productHandler.DeleteProduct)
// Example endpoints
exampleHandler := handlers.NewExampleHandler()
protected.GET("/example", exampleHandler.GetExample)
protected.POST("/example", exampleHandler.PostExample)
// WebSocket endpoint
protected.GET("/websocket", WebSocketHandler)
protected.GET("/webservice", WebServiceHandler)
}
}
return router