Spaces:
Sleeping
Sleeping
| 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() | |