dependencies.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  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, HTTPException
  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. def _env_file() -> str:
  11. return os.getenv("CK_ENV_FILE", ".env")
  12. def get_creation_db_config() -> CreationDbConfig:
  13. return CreationDbConfig.from_env(_env_file())
  14. def get_db_connection() -> Iterator[object]:
  15. with pooled_transaction(get_creation_db_config()) as conn:
  16. yield conn
  17. def get_acquisition_repository(conn: object = Depends(get_db_connection)) -> PostgresAcquisitionRepository:
  18. return PostgresAcquisitionRepository(conn)
  19. def get_decode_repository(conn: object = Depends(get_db_connection)) -> PostgresDecodeRepository:
  20. return PostgresDecodeRepository(conn)
  21. def get_pipeline_repository():
  22. raise HTTPException(status_code=501, detail="pipeline repository persistence is wired in Step 7")