from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker
from .config import get_settings


settings = get_settings()

engine: AsyncEngine = create_async_engine(
    str(settings.database_url),
    future=True,
    echo=False,
    pool_pre_ping=True,
)

AsyncSessionLocal = sessionmaker(
    bind=engine,
    class_=AsyncSession,
    expire_on_commit=False,
    autoflush=False,
    future=True,
)


async def get_db() -> AsyncSession:
    async with AsyncSessionLocal() as session:
        yield session
