#!/usr/bin/env python3
"""Diagnóstico seguro para la instalación en cPanel."""

import importlib.util
import os
import sys
from pathlib import Path

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

print("=== Diagnóstico cPanel — U.E.N. Alberto Smith ===")
print(f"Python: {sys.version.split()[0]}")
print(f"Carpeta: {ROOT}")

required = [
    "fastapi",
    "sqlalchemy",
    "argon2",
    "jinja2",
    "multipart",
    "dotenv",
    "a2wsgi",
]
missing = [name for name in required if importlib.util.find_spec(name) is None]
if missing:
    print("ERROR: faltan dependencias:", ", ".join(missing))
    print("Ejecute: pip install -r requirements.txt")
    raise SystemExit(1)

try:
    from sqlalchemy import text
    from app.config import settings
    from app.database import Base, SessionLocal, engine
    from app.services.seed import seed_database

    if settings.secret_key == "CAMBIAR-ESTA-CLAVE-EN-PRODUCCION":
        raise RuntimeError("Debe cambiar SECRET_KEY en cpanel.env.")
    if settings.admin_password == "Cambiar123!":
        raise RuntimeError("Debe cambiar ADMIN_PASSWORD en cpanel.env.")

    Base.metadata.create_all(bind=engine)
    with SessionLocal() as db:
        seed_database(db)
        db.execute(text("SELECT 1"))
        db.commit()

    db_type = "SQLite" if settings.database_url.startswith("sqlite") else "MySQL/MariaDB/PostgreSQL"
    print(f"Base de datos: {db_type} conectada correctamente")
    print("Datos iniciales: preparados correctamente")
    print("RESULTADO: instalación lista para iniciar con Passenger.")
except Exception as exc:
    print(f"ERROR: {type(exc).__name__}: {exc}")
    raise SystemExit(2)
