CliniqAl / app /db /session.py
jsuryanm's picture
fix: chat inference to respond user queries, nurses tab for rostering,discharge,handover works
609f985
Raw
History Blame Contribute Delete
943 Bytes
"""SQLAlchemy engine + session factory."""
from __future__ import annotations
import os
from collections.abc import Iterator
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy.orm import Session, sessionmaker
_DEFAULT_URL = "postgresql+psycopg://cliniq:cliniq@localhost:5432/cliniq"
def database_url() -> str:
return os.getenv("DATABASE_URL", _DEFAULT_URL)
engine = create_engine(database_url(), pool_pre_ping=True, future=True)
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, future=True)
def get_session() -> Iterator[Session]:
"""FastAPI dependency."""
s = SessionLocal()
try:
yield s
finally:
s.close()
@contextmanager
def session_scope():
session = SessionLocal()
try:
yield session
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()