reactiveCache.js 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087
  1. import { DataCache } from '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) {
  10. const ret = Boards.find(selector, options).fetch();
  11. return ret;
  12. },
  13. getList(idOrFirstObjectSelector, options) {
  14. const ret = Lists.findOne(idOrFirstObjectSelector, options);
  15. return ret;
  16. },
  17. getLists(selector, options) {
  18. const ret = Lists.find(selector, options).fetch();
  19. return ret;
  20. },
  21. getSwimlane(idOrFirstObjectSelector, options) {
  22. const ret = Swimlanes.findOne(idOrFirstObjectSelector, options);
  23. return ret;
  24. },
  25. getSwimlanes(selector, options) {
  26. const ret = Swimlanes.find(selector, options).fetch();
  27. return ret;
  28. },
  29. getChecklist(idOrFirstObjectSelector, options) {
  30. const ret = Checklists.findOne(idOrFirstObjectSelector, options);
  31. return ret;
  32. },
  33. getChecklists(selector, options) {
  34. const ret = Checklists.find(selector, options).fetch();
  35. return ret;
  36. },
  37. getChecklistItem(idOrFirstObjectSelector, options) {
  38. const ret = ChecklistItems.findOne(idOrFirstObjectSelector, options);
  39. return ret;
  40. },
  41. getChecklistItems(selector, options) {
  42. const ret = ChecklistItems.find(selector, options).fetch();
  43. return ret;
  44. },
  45. getCard(idOrFirstObjectSelector, options) {
  46. const ret = Cards.findOne(idOrFirstObjectSelector, options);
  47. return ret;
  48. },
  49. getCards(selector, options) {
  50. const ret = Cards.find(selector, options).fetch();
  51. return ret;
  52. },
  53. getCardComment(idOrFirstObjectSelector, options) {
  54. const ret = CardComments.findOne(idOrFirstObjectSelector, options);
  55. return ret;
  56. },
  57. getCardComments(selector, options) {
  58. const ret = CardComments.find(selector, options).fetch();
  59. return ret;
  60. },
  61. getCardCommentReaction(idOrFirstObjectSelector, options) {
  62. const ret = CardCommentReactions.findOne(idOrFirstObjectSelector, options);
  63. return ret;
  64. },
  65. getCardCommentReactions(selector, options) {
  66. const ret = CardCommentReactions.find(selector, options).fetch();
  67. return ret;
  68. },
  69. getCustomField(idOrFirstObjectSelector, options) {
  70. const ret = CustomFields.findOne(idOrFirstObjectSelector, options);
  71. return ret;
  72. },
  73. getCustomFields(selector, options) {
  74. const ret = CustomFields.find(selector, options).fetch();
  75. return ret;
  76. },
  77. getAttachment(idOrFirstObjectSelector, options) {
  78. const ret = Attachments.findOne(idOrFirstObjectSelector, options);
  79. return ret;
  80. },
  81. getAttachments(selector, options) {
  82. const ret = Attachments.find(selector, options).fetch();
  83. return ret;
  84. },
  85. getUser(idOrFirstObjectSelector, options) {
  86. const ret = Users.findOne(idOrFirstObjectSelector, options);
  87. return ret;
  88. },
  89. getUsers(selector, options) {
  90. const ret = Users.find(selector, options).fetch();
  91. return ret;
  92. },
  93. getOrg(idOrFirstObjectSelector, options) {
  94. const ret = Org.findOne(idOrFirstObjectSelector, options);
  95. return ret;
  96. },
  97. getOrgs(selector, options) {
  98. const ret = Org.find(selector, options).fetch();
  99. return ret;
  100. },
  101. getTeam(idOrFirstObjectSelector, options) {
  102. const ret = Team.findOne(idOrFirstObjectSelector, options);
  103. return ret;
  104. },
  105. getTeams(selector, options) {
  106. const ret = Team.find(selector, options).fetch();
  107. return ret;
  108. },
  109. getActivity(idOrFirstObjectSelector, options) {
  110. const ret = Activities.findOne(idOrFirstObjectSelector, options);
  111. return ret;
  112. },
  113. getActivities(selector, options) {
  114. const ret = Activities.find(selector, options).fetch();
  115. return ret;
  116. },
  117. getRule(idOrFirstObjectSelector, options) {
  118. const ret = Rules.findOne(idOrFirstObjectSelector, options);
  119. return ret;
  120. },
  121. getRules(selector, options) {
  122. const ret = Rules.find(selector, options).fetch();
  123. return ret;
  124. },
  125. getAction(idOrFirstObjectSelector, options) {
  126. const ret = Actions.findOne(idOrFirstObjectSelector, options);
  127. return ret;
  128. },
  129. getActions(selector, options) {
  130. const ret = Actions.find(selector, options).fetch();
  131. return ret;
  132. },
  133. getTrigger(idOrFirstObjectSelector, options) {
  134. const ret = Triggers.findOne(idOrFirstObjectSelector, options);
  135. return ret;
  136. },
  137. getTriggers(selector, options) {
  138. const ret = Triggers.find(selector, options).fetch();
  139. return ret;
  140. },
  141. getImpersonatedUser(idOrFirstObjectSelector, options) {
  142. const ret = ImpersonatedUsers.findOne(idOrFirstObjectSelector, options);
  143. return ret;
  144. },
  145. getImpersonatedUsers(selector, options) {
  146. const ret = ImpersonatedUsers.find(selector, options).fetch();
  147. return ret;
  148. },
  149. getIntegration(idOrFirstObjectSelector, options) {
  150. const ret = Integrations.findOne(idOrFirstObjectSelector, options);
  151. return ret;
  152. },
  153. getIntegrations(selector, options) {
  154. const ret = Integrations.find(selector, options).fetch();
  155. return ret;
  156. },
  157. getSessionData(idOrFirstObjectSelector, options) {
  158. const ret = SessionData.findOne(idOrFirstObjectSelector, options);
  159. return ret;
  160. },
  161. getSessionDatas(selector, options) {
  162. const ret = SessionData.find(selector, options).fetch();
  163. return ret;
  164. },
  165. getInvitationCode(idOrFirstObjectSelector, options) {
  166. const ret = InvitationCodes.findOne(idOrFirstObjectSelector, options);
  167. return ret;
  168. },
  169. getInvitationCodes(selector, options) {
  170. const ret = InvitationCodes.find(selector, options).fetch();
  171. return ret;
  172. },
  173. getCurrentSetting() {
  174. const ret = Settings.findOne();
  175. return ret;
  176. },
  177. getCurrentUser() {
  178. const ret = Meteor.user();
  179. return ret;
  180. },
  181. }
  182. // only the Client is reactive
  183. // saving the result has a big advantage if the query is big and often searched for the same data again and again
  184. // if the data is changed in the client, the data is saved to the server and depending code is reactive called again
  185. ReactiveCacheClient = {
  186. getBoard(idOrFirstObjectSelector, options) {
  187. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  188. if (!this.__board) {
  189. this.__board = new DataCache(_idOrFirstObjectSelect => {
  190. const __select = Jsons.parse(_idOrFirstObjectSelect);
  191. const _ret = Boards.findOne(__select.idOrFirstObjectSelector, __select.options);
  192. return _ret;
  193. });
  194. }
  195. const ret = this.__board.get(Jsons.stringify(idOrFirstObjectSelect));
  196. return ret;
  197. },
  198. getBoards(selector, options) {
  199. const select = {selector, options}
  200. if (!this.__boards) {
  201. this.__boards = new DataCache(_select => {
  202. const __select = Jsons.parse(_select);
  203. const _ret = Boards.find(__select.selector, __select.options).fetch();
  204. return _ret;
  205. });
  206. }
  207. const ret = this.__boards.get(Jsons.stringify(select));
  208. return ret;
  209. },
  210. getList(idOrFirstObjectSelector, options) {
  211. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  212. if (!this.__list) {
  213. this.__list = new DataCache(_idOrFirstObjectSelect => {
  214. const __select = Jsons.parse(_idOrFirstObjectSelect);
  215. const _ret = Lists.findOne(__select.idOrFirstObjectSelector, __select.options);
  216. return _ret;
  217. });
  218. }
  219. const ret = this.__list.get(Jsons.stringify(idOrFirstObjectSelect));
  220. return ret;
  221. },
  222. getLists(selector, options) {
  223. const select = {selector, options}
  224. if (!this.__lists) {
  225. this.__lists = new DataCache(_select => {
  226. const __select = Jsons.parse(_select);
  227. const _ret = Lists.find(__select.selector, __select.options).fetch();
  228. return _ret;
  229. });
  230. }
  231. const ret = this.__lists.get(Jsons.stringify(select));
  232. return ret;
  233. },
  234. getSwimlane(idOrFirstObjectSelector, options) {
  235. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  236. if (!this.__swimlane) {
  237. this.__swimlane = new DataCache(_idOrFirstObjectSelect => {
  238. const __select = Jsons.parse(_idOrFirstObjectSelect);
  239. const _ret = Swimlanes.findOne(__select.idOrFirstObjectSelector, __select.options);
  240. return _ret;
  241. });
  242. }
  243. const ret = this.__swimlane.get(Jsons.stringify(idOrFirstObjectSelect));
  244. return ret;
  245. },
  246. getSwimlanes(selector, options) {
  247. const select = {selector, options}
  248. if (!this.__swimlanes) {
  249. this.__swimlanes = new DataCache(_select => {
  250. const __select = Jsons.parse(_select);
  251. const _ret = Swimlanes.find(__select.selector, __select.options).fetch();
  252. return _ret;
  253. });
  254. }
  255. const ret = this.__swimlanes.get(Jsons.stringify(select));
  256. return ret;
  257. },
  258. getChecklist(idOrFirstObjectSelector, options) {
  259. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  260. if (!this.__checklist) {
  261. this.__checklist = new DataCache(_idOrFirstObjectSelect => {
  262. const __select = Jsons.parse(_idOrFirstObjectSelect);
  263. const _ret = Checklists.findOne(__select.idOrFirstObjectSelector, __select.options);
  264. return _ret;
  265. });
  266. }
  267. const ret = this.__checklist.get(Jsons.stringify(idOrFirstObjectSelect));
  268. return ret;
  269. },
  270. getChecklists(selector, options) {
  271. const select = {selector, options}
  272. if (!this.__checklists) {
  273. this.__checklists = new DataCache(_select => {
  274. const __select = Jsons.parse(_select);
  275. const _ret = Checklists.find(__select.selector, __select.options).fetch();
  276. return _ret;
  277. });
  278. }
  279. const ret = this.__checklists.get(Jsons.stringify(select));
  280. return ret;
  281. },
  282. getChecklistItem(idOrFirstObjectSelector, options) {
  283. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  284. if (!this.__checklistItem) {
  285. this.__checklistItem = new DataCache(_idOrFirstObjectSelect => {
  286. const __select = Jsons.parse(_idOrFirstObjectSelect);
  287. const _ret = ChecklistItems.findOne(__select.idOrFirstObjectSelector, __select.options);
  288. return _ret;
  289. });
  290. }
  291. const ret = this.__checklistItem.get(Jsons.stringify(idOrFirstObjectSelect));
  292. return ret;
  293. },
  294. getChecklistItems(selector, options) {
  295. const select = {selector, options}
  296. if (!this.__checklistItems) {
  297. this.__checklistItems = new DataCache(_select => {
  298. const __select = Jsons.parse(_select);
  299. const _ret = ChecklistItems.find(__select.selector, __select.options).fetch();
  300. return _ret;
  301. });
  302. }
  303. const ret = this.__checklistItems.get(Jsons.stringify(select));
  304. return ret;
  305. },
  306. getCard(idOrFirstObjectSelector, options) {
  307. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  308. if (!this.__card) {
  309. this.__card = new DataCache(_idOrFirstObjectSelect => {
  310. const __select = Jsons.parse(_idOrFirstObjectSelect);
  311. const _ret = Cards.findOne(__select.idOrFirstObjectSelector, __select.options);
  312. return _ret;
  313. });
  314. }
  315. const ret = this.__card.get(Jsons.stringify(idOrFirstObjectSelect));
  316. return ret;
  317. },
  318. getCards(selector, options) {
  319. const select = {selector, options}
  320. if (!this.__cards) {
  321. this.__cards = new DataCache(_select => {
  322. const __select = Jsons.parse(_select);
  323. const _ret = Cards.find(__select.selector, __select.options).fetch();
  324. return _ret;
  325. });
  326. }
  327. const ret = this.__cards.get(Jsons.stringify(select));
  328. return ret;
  329. },
  330. getCardComment(idOrFirstObjectSelector, options) {
  331. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  332. if (!this.__cardComment) {
  333. this.__cardComment = new DataCache(_idOrFirstObjectSelect => {
  334. const __select = Jsons.parse(_idOrFirstObjectSelect);
  335. const _ret = CardComments.findOne(__select.idOrFirstObjectSelector, __select.options);
  336. return _ret;
  337. });
  338. }
  339. const ret = this.__cardComment.get(Jsons.stringify(idOrFirstObjectSelect));
  340. return ret;
  341. },
  342. getCardComments(selector, options) {
  343. const select = {selector, options}
  344. if (!this.__cardComments) {
  345. this.__cardComments = new DataCache(_select => {
  346. const __select = Jsons.parse(_select);
  347. const _ret = CardComments.find(__select.selector, __select.options).fetch();
  348. return _ret;
  349. });
  350. }
  351. const ret = this.__cardComments.get(Jsons.stringify(select));
  352. return ret;
  353. },
  354. getCardCommentReaction(idOrFirstObjectSelector, options) {
  355. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  356. if (!this.__cardCommentReaction) {
  357. this.__cardCommentReaction = new DataCache(_idOrFirstObjectSelect => {
  358. const __select = Jsons.parse(_idOrFirstObjectSelect);
  359. const _ret = CardCommentReactions.findOne(__select.idOrFirstObjectSelector, __select.options);
  360. return _ret;
  361. });
  362. }
  363. const ret = this.__cardCommentReaction.get(Jsons.stringify(idOrFirstObjectSelect));
  364. return ret;
  365. },
  366. getCardCommentReactions(selector, options) {
  367. const select = {selector, options}
  368. if (!this.__cardCommentReactions) {
  369. this.__cardCommentReactions = new DataCache(_select => {
  370. const __select = Jsons.parse(_select);
  371. const _ret = CardCommentReactions.find(__select.selector, __select.options).fetch();
  372. return _ret;
  373. });
  374. }
  375. const ret = this.__cardCommentReactions.get(Jsons.stringify(select));
  376. return ret;
  377. },
  378. getCustomField(idOrFirstObjectSelector, options) {
  379. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  380. if (!this.__customField) {
  381. this.__customField = new DataCache(_idOrFirstObjectSelect => {
  382. const __select = Jsons.parse(_idOrFirstObjectSelect);
  383. const _ret = CustomFields.findOne(__select.idOrFirstObjectSelector, __select.options);
  384. return _ret;
  385. });
  386. }
  387. const ret = this.__customField.get(Jsons.stringify(idOrFirstObjectSelect));
  388. return ret;
  389. },
  390. getCustomFields(selector, options) {
  391. const select = {selector, options}
  392. if (!this.__customFields) {
  393. this.__customFields = new DataCache(_select => {
  394. const __select = Jsons.parse(_select);
  395. const _ret = CustomFields.find(__select.selector, __select.options).fetch();
  396. return _ret;
  397. });
  398. }
  399. const ret = this.__customFields.get(Jsons.stringify(select));
  400. return ret;
  401. },
  402. getAttachment(idOrFirstObjectSelector, options) {
  403. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  404. if (!this.__attachment) {
  405. this.__attachment = new DataCache(_idOrFirstObjectSelect => {
  406. const __select = Jsons.parse(_idOrFirstObjectSelect);
  407. const _ret = Attachments.findOne(__select.idOrFirstObjectSelector, __select.options);
  408. return _ret;
  409. });
  410. }
  411. const ret = this.__attachment.get(Jsons.stringify(idOrFirstObjectSelect));
  412. return ret;
  413. },
  414. getAttachments(selector, options) {
  415. const select = {selector, options}
  416. if (!this.__attachments) {
  417. this.__attachments = new DataCache(_select => {
  418. const __select = Jsons.parse(_select);
  419. const _ret = Attachments.find(__select.selector, __select.options).fetch();
  420. return _ret;
  421. });
  422. }
  423. const ret = this.__attachments.get(Jsons.stringify(select));
  424. return ret;
  425. },
  426. getUser(idOrFirstObjectSelector, options) {
  427. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  428. if (!this.__user) {
  429. this.__user = new DataCache(_idOrFirstObjectSelect => {
  430. const __select = Jsons.parse(_idOrFirstObjectSelect);
  431. const _ret = Users.findOne(__select.idOrFirstObjectSelector, __select.options);
  432. return _ret;
  433. });
  434. }
  435. const ret = this.__user.get(Jsons.stringify(idOrFirstObjectSelect));
  436. return ret;
  437. },
  438. getUsers(selector, options) {
  439. const select = {selector, options}
  440. if (!this.__users) {
  441. this.__users = new DataCache(_select => {
  442. const __select = Jsons.parse(_select);
  443. const _ret = Users.find(__select.selector, __select.options).fetch();
  444. return _ret;
  445. });
  446. }
  447. const ret = this.__users.get(Jsons.stringify(select));
  448. return ret;
  449. },
  450. getOrg(idOrFirstObjectSelector, options) {
  451. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  452. if (!this.__org) {
  453. this.__org = new DataCache(_idOrFirstObjectSelect => {
  454. const __select = Jsons.parse(_idOrFirstObjectSelect);
  455. const _ret = Org.findOne(__select.idOrFirstObjectSelector, __select.options);
  456. return _ret;
  457. });
  458. }
  459. const ret = this.__org.get(Jsons.stringify(idOrFirstObjectSelect));
  460. return ret;
  461. },
  462. getOrgs(selector, options) {
  463. const select = {selector, options}
  464. if (!this.__orgs) {
  465. this.__orgs = new DataCache(_select => {
  466. const __select = Jsons.parse(_select);
  467. const _ret = Org.find(__select.selector, __select.options).fetch();
  468. return _ret;
  469. });
  470. }
  471. const ret = this.__orgs.get(Jsons.stringify(select));
  472. return ret;
  473. },
  474. getTeam(idOrFirstObjectSelector, options) {
  475. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  476. if (!this.__team) {
  477. this.__team = new DataCache(_idOrFirstObjectSelect => {
  478. const __select = Jsons.parse(_idOrFirstObjectSelect);
  479. const _ret = Team.findOne(__select.idOrFirstObjectSelector, __select.options);
  480. return _ret;
  481. });
  482. }
  483. const ret = this.__team.get(Jsons.stringify(idOrFirstObjectSelect));
  484. return ret;
  485. },
  486. getTeams(selector, options) {
  487. const select = {selector, options}
  488. if (!this.__teams) {
  489. this.__teams = new DataCache(_select => {
  490. const __select = Jsons.parse(_select);
  491. const _ret = Team.find(__select.selector, __select.options).fetch();
  492. return _ret;
  493. });
  494. }
  495. const ret = this.__teams.get(Jsons.stringify(select));
  496. return ret;
  497. },
  498. getActivity(idOrFirstObjectSelector, options) {
  499. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  500. if (!this.__activity) {
  501. this.__activity = new DataCache(_idOrFirstObjectSelect => {
  502. const __select = Jsons.parse(_idOrFirstObjectSelect);
  503. const _ret = Activities.findOne(__select.idOrFirstObjectSelector, __select.options);
  504. return _ret;
  505. });
  506. }
  507. const ret = this.__activity.get(Jsons.stringify(idOrFirstObjectSelect));
  508. return ret;
  509. },
  510. getActivities(selector, options) {
  511. const select = {selector, options}
  512. if (!this.__activities) {
  513. this.__activities = new DataCache(_select => {
  514. const __select = Jsons.parse(_select);
  515. const _ret = Activities.find(__select.selector, __select.options).fetch();
  516. return _ret;
  517. });
  518. }
  519. const ret = this.__activities.get(Jsons.stringify(select));
  520. return ret;
  521. },
  522. getRule(idOrFirstObjectSelector, options) {
  523. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  524. if (!this.__rule) {
  525. this.__rule = new DataCache(_idOrFirstObjectSelect => {
  526. const __select = Jsons.parse(_idOrFirstObjectSelect);
  527. const _ret = Rules.findOne(__select.idOrFirstObjectSelector, __select.options);
  528. return _ret;
  529. });
  530. }
  531. const ret = this.__rule.get(Jsons.stringify(idOrFirstObjectSelect));
  532. return ret;
  533. },
  534. getRules(selector, options) {
  535. const select = {selector, options}
  536. if (!this.__rules) {
  537. this.__rules = new DataCache(_select => {
  538. const __select = Jsons.parse(_select);
  539. const _ret = Rules.find(__select.selector, __select.options).fetch();
  540. return _ret;
  541. });
  542. }
  543. const ret = this.__rules.get(Jsons.stringify(select));
  544. return ret;
  545. },
  546. getAction(idOrFirstObjectSelector, options) {
  547. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  548. if (!this.__action) {
  549. this.__action = new DataCache(_idOrFirstObjectSelect => {
  550. const __select = Jsons.parse(_idOrFirstObjectSelect);
  551. const _ret = Actions.findOne(__select.idOrFirstObjectSelector, __select.options);
  552. return _ret;
  553. });
  554. }
  555. const ret = this.__action.get(Jsons.stringify(idOrFirstObjectSelect));
  556. return ret;
  557. },
  558. getActions(selector, options) {
  559. const select = {selector, options}
  560. if (!this.__actions) {
  561. this.__actions = new DataCache(_select => {
  562. const __select = Jsons.parse(_select);
  563. const _ret = Actions.find(__select.selector, __select.options).fetch();
  564. return _ret;
  565. });
  566. }
  567. const ret = this.__actions.get(Jsons.stringify(select));
  568. return ret;
  569. },
  570. getTrigger(idOrFirstObjectSelector, options) {
  571. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  572. if (!this.__trigger) {
  573. this.__trigger = new DataCache(_idOrFirstObjectSelect => {
  574. const __select = Jsons.parse(_idOrFirstObjectSelect);
  575. const _ret = Triggers.findOne(__select.idOrFirstObjectSelector, __select.options);
  576. return _ret;
  577. });
  578. }
  579. const ret = this.__trigger.get(Jsons.stringify(idOrFirstObjectSelect));
  580. return ret;
  581. },
  582. getTriggers(selector, options) {
  583. const select = {selector, options}
  584. if (!this.__triggers) {
  585. this.__triggers = new DataCache(_select => {
  586. const __select = Jsons.parse(_select);
  587. const _ret = Triggers.find(__select.selector, __select.options).fetch();
  588. return _ret;
  589. });
  590. }
  591. const ret = this.__triggers.get(Jsons.stringify(select));
  592. return ret;
  593. },
  594. getImpersonatedUser(idOrFirstObjectSelector, options) {
  595. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  596. if (!this.__impersonatedUser) {
  597. this.__impersonatedUser = new DataCache(_idOrFirstObjectSelect => {
  598. const __select = Jsons.parse(_idOrFirstObjectSelect);
  599. const _ret = ImpersonatedUsers.findOne(__select.idOrFirstObjectSelector, __select.options);
  600. return _ret;
  601. });
  602. }
  603. const ret = this.__impersonatedUser.get(Jsons.stringify(idOrFirstObjectSelect));
  604. return ret;
  605. },
  606. getImpersonatedUsers(selector, options) {
  607. const select = {selector, options}
  608. if (!this.__impersonatedUsers) {
  609. this.__impersonatedUsers = new DataCache(_select => {
  610. const __select = Jsons.parse(_select);
  611. const _ret = ImpersonatedUsers.find(__select.selector, __select.options).fetch();
  612. return _ret;
  613. });
  614. }
  615. const ret = this.__impersonatedUsers.get(Jsons.stringify(select));
  616. return ret;
  617. },
  618. getIntegration(idOrFirstObjectSelector, options) {
  619. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  620. if (!this.__integration) {
  621. this.__integration = new DataCache(_idOrFirstObjectSelect => {
  622. const __select = Jsons.parse(_idOrFirstObjectSelect);
  623. const _ret = Integrations.findOne(__select.idOrFirstObjectSelector, __select.options);
  624. return _ret;
  625. });
  626. }
  627. const ret = this.__integration.get(Jsons.stringify(idOrFirstObjectSelect));
  628. return ret;
  629. },
  630. getIntegrations(selector, options) {
  631. const select = {selector, options}
  632. if (!this.__integrations) {
  633. this.__integrations = new DataCache(_select => {
  634. const __select = Jsons.parse(_select);
  635. const _ret = Integrations.find(__select.selector, __select.options).fetch();
  636. return _ret;
  637. });
  638. }
  639. const ret = this.__integrations.get(Jsons.stringify(select));
  640. return ret;
  641. },
  642. getInvitationCode(idOrFirstObjectSelector, options) {
  643. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  644. if (!this.__invitationCode) {
  645. this.__invitationCode = new DataCache(_idOrFirstObjectSelect => {
  646. const __select = Jsons.parse(_idOrFirstObjectSelect);
  647. const _ret = InvitationCodes.findOne(__select.idOrFirstObjectSelector, __select.options);
  648. return _ret;
  649. });
  650. }
  651. const ret = this.__invitationCode.get(Jsons.stringify(idOrFirstObjectSelect));
  652. return ret;
  653. },
  654. getInvitationCodes(selector, options) {
  655. const select = {selector, options}
  656. if (!this.__invitationCodes) {
  657. this.__invitationCodes = new DataCache(_select => {
  658. const __select = Jsons.parse(_select);
  659. const _ret = InvitationCodes.find(__select.selector, __select.options).fetch();
  660. return _ret;
  661. });
  662. }
  663. const ret = this.__invitationCodes.get(Jsons.stringify(select));
  664. return ret;
  665. },
  666. getCurrentSetting() {
  667. if (!this.__currentSetting || !this.__currentSetting.get()) {
  668. this.__currentSetting = new DataCache(() => {
  669. const _ret = Settings.findOne();
  670. return _ret;
  671. });
  672. }
  673. const ret = this.__currentSetting.get();
  674. return ret;
  675. },
  676. getCurrentUser() {
  677. if (!this.__currentUser || !this.__currentUser.get()) {
  678. this.__currentUser = new DataCache(() => {
  679. const _ret = Meteor.user();
  680. return _ret;
  681. });
  682. }
  683. const ret = this.__currentUser.get();
  684. return ret;
  685. }
  686. }
  687. // global Reactive Cache class to avoid big overhead while searching for the same data often again
  688. // This class calls 2 implementation, for server and client code
  689. //
  690. // having this class here has several advantages:
  691. // - The Programmer hasn't to care about in which context he call's this class
  692. // - having all queries together in 1 class to make it possible to see which queries in Wekan happens, e.g. with console.log
  693. ReactiveCache = {
  694. getBoard(idOrFirstObjectSelector, options) {
  695. let ret;
  696. if (Meteor.isServer) {
  697. ret = ReactiveCacheServer.getBoard(idOrFirstObjectSelector, options);
  698. } else {
  699. ret = ReactiveCacheClient.getBoard(idOrFirstObjectSelector, options);
  700. }
  701. return ret;
  702. },
  703. getBoards(selector, options) {
  704. let ret;
  705. if (Meteor.isServer) {
  706. ret = ReactiveCacheServer.getBoards(selector, options);
  707. } else {
  708. ret = ReactiveCacheClient.getBoards(selector, options);
  709. }
  710. return ret;
  711. },
  712. getList(idOrFirstObjectSelector, options) {
  713. let ret;
  714. if (Meteor.isServer) {
  715. ret = ReactiveCacheServer.getList(idOrFirstObjectSelector, options);
  716. } else {
  717. ret = ReactiveCacheClient.getList(idOrFirstObjectSelector, options);
  718. }
  719. return ret;
  720. },
  721. getLists(selector, options) {
  722. let ret;
  723. if (Meteor.isServer) {
  724. ret = ReactiveCacheServer.getLists(selector, options);
  725. } else {
  726. ret = ReactiveCacheClient.getLists(selector, options);
  727. }
  728. return ret;
  729. },
  730. getSwimlane(idOrFirstObjectSelector, options) {
  731. let ret;
  732. if (Meteor.isServer) {
  733. ret = ReactiveCacheServer.getSwimlane(idOrFirstObjectSelector, options);
  734. } else {
  735. ret = ReactiveCacheClient.getSwimlane(idOrFirstObjectSelector, options);
  736. }
  737. return ret;
  738. },
  739. getSwimlanes(selector, options) {
  740. let ret;
  741. if (Meteor.isServer) {
  742. ret = ReactiveCacheServer.getSwimlanes(selector, options);
  743. } else {
  744. ret = ReactiveCacheClient.getSwimlanes(selector, options);
  745. }
  746. return ret;
  747. },
  748. getChecklist(idOrFirstObjectSelector, options) {
  749. let ret;
  750. if (Meteor.isServer) {
  751. ret = ReactiveCacheServer.getChecklist(idOrFirstObjectSelector, options);
  752. } else {
  753. ret = ReactiveCacheClient.getChecklist(idOrFirstObjectSelector, options);
  754. }
  755. return ret;
  756. },
  757. getChecklists(selector, options) {
  758. let ret;
  759. if (Meteor.isServer) {
  760. ret = ReactiveCacheServer.getChecklists(selector, options);
  761. } else {
  762. ret = ReactiveCacheClient.getChecklists(selector, options);
  763. }
  764. return ret;
  765. },
  766. getChecklistItem(idOrFirstObjectSelector, options) {
  767. let ret;
  768. if (Meteor.isServer) {
  769. ret = ReactiveCacheServer.getChecklistItem(idOrFirstObjectSelector, options);
  770. } else {
  771. ret = ReactiveCacheClient.getChecklistItem(idOrFirstObjectSelector, options);
  772. }
  773. return ret;
  774. },
  775. getChecklistItems(selector, options) {
  776. let ret;
  777. if (Meteor.isServer) {
  778. ret = ReactiveCacheServer.getChecklistItems(selector, options);
  779. } else {
  780. ret = ReactiveCacheClient.getChecklistItems(selector, options);
  781. }
  782. return ret;
  783. },
  784. getCard(idOrFirstObjectSelector, options, noCache = false) {
  785. let ret;
  786. if (Meteor.isServer || noCache === true) {
  787. ret = ReactiveCacheServer.getCard(idOrFirstObjectSelector, options);
  788. } else {
  789. ret = ReactiveCacheClient.getCard(idOrFirstObjectSelector, options);
  790. }
  791. return ret;
  792. },
  793. getCards(selector, options) {
  794. let ret;
  795. if (Meteor.isServer) {
  796. ret = ReactiveCacheServer.getCards(selector, options);
  797. } else {
  798. ret = ReactiveCacheClient.getCards(selector, options);
  799. }
  800. return ret;
  801. },
  802. getCardComment(idOrFirstObjectSelector, options) {
  803. let ret;
  804. if (Meteor.isServer) {
  805. ret = ReactiveCacheServer.getCardComment(idOrFirstObjectSelector, options);
  806. } else {
  807. ret = ReactiveCacheClient.getCardComment(idOrFirstObjectSelector, options);
  808. }
  809. return ret;
  810. },
  811. getCardComments(selector, options) {
  812. let ret;
  813. if (Meteor.isServer) {
  814. ret = ReactiveCacheServer.getCardComments(selector, options);
  815. } else {
  816. ret = ReactiveCacheClient.getCardComments(selector, options);
  817. }
  818. return ret;
  819. },
  820. getCardCommentReaction(idOrFirstObjectSelector, options) {
  821. let ret;
  822. if (Meteor.isServer) {
  823. ret = ReactiveCacheServer.getCardCommentReaction(idOrFirstObjectSelector, options);
  824. } else {
  825. ret = ReactiveCacheClient.getCardCommentReaction(idOrFirstObjectSelector, options);
  826. }
  827. return ret;
  828. },
  829. getCardCommentReactions(selector, options) {
  830. let ret;
  831. if (Meteor.isServer) {
  832. ret = ReactiveCacheServer.getCardCommentReactions(selector, options);
  833. } else {
  834. ret = ReactiveCacheClient.getCardCommentReactions(selector, options);
  835. }
  836. return ret;
  837. },
  838. getCustomField(idOrFirstObjectSelector, options) {
  839. let ret;
  840. if (Meteor.isServer) {
  841. ret = ReactiveCacheServer.getCustomField(idOrFirstObjectSelector, options);
  842. } else {
  843. ret = ReactiveCacheClient.getCustomField(idOrFirstObjectSelector, options);
  844. }
  845. return ret;
  846. },
  847. getCustomFields(selector, options) {
  848. let ret;
  849. if (Meteor.isServer) {
  850. ret = ReactiveCacheServer.getCustomFields(selector, options);
  851. } else {
  852. ret = ReactiveCacheClient.getCustomFields(selector, options);
  853. }
  854. return ret;
  855. },
  856. getAttachment(idOrFirstObjectSelector, options) {
  857. let ret;
  858. if (Meteor.isServer) {
  859. ret = ReactiveCacheServer.getAttachment(idOrFirstObjectSelector, options);
  860. } else {
  861. ret = ReactiveCacheClient.getAttachment(idOrFirstObjectSelector, options);
  862. }
  863. return ret;
  864. },
  865. getAttachments(selector, options) {
  866. let ret;
  867. if (Meteor.isServer) {
  868. ret = ReactiveCacheServer.getAttachments(selector, options);
  869. } else {
  870. ret = ReactiveCacheClient.getAttachments(selector, options);
  871. }
  872. return ret;
  873. },
  874. getUser(idOrFirstObjectSelector, options) {
  875. let ret;
  876. if (Meteor.isServer) {
  877. ret = ReactiveCacheServer.getUser(idOrFirstObjectSelector, options);
  878. } else {
  879. ret = ReactiveCacheClient.getUser(idOrFirstObjectSelector, options);
  880. }
  881. return ret;
  882. },
  883. getUsers(selector, options) {
  884. let ret;
  885. if (Meteor.isServer) {
  886. ret = ReactiveCacheServer.getUsers(selector, options);
  887. } else {
  888. ret = ReactiveCacheClient.getUsers(selector, options);
  889. }
  890. return ret;
  891. },
  892. getOrg(idOrFirstObjectSelector, options) {
  893. let ret;
  894. if (Meteor.isServer) {
  895. ret = ReactiveCacheServer.getOrg(idOrFirstObjectSelector, options);
  896. } else {
  897. ret = ReactiveCacheClient.getOrg(idOrFirstObjectSelector, options);
  898. }
  899. return ret;
  900. },
  901. getOrgs(selector, options) {
  902. let ret;
  903. if (Meteor.isServer) {
  904. ret = ReactiveCacheServer.getOrgs(selector, options);
  905. } else {
  906. ret = ReactiveCacheClient.getOrgs(selector, options);
  907. }
  908. return ret;
  909. },
  910. getTeam(idOrFirstObjectSelector, options) {
  911. let ret;
  912. if (Meteor.isServer) {
  913. ret = ReactiveCacheServer.getTeam(idOrFirstObjectSelector, options);
  914. } else {
  915. ret = ReactiveCacheClient.getTeam(idOrFirstObjectSelector, options);
  916. }
  917. return ret;
  918. },
  919. getTeams(selector, options) {
  920. let ret;
  921. if (Meteor.isServer) {
  922. ret = ReactiveCacheServer.getTeams(selector, options);
  923. } else {
  924. ret = ReactiveCacheClient.getTeams(selector, options);
  925. }
  926. return ret;
  927. },
  928. getActivity(idOrFirstObjectSelector, options) {
  929. let ret;
  930. if (Meteor.isServer) {
  931. ret = ReactiveCacheServer.getActivity(idOrFirstObjectSelector, options);
  932. } else {
  933. ret = ReactiveCacheClient.getActivity(idOrFirstObjectSelector, options);
  934. }
  935. return ret;
  936. },
  937. getActivities(selector, options) {
  938. let ret;
  939. if (Meteor.isServer) {
  940. ret = ReactiveCacheServer.getActivities(selector, options);
  941. } else {
  942. ret = ReactiveCacheClient.getActivities(selector, options);
  943. }
  944. return ret;
  945. },
  946. getRule(idOrFirstObjectSelector, options) {
  947. let ret;
  948. if (Meteor.isServer) {
  949. ret = ReactiveCacheServer.getRule(idOrFirstObjectSelector, options);
  950. } else {
  951. ret = ReactiveCacheClient.getRule(idOrFirstObjectSelector, options);
  952. }
  953. return ret;
  954. },
  955. getRules(selector, options) {
  956. let ret;
  957. if (Meteor.isServer) {
  958. ret = ReactiveCacheServer.getRules(selector, options);
  959. } else {
  960. ret = ReactiveCacheClient.getRules(selector, options);
  961. }
  962. return ret;
  963. },
  964. getAction(idOrFirstObjectSelector, options) {
  965. let ret;
  966. if (Meteor.isServer) {
  967. ret = ReactiveCacheServer.getAction(idOrFirstObjectSelector, options);
  968. } else {
  969. ret = ReactiveCacheClient.getAction(idOrFirstObjectSelector, options);
  970. }
  971. return ret;
  972. },
  973. getActions(selector, options) {
  974. let ret;
  975. if (Meteor.isServer) {
  976. ret = ReactiveCacheServer.getActions(selector, options);
  977. } else {
  978. ret = ReactiveCacheClient.getActions(selector, options);
  979. }
  980. return ret;
  981. },
  982. getTrigger(idOrFirstObjectSelector, options) {
  983. let ret;
  984. if (Meteor.isServer) {
  985. ret = ReactiveCacheServer.getTrigger(idOrFirstObjectSelector, options);
  986. } else {
  987. ret = ReactiveCacheClient.getTrigger(idOrFirstObjectSelector, options);
  988. }
  989. return ret;
  990. },
  991. getTriggers(selector, options) {
  992. let ret;
  993. if (Meteor.isServer) {
  994. ret = ReactiveCacheServer.getTriggers(selector, options);
  995. } else {
  996. ret = ReactiveCacheClient.getTriggers(selector, options);
  997. }
  998. return ret;
  999. },
  1000. getImpersonatedUser(idOrFirstObjectSelector, options) {
  1001. let ret;
  1002. if (Meteor.isServer) {
  1003. ret = ReactiveCacheServer.getImpersonatedUser(idOrFirstObjectSelector, options);
  1004. } else {
  1005. ret = ReactiveCacheClient.getImpersonatedUser(idOrFirstObjectSelector, options);
  1006. }
  1007. return ret;
  1008. },
  1009. getImpersonatedUsers(selector, options) {
  1010. let ret;
  1011. if (Meteor.isServer) {
  1012. ret = ReactiveCacheServer.getImpersonatedUsers(selector, options);
  1013. } else {
  1014. ret = ReactiveCacheClient.getImpersonatedUsers(selector, options);
  1015. }
  1016. return ret;
  1017. },
  1018. getIntegration(idOrFirstObjectSelector, options) {
  1019. let ret;
  1020. if (Meteor.isServer) {
  1021. ret = ReactiveCacheServer.getIntegration(idOrFirstObjectSelector, options);
  1022. } else {
  1023. ret = ReactiveCacheClient.getIntegration(idOrFirstObjectSelector, options);
  1024. }
  1025. return ret;
  1026. },
  1027. getIntegrations(selector, options) {
  1028. let ret;
  1029. if (Meteor.isServer) {
  1030. ret = ReactiveCacheServer.getIntegrations(selector, options);
  1031. } else {
  1032. ret = ReactiveCacheClient.getIntegrations(selector, options);
  1033. }
  1034. return ret;
  1035. },
  1036. getSessionData(idOrFirstObjectSelector, options) {
  1037. // no reactive cache, otherwise global search will not work anymore
  1038. let ret = ReactiveCacheServer.getSessionData(idOrFirstObjectSelector, options);
  1039. return ret;
  1040. },
  1041. getSessionDatas(selector, options) {
  1042. // no reactive cache, otherwise global search will not work anymore
  1043. let ret = ReactiveCacheServer.getSessionDatas(selector, options);
  1044. return ret;
  1045. },
  1046. getInvitationCode(idOrFirstObjectSelector, options) {
  1047. let ret;
  1048. if (Meteor.isServer) {
  1049. ret = ReactiveCacheServer.getInvitationCode(idOrFirstObjectSelector, options);
  1050. } else {
  1051. ret = ReactiveCacheClient.getInvitationCode(idOrFirstObjectSelector, options);
  1052. }
  1053. return ret;
  1054. },
  1055. getInvitationCodes(selector, options) {
  1056. let ret;
  1057. if (Meteor.isServer) {
  1058. ret = ReactiveCacheServer.getInvitationCodes(selector, options);
  1059. } else {
  1060. ret = ReactiveCacheClient.getInvitationCodes(selector, options);
  1061. }
  1062. return ret;
  1063. },
  1064. getCurrentSetting() {
  1065. let ret;
  1066. if (Meteor.isServer) {
  1067. ret = ReactiveCacheServer.getCurrentSetting();
  1068. } else {
  1069. ret = ReactiveCacheClient.getCurrentSetting();
  1070. }
  1071. return ret;
  1072. },
  1073. getCurrentUser() {
  1074. let ret;
  1075. if (Meteor.isServer) {
  1076. ret = ReactiveCacheServer.getCurrentUser();
  1077. } else {
  1078. ret = ReactiveCacheClient.getCurrentUser();
  1079. }
  1080. return ret;
  1081. },
  1082. }
  1083. export { ReactiveCache };