| """ | |
| API dependencies. | |
| """ | |
| from typing import Generator, Optional | |
| from fastapi import Cookie, Header | |
| from sqlalchemy.orm import Session | |
| from app.core.database import get_db_for_session, get_default_session | |
| def get_session_id( | |
| x_session_id: Optional[str] = Header(None), | |
| numidium_session: Optional[str] = Cookie(None) | |
| ) -> Optional[str]: | |
| """Return the session id from header or cookie.""" | |
| return x_session_id or numidium_session | |
| def get_scoped_db( | |
| x_session_id: Optional[str] = Header(None), | |
| numidium_session: Optional[str] = Cookie(None) | |
| ) -> Generator[Session, None, None]: | |
| """ | |
| Provide a session-scoped DB if available, otherwise the default DB. | |
| """ | |
| session_id = x_session_id or numidium_session | |
| if session_id: | |
| db = get_db_for_session(session_id) | |
| else: | |
| db = get_default_session() | |
| try: | |
| yield db | |
| finally: | |
| db.close() | |