package router import ( "hyapp-admin-server/internal/config" "hyapp-admin-server/internal/middleware" "hyapp-admin-server/internal/modules/adminuser" "hyapp-admin-server/internal/modules/appconfig" "hyapp-admin-server/internal/modules/appregistry" "hyapp-admin-server/internal/modules/appuser" "hyapp-admin-server/internal/modules/audit" authroutes "hyapp-admin-server/internal/modules/auth" "hyapp-admin-server/internal/modules/countryregion" "hyapp-admin-server/internal/modules/dashboard" "hyapp-admin-server/internal/modules/health" "hyapp-admin-server/internal/modules/hostorg" "hyapp-admin-server/internal/modules/job" "hyapp-admin-server/internal/modules/menu" "hyapp-admin-server/internal/modules/notification" "hyapp-admin-server/internal/modules/rbac" resourcemodule "hyapp-admin-server/internal/modules/resource" "hyapp-admin-server/internal/modules/roomadmin" "hyapp-admin-server/internal/modules/search" "hyapp-admin-server/internal/modules/upload" "hyapp-admin-server/internal/service" "github.com/gin-gonic/gin" ) type Handlers struct { AdminUser *adminuser.Handler AppConfig *appconfig.Handler AppRegistry *appregistry.Handler AppUser *appuser.Handler Audit *audit.Handler Auth *authroutes.Handler CountryRegion *countryregion.Handler Dashboard *dashboard.Handler Health *health.Handler HostOrg *hostorg.Handler Job *job.Handler Menu *menu.Handler Notification *notification.Handler RBAC *rbac.Handler Resource *resourcemodule.Handler RoomAdmin *roomadmin.Handler Search *search.Handler Upload *upload.Handler } func New(cfg config.Config, auth *service.AuthService, h Handlers) *gin.Engine { engine := gin.New() engine.Use(middleware.RequestID(), middleware.AppCode(), gin.Logger(), gin.Recovery(), middleware.CORS(cfg)) engine.GET("/healthz", h.Health.Health) engine.GET("/readyz", h.Health.Ready) api := engine.Group("/api/v1") protected := api.Group("") protected.Use(middleware.AuthRequired(auth), middleware.Audit(h.Audit)) authroutes.RegisterRoutes(api, protected, h.Auth) menu.RegisterRoutes(protected, h.Menu) rbac.RegisterRoutes(protected, h.RBAC) resourcemodule.RegisterRoutes(protected, h.Resource) adminuser.RegisterRoutes(protected, h.AdminUser) appuser.RegisterRoutes(protected, h.AppUser) appregistry.RegisterRoutes(protected, h.AppRegistry) appconfig.RegisterRoutes(protected, h.AppConfig) countryregion.RegisterRoutes(protected, h.CountryRegion) roomadmin.RegisterRoutes(protected, h.RoomAdmin) dashboard.RegisterRoutes(protected, h.Dashboard) hostorg.RegisterRoutes(protected, h.HostOrg) audit.RegisterRoutes(protected, h.Audit) notification.RegisterRoutes(protected, h.Notification) job.RegisterRoutes(protected, h.Job) upload.RegisterRoutes(protected, h.Upload) search.RegisterRoutes(protected, h.Search) return engine }