import { Meteor } from 'meteor/meteor'; Triggers = new Mongo.Collection('triggers'); Triggers.mutations({ rename(description) { return { $set: { description, }, }; }, }); Triggers.before.insert((userId, doc) => { doc.createdAt = new Date(); doc.updatedAt = doc.createdAt; }); Triggers.before.update((userId, doc, fieldNames, modifier) => { modifier.$set = modifier.$set || {}; modifier.$set.updatedAt = new Date(); }); Triggers.allow({ insert(userId, doc) { return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); }, update(userId, doc) { return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); }, remove(userId, doc) { return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); }, }); Triggers.helpers({ description() { return this.desc; }, getRule() { return Rules.findOne({ triggerId: this._id, }); }, fromList() { return Lists.findOne(this.fromId); }, toList() { return Lists.findOne(this.toId); }, findList(title) { return Lists.findOne({ title, }); }, labels() { const boardLabels = this.board().labels; const cardLabels = _.filter(boardLabels, label => { return _.contains(this.labelIds, label._id); }); return cardLabels; }, }); if (Meteor.isServer) { Meteor.startup(() => { Triggers._collection._ensureIndex({ modifiedAt: -1 }); }); } export default Triggers;