from typing import AsyncGenerator from fastapi import Depends from sqlalchemy.ext.asyncio import AsyncSession from app.auth.noop import NoOpAuthProvider from app.auth.provider import AuthProvider from app.database import get_session_factory from app.storage.backend import StorageBackend from app.storage.s3_backend import S3StorageBackend _storage: StorageBackend | None = None _auth: AuthProvider | None = None def get_storage() -> StorageBackend: global _storage if _storage is None: _storage = S3StorageBackend() return _storage def get_auth() -> AuthProvider: global _auth if _auth is None: _auth = NoOpAuthProvider() return _auth async def get_db() -> AsyncGenerator[AsyncSession, None]: factory = get_session_factory() async with factory() as session: async with session.begin(): yield session