from pymongo import MongoClient
from app.actualizacion_productos.conexion_milvus import insertar_productos_en_milvus

from dotenv import load_dotenv
import os
load_dotenv()
MONGO_URI=os.getenv("MONGO_URI")
MONGO_DB=os.getenv("MONGO_DB")

def actualizar_productos(collectionName: str):
    print('Hola desde el módulo actualizar_mulvus', collectionName)
    result = consultar_productos(collectionName)
    data = list(result)
    if len(data) == 0:
        return {"message": "No hay productos para actualizar", "data":data}
    
    insertar_productos_en_milvus(data)
    return {"message":collectionName, "message": "Productos actualizados"}

def consultar_productos(collectionName: str):
    client = MongoClient(MONGO_URI)
    db = client[MONGO_DB]
    collection = db[collectionName]
    
    collection.create_index([("embeddings", 1)])

    fields_to_include = {
        "_id": 1,  
        "productDescription": 1, 
        "skuId":1,
        "title": 1,
        "rpxCode": 1,
        "summary": 1,
        "category": 1,
        "globalCategory": 1,
        "subCategory": 1,
        "productType": 1,
        "brand": 1,
        "link": 1,
        "imageLink": 1,
        "embeddings": 1,
    }

    # result = collection.find()
    query = {"embeddings": {"$ne": None, "$not": {"$size": 0}}}
    count = collection.count_documents(query)
    result = collection.find(query, fields_to_include).batch_size(100)

    print("Productos encontrados:", count)
    return result

    
    # result = collection.find({}, fields_to_include).limit(10)  # Limitar a 10 resultados
    # return result