Numidium / app /api /deps.py
Madras1's picture
Upload 63 files
270c1c7 verified
raw
history blame contribute delete
908 Bytes
"""
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()