Spaces:
Sleeping
Sleeping
| from collections.abc import Iterator | |
| from contextlib import contextmanager | |
| from sqlalchemy import Engine, create_engine | |
| from sqlalchemy.orm import Session, sessionmaker | |
| from backend.config import get_settings | |
| def get_engine(url: str | None = None) -> Engine: | |
| settings = get_settings() | |
| database_url = url or settings.database_url | |
| connect_args: dict[str, object] = {} | |
| if database_url.startswith("sqlite"): | |
| connect_args = {"check_same_thread": False} | |
| return create_engine(database_url, connect_args=connect_args) | |
| def get_session(engine: Engine) -> Iterator[Session]: | |
| factory = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| session = factory() | |
| try: | |
| yield session | |
| session.commit() | |
| except Exception: | |
| session.rollback() | |
| raise | |
| finally: | |
| session.close() | |