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()