51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
import CreatureProperties from '/imports/api/creature/creatureProperties/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';
|
|
|
|
Meteor.startup(() => {
|
|
const collections = [
|
|
CreatureProperties,
|
|
LibraryNodes,
|
|
];
|
|
|
|
/**
|
|
* Deletes all soft removed documents that were removed more than 1 day ago
|
|
* and were not restored
|
|
* @return {Number} Number of documents removed
|
|
*/
|
|
const deleteOldSoftRemovedDocs = function(){
|
|
const now = new Date();
|
|
const yesterday = new Date(now.getTime() - (24 * 60 * 60 * 1000));
|
|
collections.forEach(collection => {
|
|
collection.remove({
|
|
removed: true,
|
|
removedAt: {$lt: yesterday} // dates *before* yesterday
|
|
}, function(error){
|
|
if (error){
|
|
console.error(JSON.stringify(error, null, 2));
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
SyncedCron.add({
|
|
name: 'deleteSoftRemovedDocs',
|
|
schedule: function(parser) {
|
|
return parser.text('every 10 minutes');
|
|
},
|
|
job: deleteOldSoftRemovedDocs,
|
|
});
|
|
|
|
SyncedCron.start();
|
|
|
|
// Add a method to manually trigger removal
|
|
Meteor.methods({
|
|
deleteOldSoftRemovedDocs() {
|
|
assertAdmin(this.userId);
|
|
this.unblock();
|
|
deleteOldSoftRemovedDocs();
|
|
},
|
|
});
|
|
});
|