from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession from sqlalchemy.orm import DeclarativeBase from .config import get_settings class Base(DeclarativeBase): pass def create_engine_and_session(): settings = get_settings() engine = create_async_engine( settings.database_url, connect_args={"check_same_thread": False}, echo=False, ) session_factory = async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession) return engine, session_factory engine, AsyncSessionLocal = create_engine_and_session() async def init_db(): async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all)