from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from sqlalchemy.orm import DeclarativeBase from app.core.config import settings # 1. Aszinkron motor létrehozása # A "future=True" biztosítja a kompatibilitást a legújabb SQLAlchemy verziókkal engine = create_async_engine( settings.DATABASE_URL, echo=False, # Állítsd True-ra, ha látni akarod az SQL lekérdezéseket a logban future=True ) # 2. Session Factory (ez gyártja a kapcsolatokat a kérésekhez) AsyncSessionLocal = async_sessionmaker( bind=engine, class_=AsyncSession, expire_on_commit=False, autoflush=False ) # 3. Base osztály (minden adatbázis modell ebből fog öröklődni) class Base(DeclarativeBase): pass # 4. Dependency (Ezt használjuk majd a FastAPI végpontokban: Depends(get_db)) async def get_db(): async with AsyncSessionLocal() as session: try: yield session # Ha sikeres, a tranzakció commitolódik (ha explicit kérjük) except Exception: await session.rollback() raise finally: await session.close()