itizawa 5 лет назад
Родитель
Сommit
63af7fb329
1 измененных файлов с 17 добавлено и 16 удалено
  1. 17 16
      src/server/service/page.js

+ 17 - 16
src/server/service/page.js

@@ -297,22 +297,23 @@ class PageService {
       .pipe(writeStream);
       .pipe(writeStream);
   }
   }
 
 
-  async revertDeletedDescendants(targetPage, user, options = {}) {
+  async revertDeletedDescendants(pages, user, options = {}) {
     const Page = this.crowi.model('Page');
     const Page = this.crowi.model('Page');
-    const findOpts = { includeTrashed: true };
-    const pages = await Page.findManageableListWithDescendants(targetPage, user, findOpts);
-
-    let updatedPage = null;
-    await Promise.all(pages.map((page) => {
-      const isParent = (page.path === targetPage.path);
-      const p = this.revertDeletedPages(page, user, options);
-      if (isParent) {
-        updatedPage = p;
-      }
-      return p;
-    }));
+    const pageCollection = mongoose.connection.collection('pages');
+    const removePageBulkOp = pageCollection.initializeUnorderedBulkOp();
+    // const revertPageBulkOp = pageCollection.initializeUnorderedBulkOp();
+    pages.forEach((page) => {
 
 
-    return updatedPage;
+      // e.g. fromPath = /trash/test, toPath = /test
+      // const fromPath = page.path;
+      const toPath = Page.getRevertDeletedPageName(page.path);
+
+      console.log(toPath);
+      removePageBulkOp.find({ path: toPath, redirectTo: page.path }).remove();
+      // this.revertDeletedPage(page, user, options);
+    });
+
+    await removePageBulkOp.execute();
   }
   }
 
 
   async revertDeletedPage(page, user, options = {}, isRecursively = false) {
   async revertDeletedPage(page, user, options = {}, isRecursively = false) {
@@ -355,14 +356,14 @@ class PageService {
       .lean()
       .lean()
       .cursor();
       .cursor();
 
 
-    // const deleteMultipleCompletely = this.deleteMultipleCompletely.bind(this);
+    const revertDeletedDescendants = this.revertDeletedDescendants.bind(this);
     let count = 0;
     let count = 0;
     const writeStream = new Writable({
     const writeStream = new Writable({
       objectMode: true,
       objectMode: true,
       async write(batch, encoding, callback) {
       async write(batch, encoding, callback) {
         try {
         try {
           count += batch.length;
           count += batch.length;
-          console.log(batch);
+          revertDeletedDescendants(batch);
           logger.debug(`Reverting pages progressing: (count=${count})`);
           logger.debug(`Reverting pages progressing: (count=${count})`);
         }
         }
         catch (err) {
         catch (err) {