from cnxpdo import get_connection
import math
async def obtener_descartados(data):
    conexion = None
    cursor = None
    
    try:
        conexion = get_connection()
        if conexion is None:
            return {"success": False, "message": "Error de conexión a la base de datos"}

        cursor_val = data.get("cursor")
        page_size = data.get("pageSize", 5)

        # Convertir cursor a int si existe
        cursor_id = int(cursor_val) if cursor_val is not None else None

        cursor = conexion.cursor(dictionary=True)

        query = """
            SELECT *
            FROM descartados_contactabilidad AS t 
        """
        params = []  # Lista de parámetros para execute
        
        # Si hay cursor, agregar condición para paginación
        if cursor_id is not None:
            query += " WHERE t.id > %s"
            params.append(cursor_id)

        # Agregar orden y límite
        query += """
            ORDER BY 
                t.id DESC
            LIMIT %s
        """
        params.append(page_size)

        # Ejecutar la query con parámetros como tupla
        cursor.execute(query, tuple(params))
        registros = cursor.fetchall()

        # Consulta de conteo (independiente de la paginación)
        count_query = """
            SELECT COUNT(*) AS total
            FROM descartados_contactabilidad 
        """
        cursor.execute(count_query)
        total = cursor.fetchone()['total']
        
        # Calcular nextCursor
        next_cursor = None

        if len(registros) == page_size and registros:  # Si hay exactamente page_size, asumir que hay más
            next_cursor = registros[-1]['id']  # El último id es el cursor para la siguiente página
        
        return {
            "success": True,
            "message": f"Se encontraron descartados",
            "data": registros,
            "totalRecords": total,
            "nextCursor": next_cursor,
        }
    
    except Exception as e:
        return {
            "success": False,
            "message": f"Error: {str(e)}"
        }
    
    finally:
        if cursor:
            cursor.close()
        if conexion:
            conexion.close()