import socket
import mysql.connector
from datetime import datetime

DB_HOST = "10.2.12.220"
DB_USER = "gps"
DB_PASSWORD = "q1w2e3r4"
DB_NAME = "gps_reportes"
id_unico = 0

TOTAL_PAQUETES = 100
DNS = "nlb-recepcion-tcp-98af84506c9b42a6.elb.us-east-1.amazonaws.com"
PUERTO = 7001

try:
    mydb = mysql.connector.connect(
        host=DB_HOST,
        user=DB_USER,
        password=DB_PASSWORD,
        database=DB_NAME
    )
    mycursor = mydb.cursor()
# si por variabl recibo un numero de cliente ( por consola) 
#busco en la tabla clientes el idcliente
# busco en la tabla asig:di
#
#SELECT d.disp_id FROM moviles AS a
#INNER JOIN clientes b ON a.`Movil_IdCliente` = b.`IdCliente`
#INNER JOIN `asignacion_dispositivo` c ON a.`IdMovil` = c.`AsigDisp_IdMovil`#
#INNER JOIN `dispositivos` d ON c.`AsigDisp_IdDispositivo` = d.`IdDispositivo`
#WHERE b.`Clie_NumeroOtroSistema` = '0141120'
#AND a.`Movil_Estado` = 1

#si a persona elijo un numero usar esa consulta para obtener los id  sino enviar los aletorios.

    # Modificar la consulta SELECT para traer solo las tablas NO optimizadas
    mycursor.execute(
        """
        SELECT reporte_iddisp FROM ultima_posicion ORDER BY reporte_fechagps DESC LIMIT 100;
        """
    )

    tables = mycursor.fetchall()

    print("\n--- tomando datos de los imeim para copiar a aws ---")  # Mensaje general de optimización

    for table_tuple in tables:
        table_name = table_tuple[0]
        print(f"  tomo dato de la tabla : LOG_{table_name}")
        optimize_query = f"SELECT reporte_completo FROM LOG_{table_name} ORDER BY reporte_fechagps DESC LIMIT 100;"
        mycursor.execute(optimize_query)
        result = mycursor.fetchall()
        print(f" Enviado paquetes a AWS")
        
        for row in result:
            id_unico = id_unico + 1
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.settimeout(2)
            sock.connect((DNS, PUERTO))
            sock.sendall(row[0].encode())
            sock.close()
            print(f"[✓] ID enviado: {id_unico}")  # Comentado para mejor rendimiento
        
         

finally:
    if mydb.is_connected():
        mycursor.close()
        mydb.close()