diff --git a/db/Database.js b/db/Database.js index 42d103801a6f774d246676378d5f87b197078618..948635d7b2ef047f06f606227663452f8f6d6fb9 100644 --- a/db/Database.js +++ b/db/Database.js @@ -37,18 +37,53 @@ class Database{ console.log("Collections créées !"); } + + // stockage des References _id doc + async createDocument(userId, documentData) { + const document = { + ...documentData, + auteur: userId, // Ici, userId est l'_id de l'utilisateur dans la collection 'users' + }; + const result = await this.insert('documents', document); + return result.insertedId; // Retourne l'ID du nouveau document créé + } + + //Recuperer les DOnnees liees de doc + async getDocumentWithAuthor(documentId) { + const document = await this.find('documents', { _id: new this.#client.ObjectId(documentId) }); + if(!document) throw new Error("Document n'est pas trouve"); + const user = await this.findOne('users', { _id: new this.#client.ObjectId(document.auteur) }); + if(!user) throw new Error("Auteur n'est pas trouve"); + return { + ...document, + auteur: user + }; + } + + // Gestion des Collections + async createPartage(userId, documentId) { + await this.insert('partage', { userId, documentId }); + } + async insert(collection, data){ - await this.#db.collection(collection).insertOne(data); + const result = await this.#db.collection(collection).insertOne(data); + return result.insertedId; // Retourne l'ID du document inséré } async insertMany(collection, data){ - await this.#db.collection(collection).insertMany(data); + const result = await this.#db.collection(collection).insertMany(data); + return result.insertedId; // Retourne l'ID du document inséré } async find(collection, query){ return await this.#db.collection(collection).find(query).toArray(); } + async findOne(collection, query) { + return await this.#db.collection(collection).findOne(query); + } + + } db = new Database("mongodb://127.0.0.1:27017/test?retryWrites=true&w=majority"); diff --git a/modele/Document.js b/modele/Document.js index 9505b2140873f9fdbba74d7ee819607d3490f690..29a2e4484ac12ee6a027c1f0b76e7b6fe3bffd45 100644 --- a/modele/Document.js +++ b/modele/Document.js @@ -19,6 +19,16 @@ class Document extends Component{ //TODO: historique des commandes } + async create(db) { + try { + const documentData = this.toJSON(); + this.#id = await db.createDocument(this.#auteur, documentData); + } catch (e) { + console.error('Échec de la création du document:', e); + throw e; // Renvoie l'erreur pour une gestion plus haut dans la pile d'appels. + } + } + //ajoute une feuille à la liste des feuilles addFeuille(feuille){ this.#feuilles.push(feuille); @@ -58,7 +68,7 @@ class Document extends Component{ this.#feuilles.forEach(feuille => feuillesJSON.push(feuille.toJSON())); return { - id: this.#id, + //id: this.#id, // pas besoin un ID là car mongodb gere ça tous seul nom: super.getNom(), auteur: this.#auteur, feuilles: feuillesJSON,