dependencies.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. """FastAPI dependencies for the formal cloud workbench."""
  2. from __future__ import annotations
  3. import os
  4. from typing import Iterator
  5. from fastapi import Depends
  6. from acquisition.repositories.postgres import PostgresAcquisitionRepository
  7. from core.config import CreationDbConfig
  8. from core.db_session import pooled_transaction
  9. from decode_content.repositories.postgres import PostgresDecodeRepository
  10. from pipeline.postgres import PostgresPipelineRepository
  11. def _env_file() -> str:
  12. return os.getenv("CK_ENV_FILE", ".env")
  13. def get_creation_db_config() -> CreationDbConfig:
  14. return CreationDbConfig.from_env(_env_file())
  15. def get_db_connection() -> Iterator[object]:
  16. with pooled_transaction(get_creation_db_config()) as conn:
  17. yield conn
  18. def get_acquisition_repository(conn: object = Depends(get_db_connection)) -> PostgresAcquisitionRepository:
  19. return PostgresAcquisitionRepository(conn)
  20. def get_decode_repository(conn: object = Depends(get_db_connection)) -> PostgresDecodeRepository:
  21. return PostgresDecodeRepository(conn)
  22. def get_pipeline_repository(conn: object = Depends(get_db_connection)) -> PostgresPipelineRepository:
  23. return PostgresPipelineRepository(conn)