summaryrefslogtreecommitdiff
path: root/src/services/events/event.service.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/events/event.service.js')
-rw-r--r--src/services/events/event.service.js26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/services/events/event.service.js b/src/services/events/event.service.js
index 5391443..1be4449 100644
--- a/src/services/events/event.service.js
+++ b/src/services/events/event.service.js
@@ -1,4 +1,6 @@
+const { Types } = require('mongoose');
const Agenda = require('agenda');
+const _ = require('lodash');
const { getConnection } = require('../../connectDb.js');
const handleAttendClassJob = require('../../handlers');
@@ -25,14 +27,32 @@ class Events {
this.agenda.on('fail', (err, job) => console.log(`Job failed with the error ${err}`));
return this.agenda.start();
- };
+ }
create(data, params) {
return this.agenda.schedule(data.date, 'attend class', data);
- };
+ }
find(params) {
- return this.agenda.jobs();
+ return this.agenda.jobs({}, { nextRunAt: -1, 'data.participants': -1 });
+ }
+
+ findOneById(id) {
+ return this.agenda
+ .jobs({ _id: Types.ObjectId(id) })
+ .then(results => results[0]);
+ }
+
+ async patch(id, attrs, params) {
+ console.log(`Patch ${id}`);
+ const job = await this.findOneById(id);
+ job.attrs = _.merge(job.attrs, attrs);
+ return this.agenda.saveJob(job);
+ }
+
+ async remove(id) {
+ console.log(`Remove ${id}`);
+ return this.agenda.cancel({ _id: Types.ObjectId(id) });
}
}