from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, DeclarativeBase from typing import Generator from app.config import get_settings settings = get_settings() engine = create_engine( settings.DATABASE_URL, echo=settings.DEBUG, pool_pre_ping=True, pool_size=10, max_overflow=20, pool_recycle=900, pool_timeout=30, ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) class Base(DeclarativeBase): pass def get_db() -> Generator: db = SessionLocal() try: yield db db.commit() except Exception: db.rollback() raise finally: db.close()