from pathlib import Path from collections.abc import Generator from sqlmodel import Session, SQLModel, create_engine from app.config import settings _db_path = settings.database_url.replace("sqlite:///", "") Path(_db_path).parent.mkdir(parents=True, exist_ok=True) _default_engine = create_engine( settings.database_url, connect_args={"check_same_thread": False}, echo=False, ) # Engine mutable pour permettre le remplacement en tests _engine_holder: dict = {"engine": _default_engine} def get_engine(): return _engine_holder["engine"] def set_engine(engine): _engine_holder["engine"] = engine def create_db_and_tables(): SQLModel.metadata.create_all(get_engine()) def get_session() -> Generator[Session, None, None]: with Session(get_engine()) as session: yield session