Prevent update records without query

pull/4338/head
Rodrigo Nascimento 9 years ago
parent dd47448fa9
commit b0405f5015
No known key found for this signature in database
GPG Key ID: 2C85B3AFE75D23F9
  1. 2
      packages/rocketchat-importer/server/startup/setImportsToInvalid.coffee
  2. 3
      packages/rocketchat-lib/server/models/Rooms.coffee
  3. 12
      packages/rocketchat-lib/server/models/_Base.js

@ -1,7 +1,7 @@
Meteor.startup ->
# Make sure all imports are marked as invalid, data clean up since you can't
# restart an import at the moment.
Importer.Imports.update {}, { $set: { valid: false } }, { multi: true }
Importer.Imports.update { valid: { $ne: false } }, { $set: { valid: false } }, { multi: true }
# Clean up all the raw import data, since you can't restart an import at the moment
Importer.Imports.find({ valid: { $ne: true }}).forEach (item) ->

@ -305,7 +305,8 @@ RocketChat.models.Rooms = new class extends RocketChat.models._Base
return @update query, update
removeUsernameFromAll: (username) ->
query = {}
query =
usernames: username
update =
$pull:

@ -25,7 +25,13 @@ class ModelsBase extends EventEmitter {
this.tryEnsureIndex({ '_updatedAt': 1 });
}
setUpdatedAt(record = {}) {
setUpdatedAt(record = {}, checkQuery = false, query) {
if (checkQuery === true) {
if (!query || Object.keys(query).length === 0) {
throw new Meteor.Error('Models._Base: Empty query');
}
}
if (/(^|,)\$/.test(Object.keys(record).join(','))) {
record.$set = record.$set || {};
record.$set._updatedAt = new Date;
@ -55,7 +61,7 @@ class ModelsBase extends EventEmitter {
}
update(query, update, options = {}) {
this.setUpdatedAt(update);
this.setUpdatedAt(update, true, query);
if (options.upsert) {
return this.upsert(query, update);
@ -82,7 +88,7 @@ class ModelsBase extends EventEmitter {
}
upsert(query, update) {
this.setUpdatedAt(update);
this.setUpdatedAt(update, true, query);
const id = this.model.findOne(query, { fields: { _id: 1 } });
const result = this.model.upsert(...arguments);

Loading…
Cancel
Save