import json
import os
import sys

# Directorio donde reside este script
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))

def generar_script_sql():
    archivo_entrada = os.path.join(SCRIPT_DIR, 'destinos_actualizados.json')
    archivo_salida = os.path.join(SCRIPT_DIR, 'actualizar_cp.sql')

    # Verificar que el archivo JSON existe
    if not os.path.isfile(archivo_entrada):
        print(f"[ERROR] No se encontró el archivo: {archivo_entrada}")
        sys.exit(1)

    print("Cargando datos del JSON...")
    with open(archivo_entrada, 'r', encoding='utf-8') as f:
        datos = json.load(f)

    print(f"Generando sentencias SQL para {len(datos)} registros...")
    
    # Abrimos el archivo SQL en modo escritura
    with open(archivo_salida, 'w', encoding='utf-8') as sql_file:
        sql_file.write("-- Script de actualización masiva de Códigos Postales\n")
        sql_file.write("-- Tabla: ge_clientes_destinos\n\n")
        
        actualizados = 0
        nulos = 0

        for item in datos:
            id_registro = item.get('id')
            cp = item.get('cp')

            # Si el ID no existe, saltamos el registro
            if id_registro is None:
                continue

            # Preparamos la sentencia dependiendo de si hay CP o no
            if cp and str(cp).strip() not in ('', 'None', 'null'):
                # Si hay CP, lo ponemos entre comillas simples
                cp_limpio = str(cp).strip()
                sql = f"UPDATE ge_clientes_destinos SET cp = '{cp_limpio}' WHERE id = {id_registro};\n"
                actualizados += 1
            else:
                # Si no hay CP, lo seteamos a NULL explícitamente para mantener limpieza
                sql = f"UPDATE ge_clientes_destinos SET cp = NULL WHERE id = {id_registro};\n"
                nulos += 1

            sql_file.write(sql)

    print("\n" + "="*45)
    print(f"  Archivo SQL generado: {os.path.basename(archivo_salida)}")
    print(f"  Updates con código postal: {actualizados}")
    print(f"  Updates con NULL (sin CP): {nulos}")
    print("="*45)
    print("Ya puedes importar/ejecutar el archivo .sql en tu base de datos.")

if __name__ == "__main__":
    generar_script_sql()