summaryrefslogtreecommitdiff
path: root/src/services/events/event.model.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/events/event.model.js')
-rw-r--r--src/services/events/event.model.js82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/services/events/event.model.js b/src/services/events/event.model.js
deleted file mode 100644
index 660cb1a..0000000
--- a/src/services/events/event.model.js
+++ /dev/null
@@ -1,82 +0,0 @@
-const cron = require('cron');
-const { model } = require('mongoose');
-const schema = require('./event.schema.js');
-const LogModel = require('../logs/log.model.js');
-
-const CronJob = cron.CronJob;
-
-schema.methods.log = function(message) {
- const dateOpts = { timeStyle: 'medium', dateStyle: 'short' };
- const timestamp = new Date().toLocaleString('en', dateOpts);
- console.log(`[${timestamp}] ${this.name}: ${message}`);
-
- return LogModel.create({
- eventId: this._id,
- message
- });
-};
-
-schema.methods.start = function() {
- this.log('Event started')
- this.lastRunAt = new Date();
- this.status = 'running';
- return this.save();
-};
-
-schema.methods.complete = function() {
- this.log('Event complete')
- this.status = 'complete';
- return this.save();
-};
-
-schema.methods.fail = function(error) {
- this.log(error);
- this.error = error;
- this.status = 'failed';
- return this.save();
-};
-
-schema.methods.computeNextRunAt = function() {
- const job = new CronJob(this.schedule);
- const nextRunAt = job.nextDates();
- return new Date(nextRunAt);
-};
-
-schema.pre('save', function(next) {
- this.nextRunAt = this.computeNextRunAt();
- next();
-});
-
-schema.statics.findMissedEvents = async function () {
- return this.find({
- nextRunAt: {
- // TODO: skip single-fire events
- $lt: new Date()
- },
- });
-};
-
-schema.statics.findNextEvents = function(limit = 10) {
- return this.find(
- {
- nextRunAt: {
- $gt: new Date()
- },
- },
- null,
- {
- sort: {
- nextRunAt: 1
- },
- limit
- }
- )
-};
-
-const Model = model('Event', schema);
-
-
-module.exports = Model;
-
-
-