"""SQLAlchemy async DB setup (MySQL/MariaDB primary, works with any SQL DB via DATABASE_URL)."""
import os
from pathlib import Path
from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession
from sqlalchemy.orm import DeclarativeBase
from dotenv import load_dotenv

load_dotenv(Path(__file__).parent / ".env")

# Default: local MariaDB. In production change DATABASE_URL in .env to your MySQL server.
# Example: mysql+aiomysql://user:password@host:3306/dbname
DATABASE_URL = os.environ.get(
    "DATABASE_URL",
    "mysql+aiomysql://randevu:randevu_pass_2025@127.0.0.1:3306/randevu",
)

engine = create_async_engine(
    DATABASE_URL,
    pool_pre_ping=True,
    pool_recycle=3600,
    echo=False,
)

SessionLocal = async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)


class Base(DeclarativeBase):
    pass


async def get_session() -> AsyncSession:
    async with SessionLocal() as session:
        yield session
