from __future__ import annotations from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker, create_async_engine from backend.config.settings import DatabaseSettings def create_engine(settings: DatabaseSettings) -> AsyncEngine: return create_async_engine( settings.url, pool_pre_ping=True, future=True, ) def create_session_factory(engine: AsyncEngine) -> async_sessionmaker[AsyncSession]: return async_sessionmaker(engine, expire_on_commit=False)