diff options
author | eug-vs <eug-vs@keemail.me> | 2020-11-15 02:41:51 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-11-15 02:41:51 +0300 |
commit | d113caace46ee53b86a31da2879d991562de45a1 (patch) | |
tree | 469eee3f1aeb9ac9928ae103da2f61391258277d /src/services | |
parent | 3cbf42a8d4ffef02b92067bf0083abd9a15836c1 (diff) | |
download | bsu-fantom-d113caace46ee53b86a31da2879d991562de45a1.tar.gz |
feat: add CRUD methods
Diffstat (limited to 'src/services')
-rw-r--r-- | src/services/events/event.service.js | 26 |
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) }); } } |