\
from app.config import get_settings
from app.database import get_connection
from app.adapters.moodle import validar_campos_perfil


def main():
    settings = get_settings()
    print("DavidHL7 Connect - prueba de conexión")
    print("-----------------------------------")
    print(f"Host:       {settings.db_host}:{settings.db_port}")
    print(f"Moodle DB:  {settings.moodle_db}")
    print(f"Connect DB: {settings.connect_db}")
    print(f"Scope:      {settings.sync_scope}")
    print()

    connection = get_connection(settings)

    try:
        with connection.cursor() as cursor:
            cursor.execute("SELECT VERSION() AS version")
            version = cursor.fetchone()["version"]
            print(f"[OK] Conexión MariaDB/MySQL: {version}")

            cursor.execute(
                f"SELECT COUNT(*) AS total "
                f"FROM `{settings.connect_db}`.`dhc_contactos`"
            )
            total = cursor.fetchone()["total"]
            print(f"[OK] dhc_contactos accesible. Registros actuales: {total}")

        fields = validar_campos_perfil(connection, settings)
        required = {"celular", "consentimiento_comunicaciones"}
        missing = required - set(fields)

        if missing:
            print(f"[ERROR] Faltan campos Moodle: {', '.join(sorted(missing))}")
            raise SystemExit(1)

        print(
            "[OK] Campos Moodle encontrados: "
            + ", ".join(f"{name} (id={fields[name]})" for name in sorted(fields))
        )
        print()
        print("Todo listo para ejecutar la sincronización.")
    finally:
        connection.close()


if __name__ == "__main__":
    main()
