itizawa 5 лет назад
Родитель
Сommit
2851950d07
2 измененных файлов с 15 добавлено и 17 удалено
  1. 1 6
      src/server/routes/page.js
  2. 14 11
      src/server/service/page.js

+ 1 - 6
src/server/routes/page.js

@@ -1193,12 +1193,7 @@ module.exports = function(crowi, app) {
         if (!req.user.canDeleteCompletely(page.creator)) {
         if (!req.user.canDeleteCompletely(page.creator)) {
           return res.json(ApiResponse.error('You can not delete completely', 'user_not_admin'));
           return res.json(ApiResponse.error('You can not delete completely', 'user_not_admin'));
         }
         }
-        if (isRecursively) {
-          await crowi.pageService.deletePageRecursivelyCompletely(page, req.user, options);
-        }
-        else {
-          await crowi.pageService.deleteSinglePageCompletely(page, req.user, options);
-        }
+        await crowi.pageService.deleteCompletely(page, req.user, options, isRecursively);
       }
       }
       else {
       else {
         if (!page.isUpdatable(previousRevision)) {
         if (!page.isUpdatable(previousRevision)) {

+ 14 - 11
src/server/service/page.js

@@ -15,7 +15,7 @@ class PageService {
     this.crowi = crowi;
     this.crowi = crowi;
   }
   }
 
 
-  async deleteCompletely(pageIds, pagePaths) {
+  async deleteCompletelyOperation(pageIds, pagePaths) {
     // Delete Bookmarks, Attachments, Revisions, Pages and emit delete
     // Delete Bookmarks, Attachments, Revisions, Pages and emit delete
     const Bookmark = this.crowi.model('Bookmark');
     const Bookmark = this.crowi.model('Bookmark');
     const Comment = this.crowi.model('Comment');
     const Comment = this.crowi.model('Comment');
@@ -124,7 +124,7 @@ class PageService {
   }
   }
 
 
   // delete multiple pages
   // delete multiple pages
-  async deleteMultiplePagesCompletely(pages, user, options = {}) {
+  async deleteMultipleCompletely(pages, user, options = {}) {
     this.validateCrowi();
     this.validateCrowi();
     let pageEvent;
     let pageEvent;
     // init event
     // init event
@@ -140,7 +140,7 @@ class PageService {
 
 
     logger.debug('Deleting completely', paths);
     logger.debug('Deleting completely', paths);
 
 
-    await this.deleteCompletely(ids, paths);
+    await this.deleteCompletelyOperation(ids, paths);
 
 
     if (socketClientId != null) {
     if (socketClientId != null) {
       pageEvent.emit('deleteCompletely', pages, user, socketClientId); // update as renamed page
       pageEvent.emit('deleteCompletely', pages, user, socketClientId); // update as renamed page
@@ -149,7 +149,7 @@ class PageService {
   }
   }
 
 
   // delete single page completely
   // delete single page completely
-  async deleteSinglePageCompletely(pageData, user, options = {}) {
+  async deleteCompletely(page, user, options = {}, isRecursively = false) {
     this.validateCrowi();
     this.validateCrowi();
     let pageEvent;
     let pageEvent;
     // init event
     // init event
@@ -159,16 +159,20 @@ class PageService {
       pageEvent.on('update', pageEvent.onUpdate);
       pageEvent.on('update', pageEvent.onUpdate);
     }
     }
 
 
-    const ids = [pageData._id];
-    const paths = [pageData.path];
+    const ids = [page._id];
+    const paths = [page.path];
     const socketClientId = options.socketClientId || null;
     const socketClientId = options.socketClientId || null;
 
 
     logger.debug('Deleting completely', paths);
     logger.debug('Deleting completely', paths);
 
 
-    await this.deleteCompletely(ids, paths);
+    await this.deleteCompletelyOperation(ids, paths);
+
+    if (isRecursively) {
+      this.deletePageRecursivelyCompletely(page, user, options);
+    }
 
 
     if (socketClientId != null) {
     if (socketClientId != null) {
-      pageEvent.emit('delete', pageData, user, socketClientId); // update as renamed page
+      pageEvent.emit('delete', page, user, socketClientId); // update as renamed page
     }
     }
     return;
     return;
   }
   }
@@ -188,15 +192,14 @@ class PageService {
       .lean()
       .lean()
       .cursor();
       .cursor();
 
 
-    // const completelyDeletePage = this.completelyDeletePage.bind(this);
+    const deleteMultipleCompletely = this.deleteMultipleCompletely.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);
-          // await completelyDeletePage(batch, user, options);
+          await deleteMultipleCompletely(batch, user, options);
           logger.info(`Adding pages progressing: (count=${count})`);
           logger.info(`Adding pages progressing: (count=${count})`);
         }
         }
         catch (err) {
         catch (err) {