from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, sessionmaker from .config import get_settings class Base(DeclarativeBase): pass def engine_for(url: str | None = None): url = url or get_settings().database_url return create_engine(url, connect_args={"check_same_thread": False} if url.startswith("sqlite") else {}, pool_pre_ping=True) engine = engine_for() SessionLocal = sessionmaker(bind=engine, autoflush=False, expire_on_commit=False) def get_db(): with SessionLocal() as session: yield session