"""SQLAlchemy async engine and session factory.""" from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine from shared.config import BaseConfig def create_db(config: BaseConfig) -> tuple: """Create an async engine and session factory from the given config. Returns a ``(engine, session_factory)`` tuple. """ engine = create_async_engine( config.database_url, echo=config.log_level == "DEBUG", ) session_factory = async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False, ) return engine, session_factory