mail/app/db.py
deeily 5024bf9a8d init: full mail stack — phases 0..8 (web client, admin, IMAP/SMTP,
sieve, search, sessions, dramatiq, deploy/install, ELK, monitoring)
2026-04-29 16:30:43 +03:00

33 lines
814 B
Python

"""SQLAlchemy engine + scoped session for the app."""
from __future__ import annotations
from sqlalchemy import create_engine
from sqlalchemy.orm import DeclarativeBase, scoped_session, sessionmaker
class Base(DeclarativeBase):
pass
_engine = None
_Session: scoped_session | None = None
def init_engine(url: str):
global _engine, _Session
_engine = create_engine(url, pool_pre_ping=True, future=True)
_Session = scoped_session(sessionmaker(bind=_engine, expire_on_commit=False, future=True))
return _engine
def get_engine():
if _engine is None:
raise RuntimeError("Engine not initialized — call init_engine() in create_app")
return _engine
def db_session():
if _Session is None:
raise RuntimeError("Session factory not initialized")
return _Session