| const { db } = require('../db'); | |
| class ChatSession { | |
| static find(query) { | |
| const chain = { | |
| _sort: null, | |
| sort: function(sortQuery) { | |
| this._sort = sortQuery; | |
| return this; | |
| }, | |
| then: function(resolve, reject) { | |
| return new Promise((res, rej) => { | |
| let q = db.sessions.find(query); | |
| if (this._sort) q = q.sort(this._sort); | |
| 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 findById(id) { | |
| return new Promise((resolve, reject) => { | |
| db.sessions.findOne({ _id: id }, (err, doc) => { | |
| if (err) reject(err); | |
| else resolve(doc); | |
| }); | |
| }); | |
| } | |
| static async create(sessionData) { | |
| return new Promise((resolve, reject) => { | |
| sessionData.createdAt = sessionData.createdAt || new Date(); | |
| sessionData.updatedAt = sessionData.updatedAt || new Date(); | |
| db.sessions.insert(sessionData, (err, newDoc) => { | |
| if (err) reject(err); | |
| else resolve(newDoc); | |
| }); | |
| }); | |
| } | |
| static async deleteMany(query) { | |
| return new Promise((resolve, reject) => { | |
| db.sessions.remove(query, { multi: true }, (err, numRemoved) => { | |
| if (err) reject(err); | |
| else resolve(numRemoved); | |
| }); | |
| }); | |
| } | |
| } | |
| module.exports = ChatSession; | |