from contextlib import contextmanager from typing import Generator from AllConfigs.SqlDatabase.configs import WagDatabase from sqlalchemy import create_engine from sqlalchemy.orm import Session, sessionmaker from sqlalchemy.ext.declarative import declarative_base engine_config: dict[str, object] = { "url": WagDatabase.DATABASE_URL, "pool_size": 20, "max_overflow": 10, "echo": True, "echo_pool": True, "isolation_level": "READ COMMITTED", "pool_pre_ping": True, } engine = create_engine(**engine_config) SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False) Base = declarative_base() @contextmanager def get_db() -> Generator[Session, None, None]: """Get database session with context management.""" db = SessionLocal() try: yield db finally: db.close()