| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | import { ReactiveCache } from '/imports/reactiveCache';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, ReactiveCache.getBoard(doc.boardId));  },  update(userId, doc) {    return allowIsBoardAdmin(userId, ReactiveCache.getBoard(doc.boardId));  },  remove(userId, doc) {    return allowIsBoardAdmin(userId, ReactiveCache.getBoard(doc.boardId));  },});Triggers.helpers({  description() {    return this.desc;  },  getRule() {    return ReactiveCache.getRule({ triggerId: this._id });  },  fromList() {    return ReactiveCache.getList(this.fromId);  },  toList() {    return ReactiveCache.getList(this.toId);  },  findList(title) {    return ReactiveCache.getList({      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.createIndex({ modifiedAt: -1 });  });}export default Triggers;
 |