"""
Gestion de la base de données SQLite pour l'application Versailles Airsoft.
Fournit le moteur SQLAlchemy, la session et la dépendance get_db pour FastAPI.
"""

import os
from dotenv import load_dotenv
from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base, sessionmaker

load_dotenv()

DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./airsoft.db")

# Configuration pour SQLite (gestion multi-threads avec FastAPI)
connect_args = {"check_same_thread": False} if DATABASE_URL.startswith("sqlite") else {}

engine = create_engine(
    DATABASE_URL,
    connect_args=connect_args,
    echo=False
)

SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Base = declarative_base()


def get_db():
    """Dépendance FastAPI pour obtenir une session de base de données."""
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()


def init_db():
    """Initialise les tables dans la base de données SQLite."""
    import models  # noqa: F401
    Base.metadata.create_all(bind=engine)
