51 lines
1.4 KiB
JavaScript
51 lines
1.4 KiB
JavaScript
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties';
|
|
import LibraryNodes from '/imports/api/library/LibraryNodes';
|
|
import { assertAdmin } from '/imports/api/sharing/sharingPermissions';
|
|
import { SyncedCron } from 'meteor/littledata: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();
|
|
},
|
|
});
|
|
});
|