322 lines
18 KiB
Go
322 lines
18 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"
|
|
|
|
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"
|
|
|
|
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"
|
|
|
|
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"
|
|
|
|
categoryController "github.com/Caknoooo/go-gin-clean-starter/modules/category/controller"
|
|
categoryRepo "github.com/Caknoooo/go-gin-clean-starter/modules/category/repository"
|
|
categoryService "github.com/Caknoooo/go-gin-clean-starter/modules/category/service"
|
|
|
|
uomController "github.com/Caknoooo/go-gin-clean-starter/modules/uom/controller"
|
|
uomRepo "github.com/Caknoooo/go-gin-clean-starter/modules/uom/repository"
|
|
uomService "github.com/Caknoooo/go-gin-clean-starter/modules/uom/service"
|
|
|
|
mvendorController "github.com/Caknoooo/go-gin-clean-starter/modules/mvendor/controller"
|
|
mvendorRepo "github.com/Caknoooo/go-gin-clean-starter/modules/mvendor/repository"
|
|
mvendorService "github.com/Caknoooo/go-gin-clean-starter/modules/mvendor/service"
|
|
|
|
warehouseController "github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/controller"
|
|
warehouseRepo "github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/repository"
|
|
warehouseService "github.com/Caknoooo/go-gin-clean-starter/modules/warehouse/service"
|
|
|
|
zonaController "github.com/Caknoooo/go-gin-clean-starter/modules/zona/controller"
|
|
zonaRepo "github.com/Caknoooo/go-gin-clean-starter/modules/zona/repository"
|
|
zonaService "github.com/Caknoooo/go-gin-clean-starter/modules/zona/service"
|
|
|
|
aisleController "github.com/Caknoooo/go-gin-clean-starter/modules/aisle/controller"
|
|
aisleRepo "github.com/Caknoooo/go-gin-clean-starter/modules/aisle/repository"
|
|
aisleService "github.com/Caknoooo/go-gin-clean-starter/modules/aisle/service"
|
|
|
|
inventoryReceiptController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_receipt/controller"
|
|
inventoryReceiptLineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_receipt/repository"
|
|
inventoryReceiptRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_receipt/repository"
|
|
inventoryReceiptService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_receipt/service"
|
|
|
|
assignmentController "github.com/Caknoooo/go-gin-clean-starter/modules/assignment/controller"
|
|
assignmentRepo "github.com/Caknoooo/go-gin-clean-starter/modules/assignment/repository"
|
|
assignmentUserRepo "github.com/Caknoooo/go-gin-clean-starter/modules/assignment/repository"
|
|
assignmentService "github.com/Caknoooo/go-gin-clean-starter/modules/assignment/service"
|
|
|
|
inventoryRequestController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_request/controller"
|
|
inventoryRequestLineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_request/repository"
|
|
inventoryRequestRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_request/repository"
|
|
inventoryRequestService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_request/service"
|
|
|
|
inventoryIssueController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_issue/controller"
|
|
inventoryIssueLineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_issue/repository"
|
|
inventoryIssueRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_issue/repository"
|
|
inventoryIssueService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_issue/service"
|
|
|
|
inventoryReturnController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_return/controller"
|
|
inventoryReturnLineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_return/repository"
|
|
inventoryReturnRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_return/repository"
|
|
inventoryReturnService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_return/service"
|
|
|
|
inventoryMovementController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_movement/controller"
|
|
inventoryMovementLineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_movement/repository"
|
|
inventoryMovementRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_movement/repository"
|
|
inventoryMovementService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_movement/service"
|
|
|
|
inventoryStorageController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_storage/controller"
|
|
inventoryStorageRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_storage/repository"
|
|
inventoryStorageService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_storage/service"
|
|
|
|
inventoryTransactionController "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_transaction/controller"
|
|
inventoryTransactionRepo "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_transaction/repository"
|
|
inventoryTransactionService "github.com/Caknoooo/go-gin-clean-starter/modules/inventory_transaction/service"
|
|
|
|
quarantineController "github.com/Caknoooo/go-gin-clean-starter/modules/quarantine/controller"
|
|
quarantineLineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/quarantine/repository"
|
|
quarantineRepo "github.com/Caknoooo/go-gin-clean-starter/modules/quarantine/repository"
|
|
quarantineService "github.com/Caknoooo/go-gin-clean-starter/modules/quarantine/service"
|
|
|
|
sequenceRepo "github.com/Caknoooo/go-gin-clean-starter/modules/sequence/repository"
|
|
sequenceService "github.com/Caknoooo/go-gin-clean-starter/modules/sequence/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)
|
|
log := do.MustInvokeNamed[*logrus.Logger](injector, constants.LOGGER)
|
|
|
|
// 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)
|
|
categoryRepository := categoryRepo.NewCategoryRepository(db)
|
|
uomRepository := uomRepo.NewUomRepository(db)
|
|
mvendorRepository := mvendorRepo.NewVendorRepository(db)
|
|
warehouseRepository := warehouseRepo.NewWarehouseRepository(db)
|
|
zonaRepository := zonaRepo.NewZonaRepository(db)
|
|
aisleRepository := aisleRepo.NewAisleRepository(db)
|
|
inventoryReceiptRepository := inventoryReceiptRepo.NewInventoryReceiptRepository(db)
|
|
inventoryReceiptLineRepository := inventoryReceiptLineRepo.NewInventoryReceiptLineRepository(db)
|
|
assignmentRepository := assignmentRepo.NewAssignmentRepository(db)
|
|
assignmentUserRepository := assignmentUserRepo.NewAssignmentUserRepository(db)
|
|
inventoryRequestRepository := inventoryRequestRepo.NewInventoryRequestRepository(db)
|
|
inventoryRequestLineRepository := inventoryRequestLineRepo.NewInventoryRequestLineRepository(db)
|
|
inventoryIssueRepository := inventoryIssueRepo.NewInventoryIssueRepository(db)
|
|
inventoryIssueLineRepository := inventoryIssueLineRepo.NewInventoryIssueLineRepository(db)
|
|
inventoryReturnRepository := inventoryReturnRepo.NewInventoryReturnRepository(db)
|
|
inventoryReturnLineRepository := inventoryReturnLineRepo.NewInventoryReturnLineRepository(db)
|
|
inventoryMovementRepository := inventoryMovementRepo.NewInventoryMovementRepository(db)
|
|
inventoryMovementLineRepository := inventoryMovementLineRepo.NewInventoryMovementLineRepository(db)
|
|
inventoryStorageRepository := inventoryStorageRepo.NewInventoryStorageRepository(db)
|
|
inventoryTransactionRepository := inventoryTransactionRepo.NewInventoryTransactionRepository(db)
|
|
quarantineRepository := quarantineRepo.NewQuarantineRepository(db)
|
|
quarantineLineRepository := quarantineLineRepo.NewQuarantineLineRepository(db)
|
|
sequenceRepository := sequenceRepo.NewSequenceRepository(db)
|
|
|
|
// Service
|
|
sequenceServ := sequenceService.NewSequenceService(sequenceRepository, db)
|
|
userServ := userService.NewUserService(userRepository, roleRepository, warehouseRepository, clientRepository, refreshTokenRepository, jwtService, db)
|
|
productService := productService.NewProductService(productRepository, db, inventoryTransactionRepository, inventoryStorageRepository, categoryRepository, sequenceServ, log)
|
|
roleServ := roleService.NewRoleService(roleRepository, refreshTokenRepository, jwtService, userServ, db, log)
|
|
menuSvc := menuService.NewMenuService(menuRepository, jwtService, db, log)
|
|
maintenanceGroupServ := maintGroupService.NewMaintenanceGroupService(maintenanceGroupRepository, maintenanceGroupRoleRepository, maintenanceGroupRoleUserRepository, db)
|
|
clientServ := clientService.NewClientService(clientRepository, db, log)
|
|
permissionsServ := permissionsService.NewPermissionsService(permissionsRepository, db)
|
|
categoryServ := categoryService.NewCategoryService(categoryRepository, db, log)
|
|
uomServ := uomService.NewUomService(uomRepository, sequenceServ, db, log)
|
|
mvendorServ := mvendorService.NewVendorService(mvendorRepository, sequenceServ, db, log)
|
|
warehouseServ := warehouseService.NewWarehouseService(warehouseRepository, db, log)
|
|
zonaServ := zonaService.NewZonaService(zonaRepository, db, log)
|
|
aisleServ := aisleService.NewAisleService(aisleRepository, db, log)
|
|
inventoryReceiptServ := inventoryReceiptService.NewInventoryReceiptService(db, inventoryReceiptRepository, inventoryReceiptLineRepository, productRepository, uomRepository, inventoryStorageRepository, sequenceServ)
|
|
assignmentServ := assignmentService.NewAssignmentService(db, assignmentRepository, assignmentUserRepository)
|
|
inventoryRequestServ := inventoryRequestService.NewInventoryRequestService(db, inventoryRequestRepository, inventoryRequestLineRepository, sequenceServ)
|
|
inventoryIssueServ := inventoryIssueService.NewInventoryIssueService(db, inventoryIssueRepository, inventoryIssueLineRepository, sequenceServ, log)
|
|
inventoryReturnServ := inventoryReturnService.NewInventoryReturnService(db, inventoryReturnRepository, inventoryReturnLineRepository, inventoryIssueLineRepository, productRepository, sequenceServ)
|
|
inventoryMovementServ := inventoryMovementService.NewInventoryMovementService(db, inventoryMovementRepository, inventoryMovementLineRepository, sequenceServ, log)
|
|
inventoryStorageService := inventoryStorageService.NewInventoryStorageService(db, inventoryStorageRepository)
|
|
inventoryTransactionServ := inventoryTransactionService.NewInventoryTransactionService(db, inventoryTransactionRepository)
|
|
quarantineServ := quarantineService.NewQuarantineService(db, quarantineRepository, quarantineLineRepository, productRepository, uomRepository, inventoryStorageRepository)
|
|
|
|
// 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) (roleController.RoleController, error) {
|
|
return roleController.NewRoleController(i, roleServ), 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
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (productController.ProductController, error) {
|
|
return productController.NewProductController(i, productService), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (categoryController.CategoryController, error) {
|
|
return categoryController.NewCategoryController(i, categoryServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (uomController.UomController, error) {
|
|
return uomController.NewUomController(i, uomServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (mvendorController.VendorController, error) {
|
|
return mvendorController.NewVendorController(i, mvendorServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (warehouseController.WarehouseController, error) {
|
|
return warehouseController.NewWarehouseController(i, warehouseServ, roleServ, userServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (zonaController.ZonaController, error) {
|
|
return zonaController.NewZonaController(i, zonaServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (aisleController.AisleController, error) {
|
|
return aisleController.NewAisleController(aisleServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryReceiptController.InventoryReceiptController, error) {
|
|
return inventoryReceiptController.NewInventoryReceiptController(i, inventoryReceiptServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (assignmentController.AssignmentController, error) {
|
|
return assignmentController.NewAssignmentController(i, assignmentServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryRequestController.InventoryRequestController, error) {
|
|
return inventoryRequestController.NewInventoryRequestController(i, inventoryRequestServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryIssueController.InventoryIssueController, error) {
|
|
return inventoryIssueController.NewInventoryIssueController(i, inventoryIssueServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryReturnController.InventoryReturnController, error) {
|
|
return inventoryReturnController.NewInventoryReturnController(i, inventoryReturnServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryMovementController.InventoryMovementController, error) {
|
|
return inventoryMovementController.NewInventoryMovementController(i, inventoryMovementServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryStorageController.InventoryStorageController, error) {
|
|
return inventoryStorageController.NewInventoryStorageController(i, inventoryStorageService), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (inventoryTransactionController.InventoryTransactionController, error) {
|
|
return inventoryTransactionController.NewInventoryTransactionController(i, inventoryTransactionServ), nil
|
|
},
|
|
)
|
|
do.Provide(
|
|
injector, func(i *do.Injector) (quarantineController.QuarantineController, error) {
|
|
return quarantineController.NewQuarantineController(i, quarantineServ), nil
|
|
},
|
|
)
|
|
}
|