Files
HermesMessages/backend/app/core/database.py

31 lines
724 B
Python
Raw Normal View History

from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from sqlalchemy.orm import DeclarativeBase
from app.core.config import settings
class Base(DeclarativeBase):
pass
_engine = None
_session_factory = None
def get_engine():
global _engine
if _engine is None:
_engine = create_async_engine(
settings.DATABASE_URL,
echo=settings.ENVIRONMENT == "development",
)
return _engine
async def get_db() -> AsyncSession:
global _session_factory
if _session_factory is None:
_session_factory = async_sessionmaker(get_engine(), expire_on_commit=False)
async with _session_factory() as session:
yield session