from typing import Generator from sqlalchemy import create_engine from sqlalchemy.orm import Session, sessionmaker from app.core.config import settings from app.models.ecg import Base # Synchronous engine for database connections (works with SQLite reliably here) engine = create_engine( settings.DATABASE_URL, echo=False, future=True, ) # Session factory SessionLocal = sessionmaker( bind=engine, autocommit=False, autoflush=False, ) def get_session() -> Generator[Session, None, None]: """ FastAPI dependency providing a synchronous Session. """ db = SessionLocal() try: yield db finally: db.close() def init_db() -> None: """ Create database tables on startup. """ Base.metadata.create_all(bind=engine) def close_engine() -> None: """ Dispose of the engine on shutdown. """ engine.dispose()