Files
catan/services/common/db.py
dan e5e52ed1fe
Some checks failed
ci / tests (push) Has been cancelled
Fix auth hashing and lobby runtime handling
2025-12-25 03:30:51 +03:00

26 lines
596 B
Python

from __future__ import annotations
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlmodel import Session
from .settings import settings
engine = create_engine(settings.database_url, pool_pre_ping=True)
SessionLocal = sessionmaker(bind=engine, class_=Session, expire_on_commit=False)
@contextmanager
def session_scope() -> Session:
session = SessionLocal()
try:
yield session
session.commit()
except Exception:
session.rollback()
raise
finally:
session.close()