From b4da32f9ab864b2ff67a8955f577e3e9197ad42d Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Fri, 5 Jun 2020 23:08:31 +0200 Subject: [PATCH] Fixed soft removed documents never getting permanently removed --- .../cron/deleteSoftRemovedDocuments.js} | 35 +++++++++++-------- app/server/main.js | 2 +- 2 files changed, 22 insertions(+), 15 deletions(-) rename app/imports/{api/parenting/deleteRemovedDocuments.js => server/cron/deleteSoftRemovedDocuments.js} (53%) diff --git a/app/imports/api/parenting/deleteRemovedDocuments.js b/app/imports/server/cron/deleteSoftRemovedDocuments.js similarity index 53% rename from app/imports/api/parenting/deleteRemovedDocuments.js rename to app/imports/server/cron/deleteSoftRemovedDocuments.js index 295b55a2..4b087d87 100644 --- a/app/imports/api/parenting/deleteRemovedDocuments.js +++ b/app/imports/server/cron/deleteSoftRemovedDocuments.js @@ -1,11 +1,18 @@ +import CreatureProperties from '/imports/api/creature/CreatureProperties.js'; import LibraryNodes from '/imports/api/library/LibraryNodes.js'; +import { assertAdmin } from '/imports/api/sharing/sharingPermissions.js'; +import { SyncedCron } from 'meteor/percolate:synced-cron'; -let collections = [LibraryNodes]; +Meteor.startup(() => { + const collections = [ + CreatureProperties, + LibraryNodes, + ]; -if (Meteor.isServer) Meteor.startup(() => { /** * Deletes all soft removed documents that were removed more than 30 minutes ago * and were not restored + * @return {Number} Number of documents removed */ const deleteOldSoftRemovedDocs = function(){ const now = new Date(); @@ -14,30 +21,30 @@ if (Meteor.isServer) Meteor.startup(() => { collection.remove({ removed: true, removedAt: {$lt: thirtyMinutesAgo} // dates *before* 30 minutes ago - }, error => { - if (error) console.error(error); + }, function(error){ + if (error){ + console.error(error); + } }); }); - return; }; SyncedCron.add({ - name: "Delete all soft removed items that haven't been restored", + name: 'deleteSoftRemovedDocs', schedule: function(parser) { - return parser.text('every 6 hours'); + return parser.text('every 2 hours'); }, - job: function() { - deleteOldSoftRemovedDocs(); - } + job: deleteOldSoftRemovedDocs, }); + SyncedCron.start(); + // Add a method to manually trigger removal Meteor.methods({ deleteOldSoftRemovedDocs() { - const user = Meteor.users.findOne(this.userId); - if (user && _.contains(user.roles, "admin")){ - return deleteOldSoftRemovedDocs(); - } + assertAdmin(this.userId); + this.unblock(); + deleteOldSoftRemovedDocs(); }, }); }); diff --git a/app/server/main.js b/app/server/main.js index 626512ff..24b44f0b 100644 --- a/app/server/main.js +++ b/app/server/main.js @@ -1,4 +1,4 @@ import '/imports/server/publications/index.js'; -import '/imports/api/parenting/deleteRemovedDocuments.js'; import '/imports/server/config/simpleSchemaDebug.js'; +import '/imports/server/cron/deleteSoftRemovedDocuments.js'; import '/imports/api/parenting/organizeMethods.js';