from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine from sqlalchemy.orm import DeclarativeBase from app.config import get_settings class Base(DeclarativeBase): pass def create_engine(): settings = get_settings() return create_async_engine( settings.database_url, pool_size=10, max_overflow=20, pool_pre_ping=True, echo=settings.is_development, ) def create_session_factory(engine): return async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False, autoflush=False, )