summaryrefslogtreecommitdiff
path: root/src/services/events/event.model.js
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-11-28 00:21:26 +0300
committereug-vs <eug-vs@keemail.me>2020-11-28 00:21:26 +0300
commit7c69da67cf43dd076d20df87b5a7ea52a47e69ac (patch)
tree04473c6b40cda94d5af714072ddb2ac0ffef59af /src/services/events/event.model.js
parent9f7115217c34732753102e044a94711400b5affc (diff)
downloadbsu-fantom-7c69da67cf43dd076d20df87b5a7ea52a47e69ac.tar.gz
feat: correctly re-schedule old events
Diffstat (limited to 'src/services/events/event.model.js')
-rw-r--r--src/services/events/event.model.js21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/services/events/event.model.js b/src/services/events/event.model.js
index ef86572..b8a13bc 100644
--- a/src/services/events/event.model.js
+++ b/src/services/events/event.model.js
@@ -1,5 +1,4 @@
const cron = require('cron');
-const Bluebird = require('bluebird');
const { model } = require('mongoose');
const schema = require('./event.schema.js');
@@ -11,26 +10,27 @@ schema.methods.computeNextRunAt = function() {
return new Date(nextRunAt);
};
+schema.methods.setStatus = function(status) {
+ this.status = status;;
+ this.save();
+};
+
schema.pre('save', function(next) {
this.nextRunAt = this.computeNextRunAt();
next();
});
-schema.statics.rescheduleOldEvents = async function () {
- console.log('Reschedule old events');
- const oldEvents = await this.find({
+schema.statics.findMissedEvents = async function () {
+ return this.find({
nextRunAt: {
// TODO: skip single-fire events
$lt: new Date()
},
});
-
- // Saving events triggers computing new nextRunAt
- return Bluebird.map(oldEvents, event => event.save());
};
-schema.statics.findNextEvent = function () {
- return this.findOne(
+schema.statics.findNextEvents = function(limit = 10) {
+ return this.find(
{
nextRunAt: {
$exists: 1,
@@ -41,7 +41,8 @@ schema.statics.findNextEvent = function () {
{
sort: {
nextRunAt: 1
- }
+ },
+ limit
}
)
};