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,