reactiveCache.js 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372
  1. import { DataCache } from '@wekanteam/meteor-reactive-cache';
  2. import { Jsons } from './jsons';
  3. // Server isn't reactive, so search for the data always.
  4. ReactiveCacheServer = {
  5. getBoard(idOrFirstObjectSelector = {}, options = {}) {
  6. const ret = Boards.findOne(idOrFirstObjectSelector, options);
  7. return ret;
  8. },
  9. getBoards(selector = {}, options = {}, getQuery = false) {
  10. let ret = Boards.find(selector, options);
  11. if (getQuery !== true) {
  12. ret = ret.fetch();
  13. }
  14. return ret;
  15. },
  16. getList(idOrFirstObjectSelector = {}, options = {}) {
  17. const ret = Lists.findOne(idOrFirstObjectSelector, options);
  18. return ret;
  19. },
  20. getLists(selector = {}, options = {}, getQuery = false) {
  21. let ret = Lists.find(selector, options);
  22. if (getQuery !== true) {
  23. ret = ret.fetch();
  24. }
  25. return ret;
  26. },
  27. getSwimlane(idOrFirstObjectSelector = {}, options = {}) {
  28. const ret = Swimlanes.findOne(idOrFirstObjectSelector, options);
  29. return ret;
  30. },
  31. getSwimlanes(selector = {}, options = {}, getQuery = false) {
  32. let ret = Swimlanes.find(selector, options);
  33. if (getQuery !== true) {
  34. ret = ret.fetch();
  35. }
  36. return ret;
  37. },
  38. getChecklist(idOrFirstObjectSelector = {}, options = {}) {
  39. const ret = Checklists.findOne(idOrFirstObjectSelector, options);
  40. return ret;
  41. },
  42. getChecklists(selector = {}, options = {}, getQuery = false) {
  43. let ret = Checklists.find(selector, options);
  44. if (getQuery !== true) {
  45. ret = ret.fetch();
  46. }
  47. return ret;
  48. },
  49. getChecklistItem(idOrFirstObjectSelector = {}, options = {}) {
  50. const ret = ChecklistItems.findOne(idOrFirstObjectSelector, options);
  51. return ret;
  52. },
  53. getChecklistItems(selector = {}, options = {}, getQuery = false) {
  54. let ret = ChecklistItems.find(selector, options);
  55. if (getQuery !== true) {
  56. ret = ret.fetch();
  57. }
  58. return ret;
  59. },
  60. getCard(idOrFirstObjectSelector = {}, options = {}) {
  61. const ret = Cards.findOne(idOrFirstObjectSelector, options);
  62. return ret;
  63. },
  64. getCards(selector = {}, options = {}, getQuery = false) {
  65. let ret = Cards.find(selector, options, options);
  66. if (getQuery !== true) {
  67. ret = ret.fetch();
  68. }
  69. return ret;
  70. },
  71. getCardComment(idOrFirstObjectSelector = {}, options = {}) {
  72. const ret = CardComments.findOne(idOrFirstObjectSelector, options);
  73. return ret;
  74. },
  75. getCardComments(selector = {}, options = {}, getQuery = false) {
  76. let ret = CardComments.find(selector, options);
  77. if (getQuery !== true) {
  78. ret = ret.fetch();
  79. }
  80. return ret;
  81. },
  82. getCardCommentReaction(idOrFirstObjectSelector = {}, options = {}) {
  83. const ret = CardCommentReactions.findOne(idOrFirstObjectSelector, options);
  84. return ret;
  85. },
  86. getCardCommentReactions(selector = {}, options = {}, getQuery = false) {
  87. let ret = CardCommentReactions.find(selector, options);
  88. if (getQuery !== true) {
  89. ret = ret.fetch();
  90. }
  91. return ret;
  92. },
  93. getCustomField(idOrFirstObjectSelector = {}, options = {}) {
  94. const ret = CustomFields.findOne(idOrFirstObjectSelector, options);
  95. return ret;
  96. },
  97. getCustomFields(selector = {}, options = {}, getQuery = false) {
  98. let ret = CustomFields.find(selector, options);
  99. if (getQuery !== true) {
  100. ret = ret.fetch();
  101. }
  102. return ret;
  103. },
  104. getAttachment(idOrFirstObjectSelector = {}, options = {}) {
  105. const ret = Attachments.findOne(idOrFirstObjectSelector, options);
  106. return ret;
  107. },
  108. getAttachments(selector = {}, options = {}, getQuery = false) {
  109. let ret = Attachments.find(selector, options);
  110. if (getQuery !== true) {
  111. ret = ret.fetch();
  112. }
  113. return ret;
  114. },
  115. getAvatar(idOrFirstObjectSelector = {}, options = {}) {
  116. const ret = Avatars.findOne(idOrFirstObjectSelector, options);
  117. return ret;
  118. },
  119. getAvatars(selector = {}, options = {}, getQuery = false) {
  120. let ret = Avatars.find(selector, options);
  121. if (getQuery !== true) {
  122. ret = ret.fetch();
  123. }
  124. return ret;
  125. },
  126. getUser(idOrFirstObjectSelector = {}, options = {}) {
  127. const ret = Users.findOne(idOrFirstObjectSelector, options);
  128. return ret;
  129. },
  130. getUsers(selector = {}, options = {}, getQuery = false) {
  131. // getUsers(selector, options, getQuery) {
  132. // let ret = Users.find(undefined, {});
  133. // console.log("getUser count: ", ret.count())
  134. let ret = Users.find(selector, options);
  135. if (getQuery !== true) {
  136. ret = ret.fetch();
  137. }
  138. return ret;
  139. },
  140. getOrg(idOrFirstObjectSelector = {}, options = {}) {
  141. const ret = Org.findOne(idOrFirstObjectSelector, options);
  142. return ret;
  143. },
  144. getOrgs(selector = {}, options = {}, getQuery = false) {
  145. let ret = Org.find(selector, options);
  146. if (getQuery !== true) {
  147. ret = ret.fetch();
  148. }
  149. return ret;
  150. },
  151. getTeam(idOrFirstObjectSelector = {}, options = {}) {
  152. const ret = Team.findOne(idOrFirstObjectSelector, options);
  153. return ret;
  154. },
  155. getTeams(selector = {}, options = {}, getQuery = false) {
  156. let ret = Team.find(selector, options);
  157. if (getQuery !== true) {
  158. ret = ret.fetch();
  159. }
  160. return ret;
  161. },
  162. getActivity(idOrFirstObjectSelector = {}, options = {}) {
  163. const ret = Activities.findOne(idOrFirstObjectSelector, options);
  164. return ret;
  165. },
  166. getActivities(selector = {}, options = {}, getQuery = false) {
  167. let ret = Activities.find(selector, options);
  168. if (getQuery !== true) {
  169. ret = ret.fetch();
  170. }
  171. return ret;
  172. },
  173. getRule(idOrFirstObjectSelector = {}, options = {}) {
  174. const ret = Rules.findOne(idOrFirstObjectSelector, options);
  175. return ret;
  176. },
  177. getRules(selector = {}, options = {}, getQuery = false) {
  178. let ret = Rules.find(selector, options);
  179. if (getQuery !== true) {
  180. ret = ret.fetch();
  181. }
  182. return ret;
  183. },
  184. getAction(idOrFirstObjectSelector = {}, options = {}) {
  185. const ret = Actions.findOne(idOrFirstObjectSelector, options);
  186. return ret;
  187. },
  188. getActions(selector = {}, options = {}, getQuery = false) {
  189. let ret = Actions.find(selector, options);
  190. if (getQuery !== true) {
  191. ret = ret.fetch();
  192. }
  193. return ret;
  194. },
  195. getTrigger(idOrFirstObjectSelector = {}, options = {}) {
  196. const ret = Triggers.findOne(idOrFirstObjectSelector, options);
  197. return ret;
  198. },
  199. getTriggers(selector = {}, options = {}, getQuery = false) {
  200. let ret = Triggers.find(selector, options);
  201. if (getQuery !== true) {
  202. ret = ret.fetch();
  203. }
  204. return ret;
  205. },
  206. getImpersonatedUser(idOrFirstObjectSelector = {}, options = {}) {
  207. const ret = ImpersonatedUsers.findOne(idOrFirstObjectSelector, options);
  208. return ret;
  209. },
  210. getImpersonatedUsers(selector = {}, options = {}, getQuery = false) {
  211. let ret = ImpersonatedUsers.find(selector, options);
  212. if (getQuery !== true) {
  213. ret = ret.fetch();
  214. }
  215. return ret;
  216. },
  217. getIntegration(idOrFirstObjectSelector = {}, options = {}) {
  218. const ret = Integrations.findOne(idOrFirstObjectSelector, options);
  219. return ret;
  220. },
  221. getIntegrations(selector = {}, options = {}, getQuery = false) {
  222. let ret = Integrations.find(selector, options);
  223. if (getQuery !== true) {
  224. ret = ret.fetch();
  225. }
  226. return ret;
  227. },
  228. getSessionData(idOrFirstObjectSelector = {}, options = {}) {
  229. const ret = SessionData.findOne(idOrFirstObjectSelector, options);
  230. return ret;
  231. },
  232. getSessionDatas(selector = {}, options = {}, getQuery = false) {
  233. let ret = SessionData.find(selector, options);
  234. if (getQuery !== true) {
  235. ret = ret.fetch();
  236. }
  237. return ret;
  238. },
  239. getInvitationCode(idOrFirstObjectSelector = {}, options = {}) {
  240. const ret = InvitationCodes.findOne(idOrFirstObjectSelector, options);
  241. return ret;
  242. },
  243. getInvitationCodes(selector = {}, options = {}, getQuery = false) {
  244. let ret = InvitationCodes.find(selector, options);
  245. if (getQuery !== true) {
  246. ret = ret.fetch();
  247. }
  248. return ret;
  249. },
  250. getCurrentSetting() {
  251. const ret = Settings.findOne();
  252. return ret;
  253. },
  254. getCurrentUser() {
  255. const ret = Meteor.user();
  256. return ret;
  257. },
  258. }
  259. // only the Client is reactive
  260. // saving the result has a big advantage if the query is big and often searched for the same data again and again
  261. // if the data is changed in the client, the data is saved to the server and depending code is reactive called again
  262. ReactiveCacheClient = {
  263. getBoard(idOrFirstObjectSelector = {}, options = {}) {
  264. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  265. if (!this.__board) {
  266. this.__board = new DataCache(_idOrFirstObjectSelect => {
  267. const __select = Jsons.parse(_idOrFirstObjectSelect);
  268. const _ret = Boards.findOne(__select.idOrFirstObjectSelector, __select.options);
  269. return _ret;
  270. });
  271. }
  272. const ret = this.__board.get(Jsons.stringify(idOrFirstObjectSelect));
  273. return ret;
  274. },
  275. getBoards(selector = {}, options = {}, getQuery = false) {
  276. const select = {selector, options, getQuery}
  277. if (!this.__boards) {
  278. this.__boards = new DataCache(_select => {
  279. const __select = Jsons.parse(_select);
  280. let _ret = Boards.find(__select.selector, __select.options);
  281. if (__select.getQuery !== true) {
  282. _ret = _ret.fetch();
  283. }
  284. return _ret;
  285. });
  286. }
  287. const ret = this.__boards.get(Jsons.stringify(select));
  288. return ret;
  289. },
  290. getList(idOrFirstObjectSelector = {}, options = {}) {
  291. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  292. if (!this.__list) {
  293. this.__list = new DataCache(_idOrFirstObjectSelect => {
  294. const __select = Jsons.parse(_idOrFirstObjectSelect);
  295. const _ret = Lists.findOne(__select.idOrFirstObjectSelector, __select.options);
  296. return _ret;
  297. });
  298. }
  299. const ret = this.__list.get(Jsons.stringify(idOrFirstObjectSelect));
  300. return ret;
  301. },
  302. getLists(selector = {}, options = {}, getQuery = false) {
  303. const select = {selector, options, getQuery}
  304. if (!this.__lists) {
  305. this.__lists = new DataCache(_select => {
  306. const __select = Jsons.parse(_select);
  307. let _ret = Lists.find(__select.selector, __select.options);
  308. if (__select.getQuery !== true) {
  309. _ret = _ret.fetch();
  310. }
  311. return _ret;
  312. });
  313. }
  314. const ret = this.__lists.get(Jsons.stringify(select));
  315. return ret;
  316. },
  317. getSwimlane(idOrFirstObjectSelector = {}, options = {}) {
  318. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  319. if (!this.__swimlane) {
  320. this.__swimlane = new DataCache(_idOrFirstObjectSelect => {
  321. const __select = Jsons.parse(_idOrFirstObjectSelect);
  322. const _ret = Swimlanes.findOne(__select.idOrFirstObjectSelector, __select.options);
  323. return _ret;
  324. });
  325. }
  326. const ret = this.__swimlane.get(Jsons.stringify(idOrFirstObjectSelect));
  327. return ret;
  328. },
  329. getSwimlanes(selector = {}, options = {}, getQuery = false) {
  330. const select = {selector, options, getQuery}
  331. if (!this.__swimlanes) {
  332. this.__swimlanes = new DataCache(_select => {
  333. const __select = Jsons.parse(_select);
  334. let _ret = Swimlanes.find(__select.selector, __select.options);
  335. if (__select.getQuery !== true) {
  336. _ret = _ret.fetch();
  337. }
  338. return _ret;
  339. });
  340. }
  341. const ret = this.__swimlanes.get(Jsons.stringify(select));
  342. return ret;
  343. },
  344. getChecklist(idOrFirstObjectSelector = {}, options = {}) {
  345. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  346. if (!this.__checklist) {
  347. this.__checklist = new DataCache(_idOrFirstObjectSelect => {
  348. const __select = Jsons.parse(_idOrFirstObjectSelect);
  349. const _ret = Checklists.findOne(__select.idOrFirstObjectSelector, __select.options);
  350. return _ret;
  351. });
  352. }
  353. const ret = this.__checklist.get(Jsons.stringify(idOrFirstObjectSelect));
  354. return ret;
  355. },
  356. getChecklists(selector = {}, options = {}, getQuery = false) {
  357. const select = {selector, options, getQuery}
  358. if (!this.__checklists) {
  359. this.__checklists = new DataCache(_select => {
  360. const __select = Jsons.parse(_select);
  361. let _ret = Checklists.find(__select.selector, __select.options);
  362. if (__select.getQuery !== true) {
  363. _ret = _ret.fetch();
  364. }
  365. return _ret;
  366. });
  367. }
  368. const ret = this.__checklists.get(Jsons.stringify(select));
  369. return ret;
  370. },
  371. getChecklistItem(idOrFirstObjectSelector = {}, options = {}) {
  372. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  373. if (!this.__checklistItem) {
  374. this.__checklistItem = new DataCache(_idOrFirstObjectSelect => {
  375. const __select = Jsons.parse(_idOrFirstObjectSelect);
  376. const _ret = ChecklistItems.findOne(__select.idOrFirstObjectSelector, __select.options);
  377. return _ret;
  378. });
  379. }
  380. const ret = this.__checklistItem.get(Jsons.stringify(idOrFirstObjectSelect));
  381. return ret;
  382. },
  383. getChecklistItems(selector = {}, options = {}, getQuery = false) {
  384. const select = {selector, options, getQuery}
  385. if (!this.__checklistItems) {
  386. this.__checklistItems = new DataCache(_select => {
  387. const __select = Jsons.parse(_select);
  388. let _ret = ChecklistItems.find(__select.selector, __select.options);
  389. if (__select.getQuery !== true) {
  390. _ret = _ret.fetch();
  391. }
  392. return _ret;
  393. });
  394. }
  395. const ret = this.__checklistItems.get(Jsons.stringify(select));
  396. return ret;
  397. },
  398. getCard(idOrFirstObjectSelector = {}, options = {}) {
  399. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  400. if (!this.__card) {
  401. this.__card = new DataCache(_idOrFirstObjectSelect => {
  402. const __select = Jsons.parse(_idOrFirstObjectSelect);
  403. const _ret = Cards.findOne(__select.idOrFirstObjectSelector, __select.options);
  404. return _ret;
  405. });
  406. }
  407. const ret = this.__card.get(Jsons.stringify(idOrFirstObjectSelect));
  408. return ret;
  409. },
  410. getCards(selector = {}, options = {}, getQuery = false) {
  411. const select = {selector, options, getQuery}
  412. if (!this.__cards) {
  413. this.__cards = new DataCache(_select => {
  414. const __select = Jsons.parse(_select);
  415. let _ret = Cards.find(__select.selector, __select.options);
  416. if (__select.getQuery !== true) {
  417. _ret = _ret.fetch();
  418. }
  419. return _ret;
  420. });
  421. }
  422. const ret = this.__cards.get(Jsons.stringify(select));
  423. return ret;
  424. },
  425. getCardComment(idOrFirstObjectSelector = {}, options = {}) {
  426. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  427. if (!this.__cardComment) {
  428. this.__cardComment = new DataCache(_idOrFirstObjectSelect => {
  429. const __select = Jsons.parse(_idOrFirstObjectSelect);
  430. const _ret = CardComments.findOne(__select.idOrFirstObjectSelector, __select.options);
  431. return _ret;
  432. });
  433. }
  434. const ret = this.__cardComment.get(Jsons.stringify(idOrFirstObjectSelect));
  435. return ret;
  436. },
  437. getCardComments(selector = {}, options = {}, getQuery = false) {
  438. const select = {selector, options, getQuery}
  439. if (!this.__cardComments) {
  440. this.__cardComments = new DataCache(_select => {
  441. const __select = Jsons.parse(_select);
  442. let _ret = CardComments.find(__select.selector, __select.options);
  443. if (__select.getQuery !== true) {
  444. _ret = _ret.fetch();
  445. }
  446. return _ret;
  447. });
  448. }
  449. const ret = this.__cardComments.get(Jsons.stringify(select));
  450. return ret;
  451. },
  452. getCardCommentReaction(idOrFirstObjectSelector = {}, options = {}) {
  453. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  454. if (!this.__cardCommentReaction) {
  455. this.__cardCommentReaction = new DataCache(_idOrFirstObjectSelect => {
  456. const __select = Jsons.parse(_idOrFirstObjectSelect);
  457. const _ret = CardCommentReactions.findOne(__select.idOrFirstObjectSelector, __select.options);
  458. return _ret;
  459. });
  460. }
  461. const ret = this.__cardCommentReaction.get(Jsons.stringify(idOrFirstObjectSelect));
  462. return ret;
  463. },
  464. getCardCommentReactions(selector = {}, options = {}, getQuery = false) {
  465. const select = {selector, options, getQuery}
  466. if (!this.__cardCommentReactions) {
  467. this.__cardCommentReactions = new DataCache(_select => {
  468. const __select = Jsons.parse(_select);
  469. let _ret = CardCommentReactions.find(__select.selector, __select.options);
  470. if (__select.getQuery !== true) {
  471. _ret = _ret.fetch();
  472. }
  473. return _ret;
  474. });
  475. }
  476. const ret = this.__cardCommentReactions.get(Jsons.stringify(select));
  477. return ret;
  478. },
  479. getCustomField(idOrFirstObjectSelector = {}, options = {}) {
  480. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  481. if (!this.__customField) {
  482. this.__customField = new DataCache(_idOrFirstObjectSelect => {
  483. const __select = Jsons.parse(_idOrFirstObjectSelect);
  484. const _ret = CustomFields.findOne(__select.idOrFirstObjectSelector, __select.options);
  485. return _ret;
  486. });
  487. }
  488. const ret = this.__customField.get(Jsons.stringify(idOrFirstObjectSelect));
  489. return ret;
  490. },
  491. getCustomFields(selector = {}, options = {}, getQuery = false) {
  492. const select = {selector, options, getQuery}
  493. if (!this.__customFields) {
  494. this.__customFields = new DataCache(_select => {
  495. const __select = Jsons.parse(_select);
  496. let _ret = CustomFields.find(__select.selector, __select.options);
  497. if (__select.getQuery !== true) {
  498. _ret = _ret.fetch();
  499. }
  500. return _ret;
  501. });
  502. }
  503. const ret = this.__customFields.get(Jsons.stringify(select));
  504. return ret;
  505. },
  506. getAttachment(idOrFirstObjectSelector = {}, options = {}) {
  507. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  508. if (!this.__attachment) {
  509. this.__attachment = new DataCache(_idOrFirstObjectSelect => {
  510. const __select = Jsons.parse(_idOrFirstObjectSelect);
  511. const _ret = Attachments.findOne(__select.idOrFirstObjectSelector, __select.options);
  512. return _ret;
  513. });
  514. }
  515. const ret = this.__attachment.get(Jsons.stringify(idOrFirstObjectSelect));
  516. return ret;
  517. },
  518. getAttachments(selector = {}, options = {}, getQuery = false) {
  519. const select = {selector, options, getQuery}
  520. if (!this.__attachments) {
  521. this.__attachments = new DataCache(_select => {
  522. const __select = Jsons.parse(_select);
  523. let _ret = Attachments.find(__select.selector, __select.options);
  524. if (__select.getQuery !== true) {
  525. _ret = _ret.fetch();
  526. }
  527. return _ret;
  528. });
  529. }
  530. const ret = this.__attachments.get(Jsons.stringify(select));
  531. return ret;
  532. },
  533. getAvatar(idOrFirstObjectSelector = {}, options = {}) {
  534. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  535. if (!this.__avatar) {
  536. this.__avatar = new DataCache(_idOrFirstObjectSelect => {
  537. const __select = Jsons.parse(_idOrFirstObjectSelect);
  538. const _ret = Avatars.findOne(__select.idOrFirstObjectSelector, __select.options);
  539. return _ret;
  540. });
  541. }
  542. const ret = this.__avatar.get(Jsons.stringify(idOrFirstObjectSelect));
  543. return ret;
  544. },
  545. getAvatars(selector = {}, options = {}, getQuery = false) {
  546. const select = {selector, options, getQuery}
  547. if (!this.__avatars) {
  548. this.__avatars = new DataCache(_select => {
  549. const __select = Jsons.parse(_select);
  550. let _ret = Avatars.find(__select.selector, __select.options);
  551. if (__select.getQuery !== true) {
  552. _ret = _ret.fetch();
  553. }
  554. return _ret;
  555. });
  556. }
  557. const ret = this.__avatars.get(Jsons.stringify(select));
  558. return ret;
  559. },
  560. getUser(idOrFirstObjectSelector = {}, options = {}) {
  561. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  562. if (!this.__user) {
  563. this.__user = new DataCache(_idOrFirstObjectSelect => {
  564. const __select = Jsons.parse(_idOrFirstObjectSelect);
  565. const _ret = Users.findOne(__select.idOrFirstObjectSelector, __select.options);
  566. return _ret;
  567. });
  568. }
  569. const ret = this.__user.get(Jsons.stringify(idOrFirstObjectSelect));
  570. return ret;
  571. },
  572. getUsers(selector = {}, options = {}, getQuery = false) {
  573. const select = {selector, options, getQuery}
  574. if (!this.__users) {
  575. this.__users = new DataCache(_select => {
  576. const __select = Jsons.parse(_select);
  577. let _ret = Users.find(__select.selector, __select.options);
  578. if (__select.getQuery !== true) {
  579. _ret = _ret.fetch();
  580. }
  581. return _ret;
  582. });
  583. }
  584. const ret = this.__users.get(Jsons.stringify(select));
  585. return ret;
  586. },
  587. getOrg(idOrFirstObjectSelector = {}, options = {}) {
  588. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  589. if (!this.__org) {
  590. this.__org = new DataCache(_idOrFirstObjectSelect => {
  591. const __select = Jsons.parse(_idOrFirstObjectSelect);
  592. const _ret = Org.findOne(__select.idOrFirstObjectSelector, __select.options);
  593. return _ret;
  594. });
  595. }
  596. const ret = this.__org.get(Jsons.stringify(idOrFirstObjectSelect));
  597. return ret;
  598. },
  599. getOrgs(selector = {}, options = {}, getQuery = false) {
  600. const select = {selector, options, getQuery}
  601. if (!this.__orgs) {
  602. this.__orgs = new DataCache(_select => {
  603. const __select = Jsons.parse(_select);
  604. let _ret = Org.find(__select.selector, __select.options);
  605. if (__select.getQuery !== true) {
  606. _ret = _ret.fetch();
  607. }
  608. return _ret;
  609. });
  610. }
  611. const ret = this.__orgs.get(Jsons.stringify(select));
  612. return ret;
  613. },
  614. getTeam(idOrFirstObjectSelector = {}, options = {}) {
  615. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  616. if (!this.__team) {
  617. this.__team = new DataCache(_idOrFirstObjectSelect => {
  618. const __select = Jsons.parse(_idOrFirstObjectSelect);
  619. const _ret = Team.findOne(__select.idOrFirstObjectSelector, __select.options);
  620. return _ret;
  621. });
  622. }
  623. const ret = this.__team.get(Jsons.stringify(idOrFirstObjectSelect));
  624. return ret;
  625. },
  626. getTeams(selector = {}, options = {}, getQuery = false) {
  627. const select = {selector, options, getQuery}
  628. if (!this.__teams) {
  629. this.__teams = new DataCache(_select => {
  630. const __select = Jsons.parse(_select);
  631. let _ret = Team.find(__select.selector, __select.options);
  632. if (__select.getQuery !== true) {
  633. _ret = _ret.fetch();
  634. }
  635. return _ret;
  636. });
  637. }
  638. const ret = this.__teams.get(Jsons.stringify(select));
  639. return ret;
  640. },
  641. getActivity(idOrFirstObjectSelector = {}, options = {}) {
  642. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  643. if (!this.__activity) {
  644. this.__activity = new DataCache(_idOrFirstObjectSelect => {
  645. const __select = Jsons.parse(_idOrFirstObjectSelect);
  646. const _ret = Activities.findOne(__select.idOrFirstObjectSelector, __select.options);
  647. return _ret;
  648. });
  649. }
  650. const ret = this.__activity.get(Jsons.stringify(idOrFirstObjectSelect));
  651. return ret;
  652. },
  653. getActivities(selector = {}, options = {}, getQuery = false) {
  654. const select = {selector, options, getQuery}
  655. if (!this.__activities) {
  656. this.__activities = new DataCache(_select => {
  657. const __select = Jsons.parse(_select);
  658. let _ret = Activities.find(__select.selector, __select.options);
  659. if (__select.getQuery !== true) {
  660. _ret = _ret.fetch();
  661. }
  662. return _ret;
  663. });
  664. }
  665. const ret = this.__activities.get(Jsons.stringify(select));
  666. return ret;
  667. },
  668. getRule(idOrFirstObjectSelector = {}, options = {}) {
  669. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  670. if (!this.__rule) {
  671. this.__rule = new DataCache(_idOrFirstObjectSelect => {
  672. const __select = Jsons.parse(_idOrFirstObjectSelect);
  673. const _ret = Rules.findOne(__select.idOrFirstObjectSelector, __select.options);
  674. return _ret;
  675. });
  676. }
  677. const ret = this.__rule.get(Jsons.stringify(idOrFirstObjectSelect));
  678. return ret;
  679. },
  680. getRules(selector = {}, options = {}, getQuery = false) {
  681. const select = {selector, options, getQuery}
  682. if (!this.__rules) {
  683. this.__rules = new DataCache(_select => {
  684. const __select = Jsons.parse(_select);
  685. let _ret = Rules.find(__select.selector, __select.options);
  686. if (__select.getQuery !== true) {
  687. _ret = _ret.fetch();
  688. }
  689. return _ret;
  690. });
  691. }
  692. const ret = this.__rules.get(Jsons.stringify(select));
  693. return ret;
  694. },
  695. getAction(idOrFirstObjectSelector = {}, options = {}) {
  696. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  697. if (!this.__action) {
  698. this.__action = new DataCache(_idOrFirstObjectSelect => {
  699. const __select = Jsons.parse(_idOrFirstObjectSelect);
  700. const _ret = Actions.findOne(__select.idOrFirstObjectSelector, __select.options);
  701. return _ret;
  702. });
  703. }
  704. const ret = this.__action.get(Jsons.stringify(idOrFirstObjectSelect));
  705. return ret;
  706. },
  707. getActions(selector = {}, options = {}, getQuery = false) {
  708. const select = {selector, options, getQuery}
  709. if (!this.__actions) {
  710. this.__actions = new DataCache(_select => {
  711. const __select = Jsons.parse(_select);
  712. let _ret = Actions.find(__select.selector, __select.options);
  713. if (__select.getQuery !== true) {
  714. _ret = _ret.fetch();
  715. }
  716. return _ret;
  717. });
  718. }
  719. const ret = this.__actions.get(Jsons.stringify(select));
  720. return ret;
  721. },
  722. getTrigger(idOrFirstObjectSelector = {}, options = {}) {
  723. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  724. if (!this.__trigger) {
  725. this.__trigger = new DataCache(_idOrFirstObjectSelect => {
  726. const __select = Jsons.parse(_idOrFirstObjectSelect);
  727. const _ret = Triggers.findOne(__select.idOrFirstObjectSelector, __select.options);
  728. return _ret;
  729. });
  730. }
  731. const ret = this.__trigger.get(Jsons.stringify(idOrFirstObjectSelect));
  732. return ret;
  733. },
  734. getTriggers(selector = {}, options = {}, getQuery = false) {
  735. const select = {selector, options, getQuery}
  736. if (!this.__triggers) {
  737. this.__triggers = new DataCache(_select => {
  738. const __select = Jsons.parse(_select);
  739. let _ret = Triggers.find(__select.selector, __select.options);
  740. if (__select.getQuery !== true) {
  741. _ret = _ret.fetch();
  742. }
  743. return _ret;
  744. });
  745. }
  746. const ret = this.__triggers.get(Jsons.stringify(select));
  747. return ret;
  748. },
  749. getImpersonatedUser(idOrFirstObjectSelector = {}, options = {}) {
  750. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  751. if (!this.__impersonatedUser) {
  752. this.__impersonatedUser = new DataCache(_idOrFirstObjectSelect => {
  753. const __select = Jsons.parse(_idOrFirstObjectSelect);
  754. const _ret = ImpersonatedUsers.findOne(__select.idOrFirstObjectSelector, __select.options);
  755. return _ret;
  756. });
  757. }
  758. const ret = this.__impersonatedUser.get(Jsons.stringify(idOrFirstObjectSelect));
  759. return ret;
  760. },
  761. getImpersonatedUsers(selector = {}, options = {}, getQuery = false) {
  762. const select = {selector, options, getQuery}
  763. if (!this.__impersonatedUsers) {
  764. this.__impersonatedUsers = new DataCache(_select => {
  765. const __select = Jsons.parse(_select);
  766. let _ret = ImpersonatedUsers.find(__select.selector, __select.options);
  767. if (__select.getQuery !== true) {
  768. _ret = _ret.fetch();
  769. }
  770. return _ret;
  771. });
  772. }
  773. const ret = this.__impersonatedUsers.get(Jsons.stringify(select));
  774. return ret;
  775. },
  776. getIntegration(idOrFirstObjectSelector = {}, options = {}) {
  777. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  778. if (!this.__integration) {
  779. this.__integration = new DataCache(_idOrFirstObjectSelect => {
  780. const __select = Jsons.parse(_idOrFirstObjectSelect);
  781. const _ret = Integrations.findOne(__select.idOrFirstObjectSelector, __select.options);
  782. return _ret;
  783. });
  784. }
  785. const ret = this.__integration.get(Jsons.stringify(idOrFirstObjectSelect));
  786. return ret;
  787. },
  788. getIntegrations(selector = {}, options = {}, getQuery = false) {
  789. const select = {selector, options, getQuery}
  790. if (!this.__integrations) {
  791. this.__integrations = new DataCache(_select => {
  792. const __select = Jsons.parse(_select);
  793. let _ret = Integrations.find(__select.selector, __select.options);
  794. if (__select.getQuery !== true) {
  795. _ret = _ret.fetch();
  796. }
  797. return _ret;
  798. });
  799. }
  800. const ret = this.__integrations.get(Jsons.stringify(select));
  801. return ret;
  802. },
  803. getInvitationCode(idOrFirstObjectSelector = {}, options = {}) {
  804. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  805. if (!this.__invitationCode) {
  806. this.__invitationCode = new DataCache(_idOrFirstObjectSelect => {
  807. const __select = Jsons.parse(_idOrFirstObjectSelect);
  808. const _ret = InvitationCodes.findOne(__select.idOrFirstObjectSelector, __select.options);
  809. return _ret;
  810. });
  811. }
  812. const ret = this.__invitationCode.get(Jsons.stringify(idOrFirstObjectSelect));
  813. return ret;
  814. },
  815. getInvitationCodes(selector = {}, options = {}, getQuery = false) {
  816. const select = {selector, options, getQuery}
  817. if (!this.__invitationCodes) {
  818. this.__invitationCodes = new DataCache(_select => {
  819. const __select = Jsons.parse(_select);
  820. let _ret = InvitationCodes.find(__select.selector, __select.options);
  821. if (__select.getQuery !== true) {
  822. _ret = _ret.fetch();
  823. }
  824. return _ret;
  825. });
  826. }
  827. const ret = this.__invitationCodes.get(Jsons.stringify(select));
  828. return ret;
  829. },
  830. getCurrentSetting() {
  831. if (!this.__currentSetting || !this.__currentSetting.get()) {
  832. this.__currentSetting = new DataCache(() => {
  833. const _ret = Settings.findOne();
  834. return _ret;
  835. });
  836. }
  837. const ret = this.__currentSetting.get();
  838. return ret;
  839. },
  840. getCurrentUser() {
  841. if (!this.__currentUser || !this.__currentUser.get()) {
  842. this.__currentUser = new DataCache(() => {
  843. const _ret = Meteor.user();
  844. return _ret;
  845. });
  846. }
  847. const ret = this.__currentUser.get();
  848. return ret;
  849. }
  850. }
  851. // global Reactive Cache class to avoid big overhead while searching for the same data often again
  852. // This class calls 2 implementation, for server and client code
  853. //
  854. // having this class here has several advantages:
  855. // - The Programmer hasn't to care about in which context he call's this class
  856. // - having all queries together in 1 class to make it possible to see which queries in Wekan happens, e.g. with console.log
  857. ReactiveCache = {
  858. getBoard(idOrFirstObjectSelector = {}, options = {}) {
  859. let ret;
  860. if (Meteor.isServer) {
  861. ret = ReactiveCacheServer.getBoard(idOrFirstObjectSelector, options);
  862. } else {
  863. ret = ReactiveCacheClient.getBoard(idOrFirstObjectSelector, options);
  864. }
  865. return ret;
  866. },
  867. getBoards(selector = {}, options = {}, getQuery = false) {
  868. let ret;
  869. if (Meteor.isServer) {
  870. ret = ReactiveCacheServer.getBoards(selector, options, getQuery);
  871. } else {
  872. ret = ReactiveCacheClient.getBoards(selector, options, getQuery);
  873. }
  874. return ret;
  875. },
  876. getList(idOrFirstObjectSelector = {}, options = {}) {
  877. let ret;
  878. if (Meteor.isServer) {
  879. ret = ReactiveCacheServer.getList(idOrFirstObjectSelector, options);
  880. } else {
  881. ret = ReactiveCacheClient.getList(idOrFirstObjectSelector, options);
  882. }
  883. return ret;
  884. },
  885. getLists(selector = {}, options = {}, getQuery = false) {
  886. let ret;
  887. if (Meteor.isServer) {
  888. ret = ReactiveCacheServer.getLists(selector, options, getQuery);
  889. } else {
  890. ret = ReactiveCacheClient.getLists(selector, options, getQuery);
  891. }
  892. return ret;
  893. },
  894. getSwimlane(idOrFirstObjectSelector = {}, options = {}) {
  895. let ret;
  896. if (Meteor.isServer) {
  897. ret = ReactiveCacheServer.getSwimlane(idOrFirstObjectSelector, options);
  898. } else {
  899. ret = ReactiveCacheClient.getSwimlane(idOrFirstObjectSelector, options);
  900. }
  901. return ret;
  902. },
  903. getSwimlanes(selector = {}, options = {}, getQuery = false) {
  904. let ret;
  905. if (Meteor.isServer) {
  906. ret = ReactiveCacheServer.getSwimlanes(selector, options, getQuery);
  907. } else {
  908. ret = ReactiveCacheClient.getSwimlanes(selector, options, getQuery);
  909. }
  910. return ret;
  911. },
  912. getChecklist(idOrFirstObjectSelector = {}, options = {}) {
  913. let ret;
  914. if (Meteor.isServer) {
  915. ret = ReactiveCacheServer.getChecklist(idOrFirstObjectSelector, options);
  916. } else {
  917. ret = ReactiveCacheClient.getChecklist(idOrFirstObjectSelector, options);
  918. }
  919. return ret;
  920. },
  921. getChecklists(selector = {}, options = {}, getQuery = false) {
  922. let ret;
  923. if (Meteor.isServer) {
  924. ret = ReactiveCacheServer.getChecklists(selector, options, getQuery);
  925. } else {
  926. ret = ReactiveCacheClient.getChecklists(selector, options, getQuery);
  927. }
  928. return ret;
  929. },
  930. getChecklistItem(idOrFirstObjectSelector = {}, options = {}) {
  931. let ret;
  932. if (Meteor.isServer) {
  933. ret = ReactiveCacheServer.getChecklistItem(idOrFirstObjectSelector, options);
  934. } else {
  935. ret = ReactiveCacheClient.getChecklistItem(idOrFirstObjectSelector, options);
  936. }
  937. return ret;
  938. },
  939. getChecklistItems(selector = {}, options = {}, getQuery = false) {
  940. let ret;
  941. if (Meteor.isServer) {
  942. ret = ReactiveCacheServer.getChecklistItems(selector, options, getQuery);
  943. } else {
  944. ret = ReactiveCacheClient.getChecklistItems(selector, options, getQuery);
  945. }
  946. return ret;
  947. },
  948. getCard(idOrFirstObjectSelector = {}, options = {}, noCache = false) {
  949. let ret;
  950. if (Meteor.isServer || noCache === true) {
  951. ret = ReactiveCacheServer.getCard(idOrFirstObjectSelector, options);
  952. } else {
  953. ret = ReactiveCacheClient.getCard(idOrFirstObjectSelector, options);
  954. }
  955. return ret;
  956. },
  957. getCards(selector = {}, options = {}, getQuery = false) {
  958. let ret;
  959. if (Meteor.isServer) {
  960. ret = ReactiveCacheServer.getCards(selector, options, getQuery);
  961. } else {
  962. ret = ReactiveCacheClient.getCards(selector, options, getQuery);
  963. }
  964. return ret;
  965. },
  966. getCardComment(idOrFirstObjectSelector = {}, options = {}) {
  967. let ret;
  968. if (Meteor.isServer) {
  969. ret = ReactiveCacheServer.getCardComment(idOrFirstObjectSelector, options);
  970. } else {
  971. ret = ReactiveCacheClient.getCardComment(idOrFirstObjectSelector, options);
  972. }
  973. return ret;
  974. },
  975. getCardComments(selector = {}, options = {}, getQuery = false) {
  976. let ret;
  977. if (Meteor.isServer) {
  978. ret = ReactiveCacheServer.getCardComments(selector, options, getQuery);
  979. } else {
  980. ret = ReactiveCacheClient.getCardComments(selector, options, getQuery);
  981. }
  982. return ret;
  983. },
  984. getCardCommentReaction(idOrFirstObjectSelector = {}, options = {}) {
  985. let ret;
  986. if (Meteor.isServer) {
  987. ret = ReactiveCacheServer.getCardCommentReaction(idOrFirstObjectSelector, options);
  988. } else {
  989. ret = ReactiveCacheClient.getCardCommentReaction(idOrFirstObjectSelector, options);
  990. }
  991. return ret;
  992. },
  993. getCardCommentReactions(selector = {}, options = {}, getQuery = false) {
  994. let ret;
  995. if (Meteor.isServer) {
  996. ret = ReactiveCacheServer.getCardCommentReactions(selector, options, getQuery);
  997. } else {
  998. ret = ReactiveCacheClient.getCardCommentReactions(selector, options, getQuery);
  999. }
  1000. return ret;
  1001. },
  1002. getCustomField(idOrFirstObjectSelector = {}, options = {}) {
  1003. let ret;
  1004. if (Meteor.isServer) {
  1005. ret = ReactiveCacheServer.getCustomField(idOrFirstObjectSelector, options);
  1006. } else {
  1007. ret = ReactiveCacheClient.getCustomField(idOrFirstObjectSelector, options);
  1008. }
  1009. return ret;
  1010. },
  1011. getCustomFields(selector = {}, options = {}, getQuery = false) {
  1012. let ret;
  1013. if (Meteor.isServer) {
  1014. ret = ReactiveCacheServer.getCustomFields(selector, options, getQuery);
  1015. } else {
  1016. ret = ReactiveCacheClient.getCustomFields(selector, options, getQuery);
  1017. }
  1018. return ret;
  1019. },
  1020. getAttachment(idOrFirstObjectSelector = {}, options = {}) {
  1021. let ret;
  1022. if (Meteor.isServer) {
  1023. ret = ReactiveCacheServer.getAttachment(idOrFirstObjectSelector, options);
  1024. } else {
  1025. ret = ReactiveCacheClient.getAttachment(idOrFirstObjectSelector, options);
  1026. }
  1027. return ret;
  1028. },
  1029. getAttachments(selector = {}, options = {}, getQuery = false) {
  1030. let ret;
  1031. if (Meteor.isServer) {
  1032. ret = ReactiveCacheServer.getAttachments(selector, options, getQuery);
  1033. } else {
  1034. ret = ReactiveCacheClient.getAttachments(selector, options, getQuery);
  1035. }
  1036. return ret;
  1037. },
  1038. getAvatar(idOrFirstObjectSelector = {}, options = {}) {
  1039. let ret;
  1040. if (Meteor.isServer) {
  1041. ret = ReactiveCacheServer.getAvatar(idOrFirstObjectSelector, options);
  1042. } else {
  1043. ret = ReactiveCacheClient.getAvatar(idOrFirstObjectSelector, options);
  1044. }
  1045. return ret;
  1046. },
  1047. getAvatars(selector = {}, options = {}, getQuery = false) {
  1048. let ret;
  1049. if (Meteor.isServer) {
  1050. ret = ReactiveCacheServer.getAvatars(selector, options, getQuery);
  1051. } else {
  1052. ret = ReactiveCacheClient.getAvatars(selector, options, getQuery);
  1053. }
  1054. return ret;
  1055. },
  1056. getUser(idOrFirstObjectSelector = {}, options = {}) {
  1057. let ret;
  1058. if (Meteor.isServer) {
  1059. ret = ReactiveCacheServer.getUser(idOrFirstObjectSelector, options);
  1060. } else {
  1061. ret = ReactiveCacheClient.getUser(idOrFirstObjectSelector, options);
  1062. }
  1063. return ret;
  1064. },
  1065. getUsers(selector = {}, options = {}, getQuery = false) {
  1066. let ret;
  1067. if (Meteor.isServer) {
  1068. ret = ReactiveCacheServer.getUsers(selector, options, getQuery);
  1069. } else {
  1070. ret = ReactiveCacheClient.getUsers(selector, options, getQuery);
  1071. }
  1072. return ret;
  1073. },
  1074. getOrg(idOrFirstObjectSelector = {}, options = {}) {
  1075. let ret;
  1076. if (Meteor.isServer) {
  1077. ret = ReactiveCacheServer.getOrg(idOrFirstObjectSelector, options);
  1078. } else {
  1079. ret = ReactiveCacheClient.getOrg(idOrFirstObjectSelector, options);
  1080. }
  1081. return ret;
  1082. },
  1083. getOrgs(selector = {}, options = {}, getQuery = false) {
  1084. let ret;
  1085. if (Meteor.isServer) {
  1086. ret = ReactiveCacheServer.getOrgs(selector, options, getQuery);
  1087. } else {
  1088. ret = ReactiveCacheClient.getOrgs(selector, options, getQuery);
  1089. }
  1090. return ret;
  1091. },
  1092. getTeam(idOrFirstObjectSelector = {}, options = {}) {
  1093. let ret;
  1094. if (Meteor.isServer) {
  1095. ret = ReactiveCacheServer.getTeam(idOrFirstObjectSelector, options);
  1096. } else {
  1097. ret = ReactiveCacheClient.getTeam(idOrFirstObjectSelector, options);
  1098. }
  1099. return ret;
  1100. },
  1101. getTeams(selector = {}, options = {}, getQuery = false) {
  1102. let ret;
  1103. if (Meteor.isServer) {
  1104. ret = ReactiveCacheServer.getTeams(selector, options, getQuery);
  1105. } else {
  1106. ret = ReactiveCacheClient.getTeams(selector, options, getQuery);
  1107. }
  1108. return ret;
  1109. },
  1110. getActivity(idOrFirstObjectSelector = {}, options = {}) {
  1111. let ret;
  1112. if (Meteor.isServer) {
  1113. ret = ReactiveCacheServer.getActivity(idOrFirstObjectSelector, options);
  1114. } else {
  1115. ret = ReactiveCacheClient.getActivity(idOrFirstObjectSelector, options);
  1116. }
  1117. return ret;
  1118. },
  1119. getActivities(selector = {}, options = {}, getQuery = false) {
  1120. let ret;
  1121. if (Meteor.isServer) {
  1122. ret = ReactiveCacheServer.getActivities(selector, options, getQuery);
  1123. } else {
  1124. ret = ReactiveCacheClient.getActivities(selector, options, getQuery);
  1125. }
  1126. return ret;
  1127. },
  1128. getRule(idOrFirstObjectSelector = {}, options = {}) {
  1129. let ret;
  1130. if (Meteor.isServer) {
  1131. ret = ReactiveCacheServer.getRule(idOrFirstObjectSelector, options);
  1132. } else {
  1133. ret = ReactiveCacheClient.getRule(idOrFirstObjectSelector, options);
  1134. }
  1135. return ret;
  1136. },
  1137. getRules(selector = {}, options = {}, getQuery = false) {
  1138. let ret;
  1139. if (Meteor.isServer) {
  1140. ret = ReactiveCacheServer.getRules(selector, options, getQuery);
  1141. } else {
  1142. ret = ReactiveCacheClient.getRules(selector, options, getQuery);
  1143. }
  1144. return ret;
  1145. },
  1146. getAction(idOrFirstObjectSelector = {}, options = {}) {
  1147. let ret;
  1148. if (Meteor.isServer) {
  1149. ret = ReactiveCacheServer.getAction(idOrFirstObjectSelector, options);
  1150. } else {
  1151. ret = ReactiveCacheClient.getAction(idOrFirstObjectSelector, options);
  1152. }
  1153. return ret;
  1154. },
  1155. getActions(selector = {}, options = {}, getQuery = false) {
  1156. let ret;
  1157. if (Meteor.isServer) {
  1158. ret = ReactiveCacheServer.getActions(selector, options, getQuery);
  1159. } else {
  1160. ret = ReactiveCacheClient.getActions(selector, options, getQuery);
  1161. }
  1162. return ret;
  1163. },
  1164. getTrigger(idOrFirstObjectSelector = {}, options = {}) {
  1165. let ret;
  1166. if (Meteor.isServer) {
  1167. ret = ReactiveCacheServer.getTrigger(idOrFirstObjectSelector, options);
  1168. } else {
  1169. ret = ReactiveCacheClient.getTrigger(idOrFirstObjectSelector, options);
  1170. }
  1171. return ret;
  1172. },
  1173. getTriggers(selector = {}, options = {}, getQuery = false) {
  1174. let ret;
  1175. if (Meteor.isServer) {
  1176. ret = ReactiveCacheServer.getTriggers(selector, options, getQuery);
  1177. } else {
  1178. ret = ReactiveCacheClient.getTriggers(selector, options, getQuery);
  1179. }
  1180. return ret;
  1181. },
  1182. getImpersonatedUser(idOrFirstObjectSelector = {}, options = {}) {
  1183. let ret;
  1184. if (Meteor.isServer) {
  1185. ret = ReactiveCacheServer.getImpersonatedUser(idOrFirstObjectSelector, options);
  1186. } else {
  1187. ret = ReactiveCacheClient.getImpersonatedUser(idOrFirstObjectSelector, options);
  1188. }
  1189. return ret;
  1190. },
  1191. getImpersonatedUsers(selector = {}, options = {}, getQuery = false) {
  1192. let ret;
  1193. if (Meteor.isServer) {
  1194. ret = ReactiveCacheServer.getImpersonatedUsers(selector, options, getQuery);
  1195. } else {
  1196. ret = ReactiveCacheClient.getImpersonatedUsers(selector, options, getQuery);
  1197. }
  1198. return ret;
  1199. },
  1200. getIntegration(idOrFirstObjectSelector = {}, options = {}) {
  1201. let ret;
  1202. if (Meteor.isServer) {
  1203. ret = ReactiveCacheServer.getIntegration(idOrFirstObjectSelector, options);
  1204. } else {
  1205. ret = ReactiveCacheClient.getIntegration(idOrFirstObjectSelector, options);
  1206. }
  1207. return ret;
  1208. },
  1209. getIntegrations(selector = {}, options = {}, getQuery = false) {
  1210. let ret;
  1211. if (Meteor.isServer) {
  1212. ret = ReactiveCacheServer.getIntegrations(selector, options, getQuery);
  1213. } else {
  1214. ret = ReactiveCacheClient.getIntegrations(selector, options, getQuery);
  1215. }
  1216. return ret;
  1217. },
  1218. getSessionData(idOrFirstObjectSelector = {}, options = {}) {
  1219. // no reactive cache, otherwise global search will not work anymore
  1220. let ret = ReactiveCacheServer.getSessionData(idOrFirstObjectSelector, options);
  1221. return ret;
  1222. },
  1223. getSessionDatas(selector = {}, options = {}, getQuery = false) {
  1224. // no reactive cache, otherwise global search will not work anymore
  1225. let ret = ReactiveCacheServer.getSessionDatas(selector, options, getQuery);
  1226. return ret;
  1227. },
  1228. getInvitationCode(idOrFirstObjectSelector = {}, options = {}) {
  1229. let ret;
  1230. if (Meteor.isServer) {
  1231. ret = ReactiveCacheServer.getInvitationCode(idOrFirstObjectSelector, options);
  1232. } else {
  1233. ret = ReactiveCacheClient.getInvitationCode(idOrFirstObjectSelector, options);
  1234. }
  1235. return ret;
  1236. },
  1237. getInvitationCodes(selector = {}, options = {}, getQuery = false) {
  1238. let ret;
  1239. if (Meteor.isServer) {
  1240. ret = ReactiveCacheServer.getInvitationCodes(selector, options, getQuery);
  1241. } else {
  1242. ret = ReactiveCacheClient.getInvitationCodes(selector, options, getQuery);
  1243. }
  1244. return ret;
  1245. },
  1246. getCurrentSetting() {
  1247. let ret;
  1248. if (Meteor.isServer) {
  1249. ret = ReactiveCacheServer.getCurrentSetting();
  1250. } else {
  1251. ret = ReactiveCacheClient.getCurrentSetting();
  1252. }
  1253. return ret;
  1254. },
  1255. getCurrentUser() {
  1256. let ret;
  1257. if (Meteor.isServer) {
  1258. ret = ReactiveCacheServer.getCurrentUser();
  1259. } else {
  1260. ret = ReactiveCacheClient.getCurrentUser();
  1261. }
  1262. return ret;
  1263. },
  1264. getTranslations(selector, options, getQuery) {
  1265. let ret = Translation.find(selector, options);
  1266. if (getQuery !== true) {
  1267. ret = ret.fetch();
  1268. }
  1269. return ret;
  1270. },
  1271. getTranslation(idOrFirstObjectSelector, options) {
  1272. const ret = Translation.findOne(idOrFirstObjectSelector, options);
  1273. return ret;
  1274. }
  1275. }
  1276. // Client side little MiniMongo DB "Index"
  1277. ReactiveMiniMongoIndex = {
  1278. getSubTasksWithParentId(parentId, addSelect = {}, options) {
  1279. let ret = []
  1280. if (parentId) {
  1281. const select = {addSelect, options}
  1282. if (!this.__subTasksWithId) {
  1283. this.__subTasksWithId = new DataCache(_select => {
  1284. const __select = Jsons.parse(_select);
  1285. const _subTasks = ReactiveCache.getCards(
  1286. { parentId: { $exists: true },
  1287. ...__select.addSelect,
  1288. }, __select.options);
  1289. const _ret = _.groupBy(_subTasks, 'parentId')
  1290. return _ret;
  1291. });
  1292. }
  1293. ret = this.__subTasksWithId.get(Jsons.stringify(select));
  1294. if (ret) {
  1295. ret = ret[parentId] || [];
  1296. }
  1297. }
  1298. return ret;
  1299. },
  1300. getChecklistsWithCardId(cardId, addSelect = {}, options) {
  1301. let ret = []
  1302. if (cardId) {
  1303. const select = {addSelect, options}
  1304. if (!this.__checklistsWithId) {
  1305. this.__checklistsWithId = new DataCache(_select => {
  1306. const __select = Jsons.parse(_select);
  1307. const _checklists = ReactiveCache.getChecklists(
  1308. { cardId: { $exists: true },
  1309. ...__select.addSelect,
  1310. }, __select.options);
  1311. const _ret = _.groupBy(_checklists, 'cardId')
  1312. return _ret;
  1313. });
  1314. }
  1315. ret = this.__checklistsWithId.get(Jsons.stringify(select));
  1316. if (ret) {
  1317. ret = ret[cardId] || [];
  1318. }
  1319. }
  1320. return ret;
  1321. },
  1322. getChecklistItemsWithChecklistId(checklistId, addSelect = {}, options) {
  1323. let ret = []
  1324. if (checklistId) {
  1325. const select = {addSelect, options}
  1326. if (!this.__checklistItemsWithId) {
  1327. this.__checklistItemsWithId = new DataCache(_select => {
  1328. const __select = Jsons.parse(_select);
  1329. const _checklistItems = ReactiveCache.getChecklistItems(
  1330. { checklistId: { $exists: true },
  1331. ...__select.addSelect,
  1332. }, __select.options);
  1333. const _ret = _.groupBy(_checklistItems, 'checklistId')
  1334. return _ret;
  1335. });
  1336. }
  1337. ret = this.__checklistItemsWithId.get(Jsons.stringify(select));
  1338. if (ret) {
  1339. ret = ret[checklistId] || [];
  1340. }
  1341. }
  1342. return ret;
  1343. },
  1344. getCardCommentsWithCardId(cardId, addSelect = {}, options) {
  1345. let ret = []
  1346. if (cardId) {
  1347. const select = {addSelect, options}
  1348. if (!this.__cardCommentsWithId) {
  1349. this.__cardCommentsWithId = new DataCache(_select => {
  1350. const __select = Jsons.parse(_select);
  1351. const _cardComments = ReactiveCache.getCardComments(
  1352. { cardId: { $exists: true },
  1353. ...__select.addSelect,
  1354. }, __select.options);
  1355. const _ret = _.groupBy(_cardComments, 'cardId')
  1356. return _ret;
  1357. });
  1358. }
  1359. ret = this.__cardCommentsWithId.get(Jsons.stringify(select));
  1360. if (ret) {
  1361. ret = ret[cardId] || [];
  1362. }
  1363. }
  1364. return ret;
  1365. }
  1366. }
  1367. export { ReactiveCache, ReactiveMiniMongoIndex };