from app.config import settings from fastapi import Depends from sqlalchemy.orm import Session from packages.adapters.sqlalchemy_impl.asset_library_repository import ( SQLAlchemyAssetLibraryRepository, ) from packages.adapters.sqlalchemy_impl.asset_repository import SQLAlchemyAssetRepository from packages.adapters.sqlalchemy_impl.classification_job_repository import ( SQLAlchemyClassificationJobRepository, ) from packages.adapters.sqlalchemy_impl.generated_video_repository import ( SQLAlchemyGeneratedVideoRepository, ) from packages.adapters.sqlalchemy_impl.generation_task_repository import ( SQLAlchemyGenerationTaskRepository, ) from packages.adapters.sqlalchemy_impl.ingest_job_repository import ( SQLAlchemyIngestJobRepository, ) from packages.adapters.sqlalchemy_impl.project_repository import ( SQLAlchemyProjectRepository, ) from packages.adapters.sqlalchemy_impl.session import build_session_factory _engine, _SessionLocal = build_session_factory(settings.DATABASE_URL) def get_db_session(): session: Session = _SessionLocal() try: yield session finally: session.close() def get_asset_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyAssetRepository: return SQLAlchemyAssetRepository(session) def get_asset_library_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyAssetLibraryRepository: return SQLAlchemyAssetLibraryRepository(session) def get_ingest_job_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyIngestJobRepository: return SQLAlchemyIngestJobRepository(session) def get_classification_job_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyClassificationJobRepository: return SQLAlchemyClassificationJobRepository(session) def get_generation_task_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyGenerationTaskRepository: return SQLAlchemyGenerationTaskRepository(session) def get_generated_video_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyGeneratedVideoRepository: return SQLAlchemyGeneratedVideoRepository(session) def get_project_repository( session: Session = Depends(get_db_session), ) -> SQLAlchemyProjectRepository: return SQLAlchemyProjectRepository(session)