diff options
author | Justin Reynolds <justinr1234@gmail.com> | 2019-06-26 17:47:27 -0500 |
---|---|---|
committer | Justin Reynolds <justinr1234@gmail.com> | 2019-06-27 09:13:20 -0500 |
commit | c60e80d25baa6a81b28f6090ca848553d20b2bb7 (patch) | |
tree | 64bcea66932f4b4635d5df6901f18d5ba6db0a37 /models/rules.js | |
parent | fb728baf0c87bae5fa39d92089b667ff1ed69fa6 (diff) | |
download | wekan-c60e80d25baa6a81b28f6090ca848553d20b2bb7.tar.gz wekan-c60e80d25baa6a81b28f6090ca848553d20b2bb7.tar.bz2 wekan-c60e80d25baa6a81b28f6090ca848553d20b2bb7.zip |
Add createdAt and modifiedAt to all collections
Diffstat (limited to 'models/rules.js')
-rw-r--r-- | models/rules.js | 86 |
1 files changed, 63 insertions, 23 deletions
diff --git a/models/rules.js b/models/rules.js index 7d971980..76170b33 100644 --- a/models/rules.js +++ b/models/rules.js @@ -1,23 +1,51 @@ +import { Meteor } from 'meteor/meteor'; + Rules = new Mongo.Collection('rules'); -Rules.attachSchema(new SimpleSchema({ - title: { - type: String, - optional: false, - }, - triggerId: { - type: String, - optional: false, - }, - actionId: { - type: String, - optional: false, - }, - boardId: { - type: String, - optional: false, - }, -})); +Rules.attachSchema( + new SimpleSchema({ + title: { + type: String, + optional: false, + }, + triggerId: { + type: String, + optional: false, + }, + actionId: { + type: String, + optional: false, + }, + boardId: { + type: String, + optional: false, + }, + createdAt: { + type: Date, + optional: true, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert) { + return new Date(); + } else { + this.unset(); + } + }, + }, + modifiedAt: { + type: Date, + denyUpdate: false, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert || this.isUpsert || this.isUpdate) { + return new Date(); + } else { + this.unset(); + } + }, + }, + }) +); Rules.mutations({ rename(description) { @@ -26,15 +54,14 @@ Rules.mutations({ }); Rules.helpers({ - getAction(){ - return Actions.findOne({_id:this.actionId}); + getAction() { + return Actions.findOne({ _id: this.actionId }); }, - getTrigger(){ - return Triggers.findOne({_id:this.triggerId}); + getTrigger() { + return Triggers.findOne({ _id: this.triggerId }); }, }); - Rules.allow({ insert(userId, doc) { return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); @@ -46,3 +73,16 @@ Rules.allow({ return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); }, }); + +Rules.before.update((userId, doc, fieldNames, modifier, options) => { + modifier.$set = modifier.$set || {}; + modifier.$set.modifiedAt = Date.now(); +}); + +if (Meteor.isServer) { + Meteor.startup(() => { + Rules._collection._ensureIndex({ modifiedAt: -1 }); + }); +} + +export default Rules; |