Aditya Siregar bc64eb20ea add dukcapil
2026-05-07 04:01:32 +07:00

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)
}
}
}
}