from __future__ import annotations

import asyncio
import os
import sys
from pathlib import Path

import asyncpg

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))
os.chdir(ROOT)

from backend.app.config import get_settings  # noqa: E402


async def main() -> None:
    settings = get_settings()
    sql_path = ROOT / "sql" / "005_upgrade_v026.sql"
    if not sql_path.is_file():
        raise FileNotFoundError(sql_path)

    connection = await asyncpg.connect(
        host=settings.pghost,
        port=settings.pgport,
        database=settings.pgdatabase,
        user=settings.pguser,
        password=settings.pgpassword,
        ssl=False if settings.pgsslmode == "disable" else settings.pgsslmode,
    )
    try:
        print("Application de la mise a niveau SQL V0.2.6...")
        await connection.execute(sql_path.read_text(encoding="utf-8"))
        tariff_count = await connection.fetchval(
            "SELECT count(*) FROM frelons.tarifs_intervention WHERE actif = true"
        )
        quote_table = await connection.fetchval(
            """
            SELECT EXISTS (
              SELECT 1 FROM information_schema.tables
              WHERE table_schema = 'frelons' AND table_name = 'devis_intervention'
            )
            """
        )
        print(f"Tarifs actifs : {tariff_count}")
        print(f"Table des devis : {'disponible' if quote_table else 'absente'}")
        print("Mise a niveau V0.2.6 terminee.")
    finally:
        await connection.close()


if __name__ == "__main__":
    asyncio.run(main())
