from sqlalchemy.ext.asyncio import AsyncAttrs, async_sessionmaker, create_async_engine from sqlalchemy.orm import DeclarativeBase from src.core.config import settings connect_args = {} if settings.DATABASE_SCHEMA: connect_args["server_settings"] = {"search_path": settings.DATABASE_SCHEMA} if "sqlite" in settings.DATABASE_URL: connect_args["check_same_thread"] = False engine = create_async_engine( settings.DATABASE_URL, pool_pre_ping=True, pool_size=5, max_overflow=10, connect_args=connect_args, ) SessionLocal = async_sessionmaker( autoflush=False, bind=engine, expire_on_commit=False, ) class Base(AsyncAttrs, DeclarativeBase): pass