#from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_huggingface import HuggingFaceEmbeddings

from langchain_community.vectorstores import FAISS
from langchain_core.documents import Document

class VectorStore:
    def __init__(self):
        self.embeddings = HuggingFaceEmbeddings(
            model_name="sentence-transformers/all-MiniLM-L6-v2"
        )

    def create_store(self, documentos_raw: list):
        documents = []

        print(f"Total de documentos crudos: {len(documentos_raw)}")

        for i, doc in enumerate(documentos_raw):
            contenido = doc.get("contenido")

            texto = None
            if isinstance(contenido, dict):
                # 👇 aquí está el fix: accedemos a 'tweet', no a 'texto'
                texto = contenido.get("tweet")
            elif isinstance(contenido, str):
                texto = contenido
            else:
                print(f"[{i}] Contenido no válido: {contenido}")

            if texto and isinstance(texto, str) and texto.strip():
                documents.append(Document(page_content=texto))
            else:
                print(f"[{i}] Texto no válido o vacío.")

        print(f"Documentos válidos para FAISS: {len(documents)}")

        if not documents:
            raise ValueError("No se encontraron documentos con contenido válido para crear el vector store.")

        return FAISS.from_documents(documents, self.embeddings)
