| from typing import AsyncGenerator | |
| from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine, async_sessionmaker, AsyncSession | |
| from sqlalchemy.orm import declarative_base | |
| from project.config import settings | |
| Base = declarative_base() | |
| def get_async_engine(url: str) -> AsyncEngine: | |
| return create_async_engine(url=url, echo=True, pool_pre_ping=True) | |
| def get_async_sessionmaker(engine: AsyncEngine) -> async_sessionmaker: | |
| return async_sessionmaker(bind=engine, class_=AsyncSession) | |
| engine = get_async_engine( | |
| settings.DATABASE_URL | |
| ) | |
| async_session_maker = get_async_sessionmaker(engine) | |
| async def get_async_session() -> AsyncSession: | |
| async with async_session_maker() as session: | |
| return session | |