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;