2025-06-06 21:14:28 +07:00

83 lines
2.7 KiB
Go

package routes
import (
http2 "enaklo-pos-be/internal/handlers/http"
"enaklo-pos-be/internal/handlers/http/balance"
"enaklo-pos-be/internal/handlers/http/license"
"enaklo-pos-be/internal/handlers/http/oss"
"enaklo-pos-be/internal/handlers/http/partner"
"enaklo-pos-be/internal/handlers/http/product"
site "enaklo-pos-be/internal/handlers/http/sites"
"enaklo-pos-be/internal/handlers/http/studio"
"enaklo-pos-be/internal/handlers/http/transaction"
"enaklo-pos-be/internal/handlers/http/user"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"net/http"
"enaklo-pos-be/internal/handlers/http/event"
"enaklo-pos-be/internal/middlewares"
"github.com/gin-gonic/gin"
"enaklo-pos-be/internal/app"
"enaklo-pos-be/internal/handlers/http/auth"
"enaklo-pos-be/internal/repository"
"enaklo-pos-be/internal/services"
)
func RegisterPublicRoutes(app *app.Server, serviceManager *services.ServiceManagerImpl,
repoManager *repository.RepoManagerImpl) {
route := app.Group("/")
route.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, "HEALTHY")
})
route.GET("/docs/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
}
type HTTPHandlerRoutes interface {
Route(group *gin.RouterGroup, jwt gin.HandlerFunc)
}
func RegisterPrivateRoutes(app *app.Server, serviceManager *services.ServiceManagerImpl,
repoManager *repository.RepoManagerImpl) {
approute := app.Group("/api/v1")
authMiddleware := middlewares.AuthorizationMiddleware(repoManager.Crypto)
serverRoutes := []HTTPHandlerRoutes{
auth.NewAuthHandler(serviceManager.AuthSvc),
event.NewHandler(serviceManager.EventSvc),
user.NewHandler(serviceManager.UserSvc),
studio.NewStudioHandler(serviceManager.StudioSvc),
product.NewHandler(serviceManager.ProductSvc),
oss.NewOssHandler(serviceManager.OSSSvc),
partner.NewHandler(serviceManager.PartnerSvc),
site.NewHandler(serviceManager.SiteSvc),
license.NewHandler(serviceManager.LicenseSvc),
transaction.New(serviceManager.Transaction),
balance.NewHandler(serviceManager.Balance),
}
for _, handler := range serverRoutes {
handler.Route(approute, authMiddleware)
}
}
func RegisterPrivateRoutesV2(app *app.Server, serviceManager *services.ServiceManagerImpl,
repoManager *repository.RepoManagerImpl) {
approute := app.Group("/api/v2")
authMiddleware := middlewares.AuthorizationMiddleware(repoManager.Crypto)
serverRoutes := []HTTPHandlerRoutes{
http2.NewOrderHandler(serviceManager.OrderV2Svc),
http2.NewMemberRegistrationHandler(serviceManager.MemberRegistrationSvc),
http2.NewCustomerHandler(serviceManager.CustomerV2Svc),
http2.NewInProgressOrderHandler(serviceManager.InProgressSvc),
}
for _, handler := range serverRoutes {
handler.Route(approute, authMiddleware)
}
}