from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine from sqlalchemy.orm import DeclarativeBase from app.config import get_settings _engine = None _session_factory = None class Base(DeclarativeBase): pass def get_engine(): global _engine if _engine is None: settings = get_settings() _engine = create_async_engine(settings.database_url, echo=False) return _engine def get_session_factory(): global _session_factory if _session_factory is None: _session_factory = async_sessionmaker(get_engine(), expire_on_commit=False) return _session_factory