Tadeas Kosek
implement n8n client
fca9e8c
"""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
)