2
0

reactiveCache.js 53 KB

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