Add findOneById and findOneByIds to all layers of the models

pull/5600/head
Bradley Hilton 9 years ago
parent 300cdc34cc
commit c7fd91ce35
No known key found for this signature in database
GPG Key ID: 0666B2C24C43C358
  1. 3
      packages/rocketchat-integrations/server/processWebhookMessage.js
  2. 8
      packages/rocketchat-lib/server/models/Messages.coffee
  3. 10
      packages/rocketchat-lib/server/models/Rooms.coffee
  4. 7
      packages/rocketchat-lib/server/models/Settings.coffee
  5. 3
      packages/rocketchat-lib/server/models/Uploads.coffee
  6. 5
      packages/rocketchat-lib/server/models/Users.coffee
  7. 18
      packages/rocketchat-lib/server/models/_Base.js
  8. 16
      packages/rocketchat-lib/server/models/_BaseCache.js
  9. 8
      packages/rocketchat-lib/server/models/_BaseDb.js

@ -25,7 +25,7 @@ function retrieveDirectMessageInfo({ currentUserId, channel, findByUserIdOnly=fa
}
const rid = [currentUserId, roomUser._id].sort().join('');
let room = RocketChat.models.Rooms.findOneById({ $in: [rid, channel] });
let room = RocketChat.models.Rooms.findOneByIds([rid, channel]);
if (!_.isObject(room)) {
throw new Meteor.Error('invalid-channel');
@ -60,7 +60,6 @@ this.processWebhookMessage = function(messageObj, user, defaultValues) {
for (channel of channels) {
channelType = channel[0];
console.log('The channelType:', channel);
channel = channel.substr(1);

@ -17,14 +17,6 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base
@tryEnsureIndex { 'location': '2dsphere' }
@tryEnsureIndex { 'slackBotId': 1, 'slackTs': 1 }, { sparse: 1 }
# FIND ONE
findOneById: (_id, options) ->
query =
_id: _id
return @findOne query, options
# FIND
findByMention: (username, options) ->
query =

@ -12,16 +12,6 @@ class ModelRooms extends RocketChat.models._Base
this.cache.ensureIndex(['t', 'name'], 'unique')
this.cache.options = {fields: {usernames: 0}}
# FIND ONE
findOneById: (_id, options) ->
if this.useCache
return this.cache.findByIndex('_id', _id, options).fetch()
query =
_id: _id
return @findOne query, options
findOneByIdOrName: (_idOrName, options) ->
query = {
$or: [{

@ -5,13 +5,6 @@ class ModelSettings extends RocketChat.models._Base
@tryEnsureIndex { 'blocked': 1 }, { sparse: 1 }
@tryEnsureIndex { 'hidden': 1 }, { sparse: 1 }
# FIND ONE
findOneById: (_id, options) ->
query =
_id: _id
return @findOne query, options
# FIND
findById: (_id) ->
query =

@ -5,9 +5,6 @@ RocketChat.models.Uploads = new class extends RocketChat.models._Base
@tryEnsureIndex { 'rid': 1 }
@tryEnsureIndex { 'uploadedAt': 1 }
findOneById: (fileId) ->
@findOne { _id: fileId }
findNotHiddenFilesOfRoom: (roomId, limit) ->
fileQuery =
rid: roomId

@ -10,11 +10,6 @@ class ModelUsers extends RocketChat.models._Base
@tryEnsureIndex { 'statusConnection': 1 }, { sparse: 1 }
@tryEnsureIndex { 'type': 1 }
# FIND ONE
findOneById: (_id, options) ->
return @findOne _id, options
findOneByImportId: (_id, options) ->
return @findOne { importIds: _id }, options

@ -73,6 +73,24 @@ class ModelsBase {
}
}
findOneById() {
try {
return this[this.origin].findOneById(...arguments);
} catch (e) {
console.error('Exception on find', e, ...arguments);
}
}
findOneByIds(ids, options) {
check(ids, [String]);
try {
return this[this.origin].findOneByIds(ids, options);
} catch (e) {
console.error('Exception on find', e, ...arguments);
}
}
insert(/*record*/) {
return this._db.insert(...arguments);
}

@ -370,17 +370,6 @@ class ModelsBaseCache extends EventEmitter {
}
_findByIndex(index, keys) {
if (keys.$in) {
for (let i = 0; i < keys.$in.length; i++) {
const result = this._findByIndex(index, keys.$in[i]);
if (result) {
return result;
}
}
return;
}
const key = [].concat(keys).join('|');
if (!this.indexes[index]) {
return;
@ -697,6 +686,11 @@ class ModelsBaseCache extends EventEmitter {
return this.findByIndex('_id', _id, options).fetch();
}
findOneByIds(ids, options) {
const query = this.processQuery({ _id: { $in: ids }});
return this.processQueryOptionsOnResult(this.collection.findOne(query), options);
}
findWhere(query, options) {
query = this.processQuery(query);
return this.processQueryOptionsOnResult(this.collection.findWhere(query), options);

@ -105,6 +105,14 @@ class ModelsBaseDb extends EventEmitter {
return this.model.findOne(...arguments);
}
findOneById(_id, options) {
return this.model.findOne({ _id }, options);
}
findOneByIds(ids, options) {
return this.model.findOne({ _id: { $in: ids }}, options);
}
defineSyncStrategy(query, modifier, options) {
if (this.baseModel.useCache === false) {
return 'db';

Loading…
Cancel
Save