from sqlalchemy.ext.asyncio import AsyncSession from fastapi import Depends from .db import get_db_session from .repository import Repository class Context: """ Main API context, aggregating dependencies """ def __init__(self, repo: Repository) -> None: self.repo = repo class ContextDependency: """ Configurable context dependecy. Allows for shared interface configuring method required dependencies """ def __init__( self, ) -> None: pass def __call__( self, session: AsyncSession = Depends(get_db_session), ): return Context(repo=Repository(session))