import json
import os

from base_de_donnees_vectorielle.modele import Document

def charger_document(chemin: str) -> Document:
    """
    Charge un document JSON depuis le disque.

    :param chemin: Chemin du fichier JSON.
    :return: Document chargé.
    """
    with open(chemin, "r", encoding="utf-8") as fichier:
        contenu = json.load(fichier)
    return Document(url=contenu["url"],
                    texte=contenu["texte"]
                    )


def charger_corpus(repertoire: str = "corpus") -> list[Document]:
    """
    Charge tous les documents JSON d'un répertoire.

    :param repertoire: Répertoire contenant les documents.
    :return: Liste de documents.
    """
    if not os.path.exists(repertoire):
        return []
    documents: list[Document] = []
    for nom_fichier in sorted(os.listdir(repertoire)):
        if nom_fichier.endswith(".json"):
            chemin = os.path.join(repertoire, nom_fichier)
            documents.append(charger_document(chemin))
    return documents
