132 lines
5.9 KiB
Go
132 lines
5.9 KiB
Go
package providers
|
|
|
|
import (
|
|
"github.com/Caknoooo/go-gin-clean-starter/config"
|
|
authRepo "github.com/Caknoooo/go-gin-clean-starter/modules/auth/repository"
|
|
"github.com/Caknoooo/go-gin-clean-starter/modules/auth/service"
|
|
clientController "github.com/Caknoooo/go-gin-clean-starter/modules/client/controller"
|
|
clientRepo "github.com/Caknoooo/go-gin-clean-starter/modules/client/repository"
|
|
clientService "github.com/Caknoooo/go-gin-clean-starter/modules/client/service"
|
|
"github.com/sirupsen/logrus"
|
|
|
|
// productController "github.com/Caknoooo/go-gin-clean-starter/modules/product/controller"
|
|
// productRepo "github.com/Caknoooo/go-gin-clean-starter/modules/product/repository"
|
|
// productService "github.com/Caknoooo/go-gin-clean-starter/modules/product/service"
|
|
logsController "github.com/Caknoooo/go-gin-clean-starter/modules/logs/controller"
|
|
menuController "github.com/Caknoooo/go-gin-clean-starter/modules/menu/controller"
|
|
menuRepo "github.com/Caknoooo/go-gin-clean-starter/modules/menu/repository"
|
|
menuService "github.com/Caknoooo/go-gin-clean-starter/modules/menu/service"
|
|
roleController "github.com/Caknoooo/go-gin-clean-starter/modules/role/controller"
|
|
roleRepo "github.com/Caknoooo/go-gin-clean-starter/modules/role/repository"
|
|
roleService "github.com/Caknoooo/go-gin-clean-starter/modules/role/service"
|
|
|
|
permissionsController "github.com/Caknoooo/go-gin-clean-starter/modules/permissions/controller"
|
|
permissionsRepo "github.com/Caknoooo/go-gin-clean-starter/modules/permissions/repository"
|
|
permissionsService "github.com/Caknoooo/go-gin-clean-starter/modules/permissions/service"
|
|
|
|
maintGroupController "github.com/Caknoooo/go-gin-clean-starter/modules/maintenance_group/controller"
|
|
maintGroupRepo "github.com/Caknoooo/go-gin-clean-starter/modules/maintenance_group/repository"
|
|
maintGroupRepoRole "github.com/Caknoooo/go-gin-clean-starter/modules/maintenance_group/repository"
|
|
maintGroupRepoRoleUser "github.com/Caknoooo/go-gin-clean-starter/modules/maintenance_group/repository"
|
|
maintGroupService "github.com/Caknoooo/go-gin-clean-starter/modules/maintenance_group/service"
|
|
"github.com/Caknoooo/go-gin-clean-starter/modules/user/controller"
|
|
"github.com/Caknoooo/go-gin-clean-starter/modules/user/repository"
|
|
userService "github.com/Caknoooo/go-gin-clean-starter/modules/user/service"
|
|
"github.com/Caknoooo/go-gin-clean-starter/pkg/constants"
|
|
"github.com/samber/do"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func InitDatabase(injector *do.Injector) {
|
|
do.ProvideNamed(injector, constants.DB, func(i *do.Injector) (*gorm.DB, error) {
|
|
return config.SetUpDatabaseConnection(), nil
|
|
})
|
|
}
|
|
|
|
func initLogger(injector *do.Injector) {
|
|
do.ProvideNamed(injector, constants.LOGGER, func(i *do.Injector) (*logrus.Logger, error) {
|
|
return config.SetupLoggerLogrus(), nil
|
|
})
|
|
}
|
|
|
|
func RegisterDependencies(injector *do.Injector) {
|
|
InitDatabase(injector)
|
|
initLogger(injector) // <-- tambahkan ini agar logger ter-register
|
|
|
|
do.ProvideNamed(injector, constants.JWTService, func(i *do.Injector) (service.JWTService, error) {
|
|
return service.NewJWTService(), nil
|
|
})
|
|
|
|
// Initialize
|
|
db := do.MustInvokeNamed[*gorm.DB](injector, constants.DB)
|
|
jwtService := do.MustInvokeNamed[service.JWTService](injector, constants.JWTService)
|
|
|
|
// Repository
|
|
userRepository := repository.NewUserRepository(db)
|
|
refreshTokenRepository := authRepo.NewRefreshTokenRepository(db)
|
|
// productRepository := productRepo.NewProductRepository(db)
|
|
menuRepository := menuRepo.NewMenuRepository(db)
|
|
roleRepository := roleRepo.NewRoleRepository(db)
|
|
clientRepository := clientRepo.NewClientRepository(db)
|
|
maintenanceGroupRepository := maintGroupRepo.NewMaintGroupRepository(db)
|
|
maintenanceGroupRoleRepository := maintGroupRepoRole.NewMaintGroupRoleRepository(db)
|
|
maintenanceGroupRoleUserRepository := maintGroupRepoRoleUser.NewMaintGroupRoleUserRepository(db)
|
|
permissionsRepository := permissionsRepo.NewPermissionsRepository(db)
|
|
|
|
// Service
|
|
userServ := userService.NewUserService(userRepository, refreshTokenRepository, jwtService, db)
|
|
// productService := productService.NewProductService(productRepository, db)
|
|
roleService := roleService.NewRoleService(roleRepository, refreshTokenRepository, jwtService, userServ, db)
|
|
menuSvc := menuService.NewMenuService(menuRepository, jwtService, db)
|
|
maintenanceGroupServ := maintGroupService.NewMaintenanceGroupService(maintenanceGroupRepository, maintenanceGroupRoleRepository, maintenanceGroupRoleUserRepository, db)
|
|
clientServ := clientService.NewClientService(clientRepository, db)
|
|
permissionsServ := permissionsService.NewPermissionsService(permissionsRepository, db)
|
|
|
|
// Controller
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (clientController.ClientController, error) {
|
|
return clientController.NewClientController(i, clientServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (controller.UserController, error) {
|
|
return controller.NewUserController(i, userServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (userService.UserService, error) {
|
|
return userServ, nil
|
|
},
|
|
)
|
|
// do.Provide(
|
|
// injector, func(i *do.Injector) (productController.ProductController, error) {
|
|
// return productController.NewProductController(i, productService), nil
|
|
// },
|
|
// )
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (roleController.RoleController, error) {
|
|
return roleController.NewRoleController(i, roleService), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (menuController.MenuController, error) {
|
|
return menuController.NewMenuController(i, menuSvc), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (logsController.LogsController, error) {
|
|
return logsController.NewLogsController(i), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (maintGroupController.MaintenanceGroupController, error) {
|
|
return maintGroupController.NewMaintenanceGroupController(i, maintenanceGroupServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (permissionsController.PermissionsController, error) {
|
|
return permissionsController.NewPermissionsController(permissionsServ), nil
|
|
},
|
|
)
|
|
}
|