| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /* eslint-disable
- camelcase,
- handle-callback-err,
- max-len,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let MessageManager;
- const mongojs = require("../../mongojs");
- const { db } = mongojs;
- const { ObjectId } = mongojs;
- const async = require("async");
- const metrics = require('metrics-sharelatex');
- const logger = require('logger-sharelatex');
- module.exports = (MessageManager = {
- createMessage(room_id, user_id, content, timestamp, callback) {
- if (callback == null) { callback = function(error, message) {}; }
- let newMessageOpts = {
- content,
- room_id,
- user_id,
- timestamp
- };
- newMessageOpts = this._ensureIdsAreObjectIds(newMessageOpts);
- return db.messages.save(newMessageOpts, callback);
- },
- getMessages(room_id, limit, before, callback) {
- if (callback == null) { callback = function(error, messages) {}; }
- let query =
- {room_id};
- if (before != null) {
- query.timestamp = { $lt: before };
- }
- query = this._ensureIdsAreObjectIds(query);
- const cursor = db.messages.find(query).sort({ timestamp: -1 }).limit(limit);
- return cursor.toArray(callback);
- },
-
- findAllMessagesInRooms(room_ids, callback) {
- if (callback == null) { callback = function(error, messages) {}; }
- return db.messages.find({
- room_id: { $in: room_ids }
- }, callback);
- },
- deleteAllMessagesInRoom(room_id, callback) {
- if (callback == null) { callback = function(error) {}; }
- return db.messages.remove({
- room_id
- }, callback);
- },
-
- updateMessage(room_id, message_id, content, timestamp, callback) {
- if (callback == null) { callback = function(error, message) {}; }
- const query = this._ensureIdsAreObjectIds({
- _id: message_id,
- room_id
- });
- return db.messages.update(query, {
- $set: {
- content,
- edited_at: timestamp
- }
- }, function(error) {
- if (error != null) { return callback(error); }
- return callback();
- });
- },
- deleteMessage(room_id, message_id, callback) {
- if (callback == null) { callback = function(error) {}; }
- const query = this._ensureIdsAreObjectIds({
- _id: message_id,
- room_id
- });
- return db.messages.remove(query, function(error) {
- if (error != null) { return callback(error); }
- return callback();
- });
- },
- _ensureIdsAreObjectIds(query) {
- if ((query.user_id != null) && !(query.user_id instanceof ObjectId)) {
- query.user_id = ObjectId(query.user_id);
- }
- if ((query.room_id != null) && !(query.room_id instanceof ObjectId)) {
- query.room_id = ObjectId(query.room_id);
- }
- if ((query._id != null) && !(query._id instanceof ObjectId)) {
- query._id = ObjectId(query._id);
- }
- return query;
- }
- });
- [
- 'createMessage',
- 'getMessages',
- 'findAllMessagesInRooms',
- 'updateMessage',
- 'deleteMessage'
- ].map(method => metrics.timeAsyncMethod(MessageManager, method, 'mongo.MessageManager', logger));
|