Files
platform-api/app/core/database.py
Platform CI f9bfc3afbd init
2026-02-21 17:54:44 -05:00

36 lines
901 B
Python

from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy.orm import DeclarativeBase
from .config import get_settings
class Base(DeclarativeBase):
pass
def get_engine():
settings = get_settings()
return create_async_engine(settings.DATABASE_URL, pool_size=10, max_overflow=20, echo=False)
_engine = None
_session_factory = None
def get_session_factory():
global _engine, _session_factory
if _session_factory is None:
_engine = get_engine()
_session_factory = async_sessionmaker(_engine, expire_on_commit=False, class_=AsyncSession)
return _session_factory
async def get_db():
factory = get_session_factory()
async with factory() as session:
try:
yield session
await session.commit()
except Exception:
await session.rollback()
raise