Browse Source

Move every Triggers.findOne(idOrFirstObjectSelector, options) to the ReactiveCache

Martin Filser 2 years ago
parent
commit
f5796faa84
3 changed files with 53 additions and 5 deletions
  1. 1 3
      client/components/rules/ruleDetails.js
  2. 50 0
      imports/reactiveCache.js
  3. 2 2
      models/rules.js

+ 1 - 3
client/components/rules/ruleDetails.js

@@ -10,9 +10,7 @@ BlazeComponent.extendComponent({
   trigger() {
     const ruleId = this.data().ruleId;
     const rule = ReactiveCache.getRule(ruleId.get());
-    const trigger = Triggers.findOne({
-      _id: rule.triggerId,
-    });
+    const trigger = ReactiveCache.getTrigger(rule.triggerId);
     const desc = trigger.description();
     const upperdesc = desc.charAt(0).toUpperCase() + desc.substr(1);
     return upperdesc;

+ 50 - 0
imports/reactiveCache.js

@@ -123,6 +123,14 @@ ReactiveCacheServer = {
     const ret = Actions.find(selector, options).fetch();
     return ret;
   },
+  getTrigger(idOrFirstObjectSelector, options) {
+    const ret = Triggers.findOne(idOrFirstObjectSelector, options);
+    return ret;
+  },
+  getTriggers(selector, options) {
+    const ret = Triggers.find(selector, options).fetch();
+    return ret;
+  },
   getCurrentSetting() {
     const ret = Settings.findOne();
     return ret;
@@ -497,6 +505,30 @@ ReactiveCacheClient = {
     const ret = this.__actions.get(Jsons.stringify(select));
     return ret;
   },
+  getTrigger(idOrFirstObjectSelector, options) {
+    const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
+    if (!this.__trigger) {
+      this.__trigger = new DataCache(_idOrFirstObjectSelect => {
+        const __select = Jsons.parse(_idOrFirstObjectSelect);
+        const _ret = Triggers.findOne(__select.idOrFirstObjectSelector, __select.options);
+        return _ret;
+      });
+    }
+    const ret = this.__trigger.get(Jsons.stringify(idOrFirstObjectSelect));
+    return ret;
+  },
+  getTriggers(selector, options) {
+    const select = {selector, options}
+    if (!this.__triggers) {
+      this.__triggers = new DataCache(_select => {
+        const __select = Jsons.parse(_select);
+        const _ret = Triggers.find(__select.selector, __select.options).fetch();
+        return _ret;
+      });
+    }
+    const ret = this.__triggers.get(Jsons.stringify(select));
+    return ret;
+  },
   getCurrentSetting() {
     if (!this.__currentSetting || !this.__currentSetting.get()) {
       this.__currentSetting = new DataCache(() => {
@@ -796,6 +828,24 @@ ReactiveCache = {
     }
     return ret;
   },
+  getTrigger(idOrFirstObjectSelector, options) {
+    let ret;
+    if (Meteor.isServer) {
+      ret = ReactiveCacheServer.getTrigger(idOrFirstObjectSelector, options);
+    } else {
+      ret = ReactiveCacheClient.getTrigger(idOrFirstObjectSelector, options);
+    }
+    return ret;
+  },
+  getTriggers(selector, options) {
+    let ret;
+    if (Meteor.isServer) {
+      ret = ReactiveCacheServer.getTriggers(selector, options);
+    } else {
+      ret = ReactiveCacheClient.getTriggers(selector, options);
+    }
+    return ret;
+  },
   getCurrentSetting() {
     let ret;
     if (Meteor.isServer) {

+ 2 - 2
models/rules.js

@@ -61,13 +61,13 @@ Rules.helpers({
     return ReactiveCache.getAction(this.actionId);
   },
   getTrigger() {
-    return Triggers.findOne({ _id: this.triggerId });
+    return ReactiveCache.getTrigger(this.triggerId);
   },
   board() {
     return ReactiveCache.getBoard(this.boardId);
   },
   trigger() {
-    return Triggers.findOne({ _id: this.triggerId });
+    return ReactiveCache.getTrigger(this.triggerId);
   },
   action() {
     return ReactiveCache.getAction(this.actionId);