from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession from sqlalchemy.orm import DeclarativeBase from app.core.config import settings # 1. Async Engine # "check_same_thread": False is required for SQLite engine = create_async_engine( settings.DATABASE_URL, echo=False, connect_args={"check_same_thread": False} if "sqlite" in settings.DATABASE_URL else {} ) # 2. Async Session Factory SessionLocal = async_sessionmaker( bind=engine, class_=AsyncSession, expire_on_commit=False, autoflush=False ) # 3. Base Model class Base(DeclarativeBase): pass # 4. Dependency Injection for FastAPI async def get_db(): async with SessionLocal() as session: yield session