124 lines
3.8 KiB
Go
124 lines
3.8 KiB
Go
package manager
|
|
|
|
import (
|
|
"users_management/m/config"
|
|
"users_management/m/usecase"
|
|
"users_management/m/utils/service"
|
|
)
|
|
|
|
type UsecaseManager interface {
|
|
NewUserUsecase() usecase.UsersUsecase
|
|
NewAuthUsecase() usecase.AuthUsecase
|
|
NewDeviceUsecase() usecase.DeviceUseCase
|
|
NewBackboneUsecase() usecase.BackboneUseCase
|
|
NewFishboneUsecase() usecase.FishboneUseCase
|
|
|
|
NewTowerUsecase() usecase.TowerUseCase
|
|
|
|
NewDevicePortUsecase() usecase.DevicePortUseCase
|
|
NewCountAssetsUsecase() usecase.CountAssetsUseCase
|
|
|
|
NewActivityLogUsecase() usecase.ActivityLogUseCase
|
|
|
|
NewDeviceInspectionUsecase() usecase.DeviceInspectionUseCase
|
|
|
|
NewNearestDeviceUsecase() usecase.NearestDeviceUseCase
|
|
|
|
NewDeviceDetailsUsecase() usecase.DeviceDetailsUseCase
|
|
NewOLTUsecase() usecase.OLTUsecase
|
|
|
|
NewCableConnectionUsecase() usecase.CableConnectionUseCase
|
|
|
|
}
|
|
|
|
type usecaseManager struct {
|
|
repo RepositoryManager
|
|
geocoder service.GeocodingService
|
|
cfg *config.Config
|
|
}
|
|
|
|
func NewUsecaseManager(repo RepositoryManager, cfg *config.Config) UsecaseManager {
|
|
basegeoCoder := service.NewGeocodingService()
|
|
cachedGeocoder := service.NewCachedGeocodingService(basegeoCoder)
|
|
return &usecaseManager{repo: repo,cfg: cfg , geocoder: cachedGeocoder}
|
|
}
|
|
|
|
func (um *usecaseManager) NewDeviceDetailsUsecase() usecase.DeviceDetailsUseCase {
|
|
return usecase.NewDeviceDetailsUseCase(
|
|
um.repo.NewDeviceDetailsRepository(),
|
|
um.repo.NewOLTRepo(),
|
|
um.geocoder,
|
|
)
|
|
}
|
|
|
|
func (um *usecaseManager) NewNearestDeviceUsecase() usecase.NearestDeviceUseCase {
|
|
return usecase.NewNearestDeviceUseCase(
|
|
um.repo.NewNearestDeviceRepository(),
|
|
um.geocoder,
|
|
)
|
|
}
|
|
|
|
func (um *usecaseManager) NewUserUsecase() usecase.UsersUsecase {
|
|
return usecase.NewUsersUsecase(um.repo.NewUserRepository())
|
|
}
|
|
|
|
func (um *usecaseManager) NewAuthUsecase() usecase.AuthUsecase {
|
|
return usecase.NewAuthUsecase(um.repo.NewUserRepository(), um.cfg)
|
|
}
|
|
|
|
func (um *usecaseManager) NewDeviceUsecase() usecase.DeviceUseCase {
|
|
return usecase.NewDeviceUseCase(um.repo.NewDeviceRepository(), um.repo.NewOLTRepo(), um.geocoder)
|
|
}
|
|
|
|
func (um *usecaseManager) NewBackboneUsecase() usecase.BackboneUseCase {
|
|
return usecase.NewBackboneUseCase(
|
|
um.repo.NewBackboneRepository(),
|
|
um.repo.NewFishboneRepository(),
|
|
um.repo.NewDeviceDetailsRepository(), // Add this
|
|
)
|
|
}
|
|
|
|
|
|
func (um *usecaseManager) NewFishboneUsecase() usecase.FishboneUseCase {
|
|
return usecase.NewFishboneUseCase(
|
|
um.repo.NewFishboneRepository(),
|
|
um.repo.NewBackboneRepository(),
|
|
um.repo.NewDeviceDetailsRepository(), // Add this line
|
|
)
|
|
}
|
|
|
|
func (um *usecaseManager) NewTowerUsecase() usecase.TowerUseCase {
|
|
return usecase.NewTowerUseCase(um.repo.NewTowerRepository(), um.geocoder)
|
|
}
|
|
|
|
func (um *usecaseManager) NewDevicePortUsecase() usecase.DevicePortUseCase {
|
|
return usecase.NewDevicePortUseCase(um.repo.NewDevicePortRepository())
|
|
}
|
|
|
|
|
|
func (um *usecaseManager) NewCountAssetsUsecase() usecase.CountAssetsUseCase {
|
|
return usecase.NewCountAssetsUseCase(um.repo.NewCountAssetsRepository())
|
|
}
|
|
|
|
func (um *usecaseManager) NewActivityLogUsecase() usecase.ActivityLogUseCase {
|
|
return usecase.NewActivityLogUseCase(um.repo.NewActivityLogRepository())
|
|
}
|
|
|
|
func (um *usecaseManager) NewDeviceInspectionUsecase() usecase.DeviceInspectionUseCase {
|
|
return usecase.NewDeviceInspectionUseCase(
|
|
um.repo.NewDeviceInspectionRepository(),
|
|
um.NewActivityLogUsecase(),
|
|
service.NewGeocodingService(), // Add the geocoding service
|
|
)
|
|
}
|
|
|
|
func (um *usecaseManager) NewOLTUsecase() usecase.OLTUsecase {
|
|
return usecase.NewOLTUsecase(um.repo.NewOLTRepo(), um.repo.NewDeviceDetailsRepository(), service.NewGeocodingService())
|
|
}
|
|
|
|
func (um *usecaseManager) NewCableConnectionUsecase() usecase.CableConnectionUseCase {
|
|
return usecase.NewCableConnectionUseCase(
|
|
um.repo.NewCableConnectionRepository(),
|
|
um.repo.NewDeviceRepository(),
|
|
)
|
|
} |