| const { db } = require('../db'); | |
| class Message { | |
| static find(query) { | |
| const chain = { | |
| sort: function(sortQuery) { | |
| this._sort = sortQuery; | |
| return this; | |
| }, | |
| limit: function(limitNum) { | |
| this._limit = limitNum; | |
| return this; | |
| }, | |
| then: function(resolve, reject) { | |
| return new Promise((res, rej) => { | |
| let q = db.messages.find(query); | |
| if (this._sort) q = q.sort(this._sort); | |
| if (this._limit) q = q.limit(this._limit); | |
| q.exec((err, docs) => { | |
| if (err) rej(err); | |
| else res(docs); | |
| }); | |
| }).then(resolve, reject); | |
| }, | |
| catch: function(reject) { | |
| return this.then(null, reject); | |
| } | |
| }; | |
| return chain; | |
| } | |
| static async create(msgData) { | |
| return new Promise((resolve, reject) => { | |
| msgData.createdAt = msgData.createdAt || new Date(); | |
| db.messages.insert(msgData, (err, newDoc) => { | |
| if (err) reject(err); | |
| else resolve(newDoc); | |
| }); | |
| }); | |
| } | |
| static async deleteMany(query) { | |
| return new Promise((resolve, reject) => { | |
| db.messages.remove(query, { multi: true }, (err, numRemoved) => { | |
| if (err) reject(err); | |
| else resolve(numRemoved); | |
| }); | |
| }); | |
| } | |
| } | |
| module.exports = Message; | |