summaryrefslogtreecommitdiffstats
path: root/models/rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/rules.js')
-rw-r--r--models/rules.js86
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;