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) });    }  } | 
