22 lines
766 B
Python
22 lines
766 B
Python
from sqlalchemy.ext.asyncio import async_sessionmaker
|
|
from sqlalchemy.ext.asyncio.engine import create_async_engine
|
|
from sqlalchemy.ext.asyncio.session import AsyncSession
|
|
from typing import AsyncGenerator
|
|
from src.infrastructure.config import settings
|
|
|
|
|
|
engine = create_async_engine(
|
|
settings.DATABASE_URL,
|
|
pool_size=settings.DATABASE_POOL_SIZE,
|
|
max_overflow=settings.DATABASE_MAX_OVERFLOW,
|
|
pool_timeout=settings.DATABASE_POOL_TIMEOUT,
|
|
pool_recycle=settings.DATABASE_POOL_RECYCLE,
|
|
echo=settings.DATABASE_ECHO
|
|
)
|
|
|
|
async_session_maker = async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)
|
|
|
|
|
|
async def get_session() -> AsyncGenerator[AsyncSession, None]:
|
|
async with async_session_maker() as session:
|
|
yield session |