from app.config import get_settings
from app.database import get_connection


REQUIRED = {
    "dhc_cursos": {
        "id",
        "origen",
        "external_course_id",
        "shortname",
        "fullname",
        "fecha_inicio",
        "fecha_fin",
        "estado",
        "fecha_sincronizacion",
    },
    "dhc_matriculas": {
        "id",
        "contacto_id",
        "curso_id",
        "fecha_matricula",
        "primer_acceso",
        "ultimo_acceso",
        "progreso",
        "finalizado",
        "fecha_finalizacion",
        "estado",
        "fecha_sincronizacion",
    },
}


def main():
    settings = get_settings()
    connection = get_connection(settings)

    print("DavidHL7 Connect - validación académica")
    print("--------------------------------------")

    try:
        with connection.cursor() as cursor:
            for table, required_cols in REQUIRED.items():
                cursor.execute(
                    """
                    SELECT COLUMN_NAME
                    FROM information_schema.COLUMNS
                    WHERE TABLE_SCHEMA = %s
                      AND TABLE_NAME = %s
                    """,
                    (settings.connect_db, table),
                )
                actual = {row["COLUMN_NAME"] for row in cursor.fetchall()}
                missing = required_cols - actual

                if missing:
                    print(
                        f"[ERROR] {table}: faltan columnas: "
                        + ", ".join(sorted(missing))
                    )
                    raise SystemExit(1)

                print(f"[OK] {table}: estructura mínima válida")

        print()
        print("Todo listo para sincronizar cursos y matrículas.")
    finally:
        connection.close()


if __name__ == "__main__":
    main()
