From 0e714a90e0f091f8c8d7a5e71da72b01e4ebb4e9 Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Fri, 3 Feb 2023 23:33:38 +0100 Subject: [PATCH] Move every ChecklistItems.findOne() to the ReactiveCache --- client/components/activities/activities.js | 2 +- imports/reactiveCache.js | 23 ++++++++++++++++++++++ models/activities.js | 2 +- models/checklistItems.js | 2 +- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/client/components/activities/activities.js b/client/components/activities/activities.js index 6295b805e..7c51f30f6 100644 --- a/client/components/activities/activities.js +++ b/client/components/activities/activities.js @@ -66,7 +66,7 @@ Template.activities.helpers({ BlazeComponent.extendComponent({ checkItem() { const checkItemId = this.currentData().activity.checklistItemId; - const checkItem = ChecklistItems.findOne({ _id: checkItemId }); + const checkItem = ReactiveCache.getChecklistItem(checkItemId); return checkItem && checkItem.title; }, diff --git a/imports/reactiveCache.js b/imports/reactiveCache.js index 9cf4bae88..f7e3aa3d8 100644 --- a/imports/reactiveCache.js +++ b/imports/reactiveCache.js @@ -19,6 +19,10 @@ ReactiveCacheServer = { const ret = Checklists.findOne(id); return ret; }, + getChecklistItem(id) { + const ret = ChecklistItems.findOne(id); + return ret; + }, getCard(id) { const ret = Cards.findOne(id); return ret; @@ -89,6 +93,16 @@ ReactiveCacheClient = { const ret = this.__checklist.get(id); return ret; }, + getChecklistItem(id) { + if (!this.__checklistItem) { + this.__checklistItem = new DataCache(_id => { + const _ret = ChecklistItems.findOne(_id); + return _ret; + }); + } + const ret = this.__checklistItem.get(id); + return ret; + }, getCard(id) { if (!this.__card) { this.__card = new DataCache(cardId => { @@ -194,6 +208,15 @@ ReactiveCache = { } return ret; }, + getChecklistItem(id) { + let ret; + if (Meteor.isServer) { + ret = ReactiveCacheServer.getChecklistItem(id); + } else { + ret = ReactiveCacheClient.getChecklistItem(id); + } + return ret; + }, getCard(id) { let ret; if (Meteor.isServer) { diff --git a/models/activities.js b/models/activities.js index b5f2f29b6..ba66cfaf5 100644 --- a/models/activities.js +++ b/models/activities.js @@ -50,7 +50,7 @@ Activities.helpers({ return Checklists.findOne(this.checklistId); }, checklistItem() { - return ChecklistItems.findOne(this.checklistItemId); + return ReactiveCache.getChecklistItem(this.checklistItemId); }, subtasks() { return ReactiveCache.getCard(this.subtaskId); diff --git a/models/checklistItems.js b/models/checklistItems.js index 0d8f81e6b..564dac6c7 100644 --- a/models/checklistItems.js +++ b/models/checklistItems.js @@ -270,7 +270,7 @@ if (Meteor.isServer) { const paramBoardId = req.params.boardId; const paramItemId = req.params.itemId; Authentication.checkBoardAccess(req.userId, paramBoardId); - const checklistItem = ChecklistItems.findOne({ _id: paramItemId }); + const checklistItem = ReactiveCache.getChecklistItem(paramItemId); if (checklistItem) { JsonRoutes.sendResult(res, { code: 200,