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;