| from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker | |
| from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column | |
| from datetime import datetime | |
| from app.config import settings | |
| engine = create_async_engine(settings.DATABASE_URL, echo=True) | |
| async_session_maker = async_sessionmaker(engine, expire_on_commit=False) | |
| class Base(DeclarativeBase): | |
| pass | |
| async def get_db(): | |
| async with async_session_maker() as session: | |
| try: | |
| yield session | |
| await session.commit() | |
| except Exception: | |
| await session.rollback() | |
| raise | |
| finally: | |
| await session.close() | |