Explorar el Código

Merge branch 'imprv/delete-single-page' into imprv/delete-completely

Taichi Masuyama hace 4 años
padre
commit
17081ccf2c
Se han modificado 1 ficheros con 24 adiciones y 10 borrados
  1. 24 10
      packages/app/src/server/service/page.ts

+ 24 - 10
packages/app/src/server/service/page.ts

@@ -959,25 +959,39 @@ class PageService {
   private async deleteDescendants(pages, user) {
   private async deleteDescendants(pages, user) {
     const Page = mongoose.model('Page') as PageModel;
     const Page = mongoose.model('Page') as PageModel;
 
 
-    const deletePageBulkOp: any[] = [];
+    const deletePageOperations: any[] = [];
 
 
     pages.forEach((page) => {
     pages.forEach((page) => {
       const newPath = Page.getDeletedPageName(page.path);
       const newPath = Page.getDeletedPageName(page.path);
 
 
-      deletePageBulkOp.push({
-        updateOne: {
-          filter: { _id: page._id },
-          update: {
-            $set: {
-              path: newPath, status: Page.STATUS_DELETED, deleteUser: user._id, deletedAt: Date.now(), parent: null, // set parent as null
+      let operation;
+      // if empty, delete completely
+      if (page.isEmpty) {
+        operation = {
+          deleteOne: {
+            filter: { _id: page._id },
+          },
+        };
+      }
+      // if not empty, set parent to null and update to trash
+      else {
+        operation = {
+          updateOne: {
+            filter: { _id: page._id },
+            update: {
+              $set: {
+                path: newPath, status: Page.STATUS_DELETED, deleteUser: user._id, deletedAt: Date.now(), parent: null, // set parent as null
+              },
             },
             },
           },
           },
-        },
-      });
+        };
+      }
+
+      deletePageOperations.push(operation);
     });
     });
 
 
     try {
     try {
-      await Page.bulkWrite(deletePageBulkOp);
+      await Page.bulkWrite(deletePageOperations);
     }
     }
     catch (err) {
     catch (err) {
       if (err.code !== 11000) {
       if (err.code !== 11000) {