from __future__ import annotations from contextlib import contextmanager from sqlalchemy import create_engine from sqlalchemy.orm import Session, sessionmaker from .settings import settings engine = create_engine(settings.database_url, pool_pre_ping=True) SessionLocal = sessionmaker(bind=engine, class_=Session, expire_on_commit=False) @contextmanager def session_scope() -> Session: session = SessionLocal() try: yield session session.commit() except Exception: session.rollback() raise finally: session.close()