73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package router
|
|
|
|
import (
|
|
"go-backend-template/config"
|
|
"go-backend-template/internal/middleware"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type Router struct {
|
|
config *config.Config
|
|
authHandler AuthHandler
|
|
healthHandler HealthHandler
|
|
authMiddleware AuthMiddleware
|
|
userHandler UserHandler
|
|
dukcapilHandler DukcapilHandler
|
|
}
|
|
|
|
func NewRouter(
|
|
cfg *config.Config,
|
|
authHandler AuthHandler,
|
|
authMiddleware AuthMiddleware,
|
|
healthHandler HealthHandler,
|
|
userHandler UserHandler,
|
|
dukcapilHandler DukcapilHandler,
|
|
) *Router {
|
|
return &Router{
|
|
config: cfg,
|
|
authHandler: authHandler,
|
|
authMiddleware: authMiddleware,
|
|
healthHandler: healthHandler,
|
|
userHandler: userHandler,
|
|
dukcapilHandler: dukcapilHandler,
|
|
}
|
|
}
|
|
|
|
func (r *Router) Init() *gin.Engine {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
engine := gin.New()
|
|
engine.Use(
|
|
middleware.JsonAPI(),
|
|
middleware.CorrelationID(),
|
|
middleware.Recover(),
|
|
middleware.HTTPStatLogger(),
|
|
middleware.PopulateContext(),
|
|
middleware.CORS(),
|
|
)
|
|
|
|
r.addAppRoutes(engine)
|
|
return engine
|
|
}
|
|
|
|
func (r *Router) addAppRoutes(rg *gin.Engine) {
|
|
rg.GET("/health", r.healthHandler.HealthCheck)
|
|
|
|
v1 := rg.Group("/api/v1")
|
|
{
|
|
if r.authHandler != nil {
|
|
auth := v1.Group("/auth")
|
|
{
|
|
auth.POST("/login", r.authHandler.Login)
|
|
}
|
|
}
|
|
|
|
if r.dukcapilHandler != nil {
|
|
dukcapil := v1.Group("/dukcapil")
|
|
{
|
|
dukcapil.POST("/face-match", r.dukcapilHandler.FaceMatch)
|
|
}
|
|
}
|
|
}
|
|
}
|