satupeta-main/app/api/dependencies/factory.py
2026-02-23 12:20:42 +07:00

166 lines
4.7 KiB
Python
Executable File

from functools import partial
from app.core.minio_client import MinioClient
from app.models import (
CategoryModel,
ClassificationModel,
CredentialModel,
FeedbackModel,
FileModel,
MapProjectionSystemModel,
MapsetHistoryModel,
MapsetModel,
MapSourceModel,
NewsModel,
OrganizationModel,
RefreshTokenModel,
RegionalModel,
RoleModel,
SourceUsageModel,
UserModel,
)
from app.repositories import (
CategoryRepository,
ClassificationRepository,
CredentialRepository,
FeedbackRepository,
FileRepository,
MapProjectionSystemRepository,
MapsetHistoryRepository,
MapsetRepository,
MapSourceRepository,
NewsRepository,
OrganizationRepository,
RegionalRepository,
RoleRepository,
SourceUsageRepository,
TokenRepository,
UserRepository,
)
from app.services import (
AuthService,
CategoryService,
CountService,
ClassificationService,
CredentialService,
FeedbackService,
FileService,
MapProjectionSystemService,
MapsetHistoryService,
MapsetService,
MapSourceService,
NewsService,
OrganizationService,
RegionalService,
RoleService,
UserService,
)
class Factory:
organization_repository = staticmethod(partial(OrganizationRepository, OrganizationModel, MapsetModel))
role_repository = staticmethod(partial(RoleRepository, RoleModel))
user_repository = staticmethod(partial(UserRepository, UserModel))
token_repository = staticmethod(partial(TokenRepository, RefreshTokenModel))
news_repository = staticmethod(partial(NewsRepository, NewsModel))
file_repository = staticmethod(partial(FileRepository, FileModel))
credential_repository = staticmethod(partial(CredentialRepository, CredentialModel))
map_source_repository = staticmethod(partial(MapSourceRepository, MapSourceModel))
map_projection_system_repository = staticmethod(partial(MapProjectionSystemRepository, MapProjectionSystemModel))
category_repository = staticmethod(partial(CategoryRepository, CategoryModel))
classification_repository = staticmethod(partial(ClassificationRepository, ClassificationModel))
regional_repository = staticmethod(partial(RegionalRepository, RegionalModel))
mapset_repository = staticmethod(partial(MapsetRepository, MapsetModel))
mapset_history_repository = staticmethod(partial(MapsetHistoryRepository, MapsetHistoryModel))
map_source_usage_repository = staticmethod(partial(SourceUsageRepository, SourceUsageModel))
feedback_repository = staticmethod(partial(FeedbackRepository, FeedbackModel))
def get_auth_service(
self,
):
return AuthService(
user_repository=self.user_repository(),
token_repository=self.token_repository(),
)
def get_organization_service(
self,
):
return OrganizationService(self.organization_repository())
def get_role_service(
self,
):
return RoleService(self.role_repository())
def get_user_service(
self,
):
return UserService(self.user_repository(), self.role_repository())
def get_news_service(
self,
):
return NewsService(self.news_repository())
def get_file_service(
self,
):
return FileService(self.file_repository(), MinioClient())
def get_credential_service(
self,
):
return CredentialService(self.credential_repository())
def get_map_source_service(
self,
):
return MapSourceService(self.map_source_repository())
def get_map_projection_system_service(
self,
):
return MapProjectionSystemService(self.map_projection_system_repository())
def get_category_service(
self,
):
return CategoryService(self.category_repository())
def get_classification_service(
self,
):
return ClassificationService(self.classification_repository())
def get_regional_service(
self,
):
return RegionalService(self.regional_repository())
def get_mapset_service(
self,
):
return MapsetService(
self.mapset_repository(),
self.mapset_history_repository(),
self.map_source_usage_repository(),
self.get_file_service(),
)
def get_mapset_history_service(
self,
):
return MapsetHistoryService(self.mapset_history_repository())
def get_feedback_service(
self,
):
return FeedbackService(self.feedback_repository())
def get_count_service(
self,
):
# No repository dependencies needed for aggregated counts for now
return CountService()