File size: 908 Bytes
270c1c7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
"""
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()
|