from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from app.core.config import settings

# Létrehozzuk az aszinkron motort (Engine) a configban megadott URL alapján
engine = create_async_engine(settings.DATABASE_URL, echo=False, future=True)

# Létrehozzuk a Session Factory-t (ez gyártja a kapcsolatokat)
AsyncSessionLocal = async_sessionmaker(
    engine, 
    class_=AsyncSession, 
    expire_on_commit=False, 
    autoflush=False
)

# Ez a Dependency Injection (Függőség beszúrás) a Routerek számára
# Minden API hívásnál kapunk egy tiszta adatbázis kapcsolatot
async def get_db():
    async with AsyncSessionLocal() as session:
        yield session