Spaces:
Sleeping
Sleeping
| """Use case dependency container.""" | |
| from typing import Any | |
| from .extract_audio_async import ExtractAudioAsyncUseCase | |
| from .process_job import ProcessJobUseCase | |
| from .check_job_status import CheckJobStatusUseCase | |
| from .download_audio_result import DownloadAudioResultUseCase | |
| from domain.services.validation_service import ValidationService | |
| from infrastructure.services.container import ServiceContainer | |
| class UseCaseContainer: | |
| """Container for all application use cases.""" | |
| def __init__(self, services: ServiceContainer, settings: Any): | |
| self.services = services | |
| self.settings = settings | |
| # Create validation service | |
| self.validation_service = ValidationService( | |
| max_file_size_mb=settings.max_direct_file_size_mb * 100, # Allow larger files for async | |
| supported_video_formats=settings.supported_video_formats, | |
| supported_audio_formats=settings.supported_audio_formats | |
| ) | |
| # Initialize use cases | |
| self._init_use_cases() | |
| def _init_use_cases(self): | |
| """Initialize all use cases with dependencies.""" | |
| # Process job use case (updated with notification service) | |
| self.process_job = ProcessJobUseCase( | |
| job_repository=self.services.job_repository, | |
| ffmpeg_service=self.services.ffmpeg_service, | |
| file_repository=self.services.file_repository, | |
| notification_service=self.services.notification_service # Added notification service | |
| ) | |
| # Async extraction use case | |
| self.extract_audio_async = ExtractAudioAsyncUseCase( | |
| job_repository=self.services.job_repository, | |
| validation_service=self.validation_service, | |
| process_job_use_case=self.process_job | |
| ) | |
| # Status checking use case | |
| self.check_job_status = CheckJobStatusUseCase( | |
| job_repository=self.services.job_repository | |
| ) | |
| # Download use case (updated with new dependencies) | |
| self.download_audio_result = DownloadAudioResultUseCase( | |
| job_repository=self.services.job_repository, | |
| file_repository=self.services.file_repository, | |
| validation_service=self.validation_service, | |
| ffmpeg_service=self.services.ffmpeg_service, | |
| audio_mime_types=self.settings.audio_mime_types | |
| ) |