reactiveCache.js 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969
  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. getCurrentSetting() {
  150. const ret = Settings.findOne();
  151. return ret;
  152. },
  153. getCurrentUser() {
  154. const ret = Meteor.user();
  155. return ret;
  156. },
  157. }
  158. // only the Client is reactive
  159. // saving the result has a big advantage if the query is big and often searched for the same data again and again
  160. // if the data is changed in the client, the data is saved to the server and depending code is reactive called again
  161. ReactiveCacheClient = {
  162. getBoard(idOrFirstObjectSelector, options) {
  163. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  164. if (!this.__board) {
  165. this.__board = new DataCache(_idOrFirstObjectSelect => {
  166. const __select = Jsons.parse(_idOrFirstObjectSelect);
  167. const _ret = Boards.findOne(__select.idOrFirstObjectSelector, __select.options);
  168. return _ret;
  169. });
  170. }
  171. const ret = this.__board.get(Jsons.stringify(idOrFirstObjectSelect));
  172. return ret;
  173. },
  174. getBoards(selector, options) {
  175. const select = {selector, options}
  176. if (!this.__boards) {
  177. this.__boards = new DataCache(_select => {
  178. const __select = Jsons.parse(_select);
  179. const _ret = Boards.find(__select.selector, __select.options).fetch();
  180. return _ret;
  181. });
  182. }
  183. const ret = this.__boards.get(Jsons.stringify(select));
  184. return ret;
  185. },
  186. getList(idOrFirstObjectSelector, options) {
  187. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  188. if (!this.__list) {
  189. this.__list = new DataCache(_idOrFirstObjectSelect => {
  190. const __select = Jsons.parse(_idOrFirstObjectSelect);
  191. const _ret = Lists.findOne(__select.idOrFirstObjectSelector, __select.options);
  192. return _ret;
  193. });
  194. }
  195. const ret = this.__list.get(Jsons.stringify(idOrFirstObjectSelect));
  196. return ret;
  197. },
  198. getLists(selector, options) {
  199. const select = {selector, options}
  200. if (!this.__lists) {
  201. this.__lists = new DataCache(_select => {
  202. const __select = Jsons.parse(_select);
  203. const _ret = Lists.find(__select.selector, __select.options).fetch();
  204. return _ret;
  205. });
  206. }
  207. const ret = this.__lists.get(Jsons.stringify(select));
  208. return ret;
  209. },
  210. getSwimlane(idOrFirstObjectSelector, options) {
  211. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  212. if (!this.__swimlane) {
  213. this.__swimlane = new DataCache(_idOrFirstObjectSelect => {
  214. const __select = Jsons.parse(_idOrFirstObjectSelect);
  215. const _ret = Swimlanes.findOne(__select.idOrFirstObjectSelector, __select.options);
  216. return _ret;
  217. });
  218. }
  219. const ret = this.__swimlane.get(Jsons.stringify(idOrFirstObjectSelect));
  220. return ret;
  221. },
  222. getSwimlanes(selector, options) {
  223. const select = {selector, options}
  224. if (!this.__swimlanes) {
  225. this.__swimlanes = new DataCache(_select => {
  226. const __select = Jsons.parse(_select);
  227. const _ret = Swimlanes.find(__select.selector, __select.options).fetch();
  228. return _ret;
  229. });
  230. }
  231. const ret = this.__swimlanes.get(Jsons.stringify(select));
  232. return ret;
  233. },
  234. getChecklist(idOrFirstObjectSelector, options) {
  235. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  236. if (!this.__checklist) {
  237. this.__checklist = new DataCache(_idOrFirstObjectSelect => {
  238. const __select = Jsons.parse(_idOrFirstObjectSelect);
  239. const _ret = Checklists.findOne(__select.idOrFirstObjectSelector, __select.options);
  240. return _ret;
  241. });
  242. }
  243. const ret = this.__checklist.get(Jsons.stringify(idOrFirstObjectSelect));
  244. return ret;
  245. },
  246. getChecklists(selector, options) {
  247. const select = {selector, options}
  248. if (!this.__checklists) {
  249. this.__checklists = new DataCache(_select => {
  250. const __select = Jsons.parse(_select);
  251. const _ret = Checklists.find(__select.selector, __select.options).fetch();
  252. return _ret;
  253. });
  254. }
  255. const ret = this.__checklists.get(Jsons.stringify(select));
  256. return ret;
  257. },
  258. getChecklistItem(idOrFirstObjectSelector, options) {
  259. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  260. if (!this.__checklistItem) {
  261. this.__checklistItem = new DataCache(_idOrFirstObjectSelect => {
  262. const __select = Jsons.parse(_idOrFirstObjectSelect);
  263. const _ret = ChecklistItems.findOne(__select.idOrFirstObjectSelector, __select.options);
  264. return _ret;
  265. });
  266. }
  267. const ret = this.__checklistItem.get(Jsons.stringify(idOrFirstObjectSelect));
  268. return ret;
  269. },
  270. getChecklistItems(selector, options) {
  271. const select = {selector, options}
  272. if (!this.__checklistItems) {
  273. this.__checklistItems = new DataCache(_select => {
  274. const __select = Jsons.parse(_select);
  275. const _ret = ChecklistItems.find(__select.selector, __select.options).fetch();
  276. return _ret;
  277. });
  278. }
  279. const ret = this.__checklistItems.get(Jsons.stringify(select));
  280. return ret;
  281. },
  282. getCard(idOrFirstObjectSelector, options) {
  283. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  284. if (!this.__card) {
  285. this.__card = new DataCache(_idOrFirstObjectSelect => {
  286. const __select = Jsons.parse(_idOrFirstObjectSelect);
  287. const _ret = Cards.findOne(__select.idOrFirstObjectSelector, __select.options);
  288. return _ret;
  289. });
  290. }
  291. const ret = this.__card.get(Jsons.stringify(idOrFirstObjectSelect));
  292. return ret;
  293. },
  294. getCards(selector, options) {
  295. const select = {selector, options}
  296. if (!this.__cards) {
  297. this.__cards = new DataCache(_select => {
  298. const __select = Jsons.parse(_select);
  299. const _ret = Cards.find(__select.selector, __select.options).fetch();
  300. return _ret;
  301. });
  302. }
  303. const ret = this.__cards.get(Jsons.stringify(select));
  304. return ret;
  305. },
  306. getCardComment(idOrFirstObjectSelector, options) {
  307. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  308. if (!this.__cardComment) {
  309. this.__cardComment = new DataCache(_idOrFirstObjectSelect => {
  310. const __select = Jsons.parse(_idOrFirstObjectSelect);
  311. const _ret = CardComments.findOne(__select.idOrFirstObjectSelector, __select.options);
  312. return _ret;
  313. });
  314. }
  315. const ret = this.__cardComment.get(Jsons.stringify(idOrFirstObjectSelect));
  316. return ret;
  317. },
  318. getCardComments(selector, options) {
  319. const select = {selector, options}
  320. if (!this.__cardComments) {
  321. this.__cardComments = new DataCache(_select => {
  322. const __select = Jsons.parse(_select);
  323. const _ret = CardComments.find(__select.selector, __select.options).fetch();
  324. return _ret;
  325. });
  326. }
  327. const ret = this.__cardComments.get(Jsons.stringify(select));
  328. return ret;
  329. },
  330. getCardCommentReaction(idOrFirstObjectSelector, options) {
  331. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  332. if (!this.__cardCommentReaction) {
  333. this.__cardCommentReaction = new DataCache(_idOrFirstObjectSelect => {
  334. const __select = Jsons.parse(_idOrFirstObjectSelect);
  335. const _ret = CardCommentReactions.findOne(__select.idOrFirstObjectSelector, __select.options);
  336. return _ret;
  337. });
  338. }
  339. const ret = this.__cardCommentReaction.get(Jsons.stringify(idOrFirstObjectSelect));
  340. return ret;
  341. },
  342. getCardCommentReactions(selector, options) {
  343. const select = {selector, options}
  344. if (!this.__cardCommentReactions) {
  345. this.__cardCommentReactions = new DataCache(_select => {
  346. const __select = Jsons.parse(_select);
  347. const _ret = CardCommentReactions.find(__select.selector, __select.options).fetch();
  348. return _ret;
  349. });
  350. }
  351. const ret = this.__cardCommentReactions.get(Jsons.stringify(select));
  352. return ret;
  353. },
  354. getCustomField(idOrFirstObjectSelector, options) {
  355. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  356. if (!this.__customField) {
  357. this.__customField = new DataCache(_idOrFirstObjectSelect => {
  358. const __select = Jsons.parse(_idOrFirstObjectSelect);
  359. const _ret = CustomFields.findOne(__select.idOrFirstObjectSelector, __select.options);
  360. return _ret;
  361. });
  362. }
  363. const ret = this.__customField.get(Jsons.stringify(idOrFirstObjectSelect));
  364. return ret;
  365. },
  366. getCustomFields(selector, options) {
  367. const select = {selector, options}
  368. if (!this.__customFields) {
  369. this.__customFields = new DataCache(_select => {
  370. const __select = Jsons.parse(_select);
  371. const _ret = CustomFields.find(__select.selector, __select.options).fetch();
  372. return _ret;
  373. });
  374. }
  375. const ret = this.__customFields.get(Jsons.stringify(select));
  376. return ret;
  377. },
  378. getAttachment(idOrFirstObjectSelector, options) {
  379. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  380. if (!this.__attachment) {
  381. this.__attachment = new DataCache(_idOrFirstObjectSelect => {
  382. const __select = Jsons.parse(_idOrFirstObjectSelect);
  383. const _ret = Attachments.findOne(__select.idOrFirstObjectSelector, __select.options);
  384. return _ret;
  385. });
  386. }
  387. const ret = this.__attachment.get(Jsons.stringify(idOrFirstObjectSelect));
  388. return ret;
  389. },
  390. getAttachments(selector, options) {
  391. const select = {selector, options}
  392. if (!this.__attachments) {
  393. this.__attachments = new DataCache(_select => {
  394. const __select = Jsons.parse(_select);
  395. const _ret = Attachments.find(__select.selector, __select.options).fetch();
  396. return _ret;
  397. });
  398. }
  399. const ret = this.__attachments.get(Jsons.stringify(select));
  400. return ret;
  401. },
  402. getUser(idOrFirstObjectSelector, options) {
  403. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  404. if (!this.__user) {
  405. this.__user = new DataCache(_idOrFirstObjectSelect => {
  406. const __select = Jsons.parse(_idOrFirstObjectSelect);
  407. const _ret = Users.findOne(__select.idOrFirstObjectSelector, __select.options);
  408. return _ret;
  409. });
  410. }
  411. const ret = this.__user.get(Jsons.stringify(idOrFirstObjectSelect));
  412. return ret;
  413. },
  414. getUsers(selector, options) {
  415. const select = {selector, options}
  416. if (!this.__users) {
  417. this.__users = new DataCache(_select => {
  418. const __select = Jsons.parse(_select);
  419. const _ret = Users.find(__select.selector, __select.options).fetch();
  420. return _ret;
  421. });
  422. }
  423. const ret = this.__users.get(Jsons.stringify(select));
  424. return ret;
  425. },
  426. getOrg(idOrFirstObjectSelector, options) {
  427. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  428. if (!this.__org) {
  429. this.__org = new DataCache(_idOrFirstObjectSelect => {
  430. const __select = Jsons.parse(_idOrFirstObjectSelect);
  431. const _ret = Org.findOne(__select.idOrFirstObjectSelector, __select.options);
  432. return _ret;
  433. });
  434. }
  435. const ret = this.__org.get(Jsons.stringify(idOrFirstObjectSelect));
  436. return ret;
  437. },
  438. getOrgs(selector, options) {
  439. const select = {selector, options}
  440. if (!this.__orgs) {
  441. this.__orgs = new DataCache(_select => {
  442. const __select = Jsons.parse(_select);
  443. const _ret = Org.find(__select.selector, __select.options).fetch();
  444. return _ret;
  445. });
  446. }
  447. const ret = this.__orgs.get(Jsons.stringify(select));
  448. return ret;
  449. },
  450. getTeam(idOrFirstObjectSelector, options) {
  451. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  452. if (!this.__team) {
  453. this.__team = new DataCache(_idOrFirstObjectSelect => {
  454. const __select = Jsons.parse(_idOrFirstObjectSelect);
  455. const _ret = Team.findOne(__select.idOrFirstObjectSelector, __select.options);
  456. return _ret;
  457. });
  458. }
  459. const ret = this.__team.get(Jsons.stringify(idOrFirstObjectSelect));
  460. return ret;
  461. },
  462. getTeams(selector, options) {
  463. const select = {selector, options}
  464. if (!this.__teams) {
  465. this.__teams = new DataCache(_select => {
  466. const __select = Jsons.parse(_select);
  467. const _ret = Team.find(__select.selector, __select.options).fetch();
  468. return _ret;
  469. });
  470. }
  471. const ret = this.__teams.get(Jsons.stringify(select));
  472. return ret;
  473. },
  474. getActivity(idOrFirstObjectSelector, options) {
  475. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  476. if (!this.__activity) {
  477. this.__activity = new DataCache(_idOrFirstObjectSelect => {
  478. const __select = Jsons.parse(_idOrFirstObjectSelect);
  479. const _ret = Activities.findOne(__select.idOrFirstObjectSelector, __select.options);
  480. return _ret;
  481. });
  482. }
  483. const ret = this.__activity.get(Jsons.stringify(idOrFirstObjectSelect));
  484. return ret;
  485. },
  486. getActivities(selector, options) {
  487. const select = {selector, options}
  488. if (!this.__activities) {
  489. this.__activities = new DataCache(_select => {
  490. const __select = Jsons.parse(_select);
  491. const _ret = Activities.find(__select.selector, __select.options).fetch();
  492. return _ret;
  493. });
  494. }
  495. const ret = this.__activities.get(Jsons.stringify(select));
  496. return ret;
  497. },
  498. getRule(idOrFirstObjectSelector, options) {
  499. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  500. if (!this.__rule) {
  501. this.__rule = new DataCache(_idOrFirstObjectSelect => {
  502. const __select = Jsons.parse(_idOrFirstObjectSelect);
  503. const _ret = Rules.findOne(__select.idOrFirstObjectSelector, __select.options);
  504. return _ret;
  505. });
  506. }
  507. const ret = this.__rule.get(Jsons.stringify(idOrFirstObjectSelect));
  508. return ret;
  509. },
  510. getRules(selector, options) {
  511. const select = {selector, options}
  512. if (!this.__rules) {
  513. this.__rules = new DataCache(_select => {
  514. const __select = Jsons.parse(_select);
  515. const _ret = Rules.find(__select.selector, __select.options).fetch();
  516. return _ret;
  517. });
  518. }
  519. const ret = this.__rules.get(Jsons.stringify(select));
  520. return ret;
  521. },
  522. getAction(idOrFirstObjectSelector, options) {
  523. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  524. if (!this.__action) {
  525. this.__action = new DataCache(_idOrFirstObjectSelect => {
  526. const __select = Jsons.parse(_idOrFirstObjectSelect);
  527. const _ret = Actions.findOne(__select.idOrFirstObjectSelector, __select.options);
  528. return _ret;
  529. });
  530. }
  531. const ret = this.__action.get(Jsons.stringify(idOrFirstObjectSelect));
  532. return ret;
  533. },
  534. getActions(selector, options) {
  535. const select = {selector, options}
  536. if (!this.__actions) {
  537. this.__actions = new DataCache(_select => {
  538. const __select = Jsons.parse(_select);
  539. const _ret = Actions.find(__select.selector, __select.options).fetch();
  540. return _ret;
  541. });
  542. }
  543. const ret = this.__actions.get(Jsons.stringify(select));
  544. return ret;
  545. },
  546. getTrigger(idOrFirstObjectSelector, options) {
  547. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  548. if (!this.__trigger) {
  549. this.__trigger = new DataCache(_idOrFirstObjectSelect => {
  550. const __select = Jsons.parse(_idOrFirstObjectSelect);
  551. const _ret = Triggers.findOne(__select.idOrFirstObjectSelector, __select.options);
  552. return _ret;
  553. });
  554. }
  555. const ret = this.__trigger.get(Jsons.stringify(idOrFirstObjectSelect));
  556. return ret;
  557. },
  558. getTriggers(selector, options) {
  559. const select = {selector, options}
  560. if (!this.__triggers) {
  561. this.__triggers = new DataCache(_select => {
  562. const __select = Jsons.parse(_select);
  563. const _ret = Triggers.find(__select.selector, __select.options).fetch();
  564. return _ret;
  565. });
  566. }
  567. const ret = this.__triggers.get(Jsons.stringify(select));
  568. return ret;
  569. },
  570. getImpersonatedUser(idOrFirstObjectSelector, options) {
  571. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  572. if (!this.__impersonatedUser) {
  573. this.__impersonatedUser = new DataCache(_idOrFirstObjectSelect => {
  574. const __select = Jsons.parse(_idOrFirstObjectSelect);
  575. const _ret = ImpersonatedUsers.findOne(__select.idOrFirstObjectSelector, __select.options);
  576. return _ret;
  577. });
  578. }
  579. const ret = this.__impersonatedUser.get(Jsons.stringify(idOrFirstObjectSelect));
  580. return ret;
  581. },
  582. getImpersonatedUsers(selector, options) {
  583. const select = {selector, options}
  584. if (!this.__impersonatedUsers) {
  585. this.__impersonatedUsers = new DataCache(_select => {
  586. const __select = Jsons.parse(_select);
  587. const _ret = ImpersonatedUsers.find(__select.selector, __select.options).fetch();
  588. return _ret;
  589. });
  590. }
  591. const ret = this.__impersonatedUsers.get(Jsons.stringify(select));
  592. return ret;
  593. },
  594. getCurrentSetting() {
  595. if (!this.__currentSetting || !this.__currentSetting.get()) {
  596. this.__currentSetting = new DataCache(() => {
  597. const _ret = Settings.findOne();
  598. return _ret;
  599. });
  600. }
  601. const ret = this.__currentSetting.get();
  602. return ret;
  603. },
  604. getCurrentUser() {
  605. if (!this.__currentUser || !this.__currentUser.get()) {
  606. this.__currentUser = new DataCache(() => {
  607. const _ret = Meteor.user();
  608. return _ret;
  609. });
  610. }
  611. const ret = this.__currentUser.get();
  612. return ret;
  613. }
  614. }
  615. // global Reactive Cache class to avoid big overhead while searching for the same data often again
  616. // This class calls 2 implementation, for server and client code
  617. //
  618. // having this class here has several advantages:
  619. // - The Programmer hasn't to care about in which context he call's this class
  620. // - having all queries together in 1 class to make it possible to see which queries in Wekan happens, e.g. with console.log
  621. ReactiveCache = {
  622. getBoard(idOrFirstObjectSelector, options) {
  623. let ret;
  624. if (Meteor.isServer) {
  625. ret = ReactiveCacheServer.getBoard(idOrFirstObjectSelector, options);
  626. } else {
  627. ret = ReactiveCacheClient.getBoard(idOrFirstObjectSelector, options);
  628. }
  629. return ret;
  630. },
  631. getBoards(selector, options) {
  632. let ret;
  633. if (Meteor.isServer) {
  634. ret = ReactiveCacheServer.getBoards(selector, options);
  635. } else {
  636. ret = ReactiveCacheClient.getBoards(selector, options);
  637. }
  638. return ret;
  639. },
  640. getList(idOrFirstObjectSelector, options) {
  641. let ret;
  642. if (Meteor.isServer) {
  643. ret = ReactiveCacheServer.getList(idOrFirstObjectSelector, options);
  644. } else {
  645. ret = ReactiveCacheClient.getList(idOrFirstObjectSelector, options);
  646. }
  647. return ret;
  648. },
  649. getLists(selector, options) {
  650. let ret;
  651. if (Meteor.isServer) {
  652. ret = ReactiveCacheServer.getLists(selector, options);
  653. } else {
  654. ret = ReactiveCacheClient.getLists(selector, options);
  655. }
  656. return ret;
  657. },
  658. getSwimlane(idOrFirstObjectSelector, options) {
  659. let ret;
  660. if (Meteor.isServer) {
  661. ret = ReactiveCacheServer.getSwimlane(idOrFirstObjectSelector, options);
  662. } else {
  663. ret = ReactiveCacheClient.getSwimlane(idOrFirstObjectSelector, options);
  664. }
  665. return ret;
  666. },
  667. getSwimlanes(selector, options) {
  668. let ret;
  669. if (Meteor.isServer) {
  670. ret = ReactiveCacheServer.getSwimlanes(selector, options);
  671. } else {
  672. ret = ReactiveCacheClient.getSwimlanes(selector, options);
  673. }
  674. return ret;
  675. },
  676. getChecklist(idOrFirstObjectSelector, options) {
  677. let ret;
  678. if (Meteor.isServer) {
  679. ret = ReactiveCacheServer.getChecklist(idOrFirstObjectSelector, options);
  680. } else {
  681. ret = ReactiveCacheClient.getChecklist(idOrFirstObjectSelector, options);
  682. }
  683. return ret;
  684. },
  685. getChecklists(selector, options) {
  686. let ret;
  687. if (Meteor.isServer) {
  688. ret = ReactiveCacheServer.getChecklists(selector, options);
  689. } else {
  690. ret = ReactiveCacheClient.getChecklists(selector, options);
  691. }
  692. return ret;
  693. },
  694. getChecklistItem(idOrFirstObjectSelector, options) {
  695. let ret;
  696. if (Meteor.isServer) {
  697. ret = ReactiveCacheServer.getChecklistItem(idOrFirstObjectSelector, options);
  698. } else {
  699. ret = ReactiveCacheClient.getChecklistItem(idOrFirstObjectSelector, options);
  700. }
  701. return ret;
  702. },
  703. getChecklistItems(selector, options) {
  704. let ret;
  705. if (Meteor.isServer) {
  706. ret = ReactiveCacheServer.getChecklistItems(selector, options);
  707. } else {
  708. ret = ReactiveCacheClient.getChecklistItems(selector, options);
  709. }
  710. return ret;
  711. },
  712. getCard(idOrFirstObjectSelector, options, noCache = false) {
  713. let ret;
  714. if (Meteor.isServer || noCache === true) {
  715. ret = ReactiveCacheServer.getCard(idOrFirstObjectSelector, options);
  716. } else {
  717. ret = ReactiveCacheClient.getCard(idOrFirstObjectSelector, options);
  718. }
  719. return ret;
  720. },
  721. getCards(selector, options) {
  722. let ret;
  723. if (Meteor.isServer) {
  724. ret = ReactiveCacheServer.getCards(selector, options);
  725. } else {
  726. ret = ReactiveCacheClient.getCards(selector, options);
  727. }
  728. return ret;
  729. },
  730. getCardComment(idOrFirstObjectSelector, options) {
  731. let ret;
  732. if (Meteor.isServer) {
  733. ret = ReactiveCacheServer.getCardComment(idOrFirstObjectSelector, options);
  734. } else {
  735. ret = ReactiveCacheClient.getCardComment(idOrFirstObjectSelector, options);
  736. }
  737. return ret;
  738. },
  739. getCardComments(selector, options) {
  740. let ret;
  741. if (Meteor.isServer) {
  742. ret = ReactiveCacheServer.getCardComments(selector, options);
  743. } else {
  744. ret = ReactiveCacheClient.getCardComments(selector, options);
  745. }
  746. return ret;
  747. },
  748. getCardCommentReaction(idOrFirstObjectSelector, options) {
  749. let ret;
  750. if (Meteor.isServer) {
  751. ret = ReactiveCacheServer.getCardCommentReaction(idOrFirstObjectSelector, options);
  752. } else {
  753. ret = ReactiveCacheClient.getCardCommentReaction(idOrFirstObjectSelector, options);
  754. }
  755. return ret;
  756. },
  757. getCardCommentReactions(selector, options) {
  758. let ret;
  759. if (Meteor.isServer) {
  760. ret = ReactiveCacheServer.getCardCommentReactions(selector, options);
  761. } else {
  762. ret = ReactiveCacheClient.getCardCommentReactions(selector, options);
  763. }
  764. return ret;
  765. },
  766. getCustomField(idOrFirstObjectSelector, options) {
  767. let ret;
  768. if (Meteor.isServer) {
  769. ret = ReactiveCacheServer.getCustomField(idOrFirstObjectSelector, options);
  770. } else {
  771. ret = ReactiveCacheClient.getCustomField(idOrFirstObjectSelector, options);
  772. }
  773. return ret;
  774. },
  775. getCustomFields(selector, options) {
  776. let ret;
  777. if (Meteor.isServer) {
  778. ret = ReactiveCacheServer.getCustomFields(selector, options);
  779. } else {
  780. ret = ReactiveCacheClient.getCustomFields(selector, options);
  781. }
  782. return ret;
  783. },
  784. getAttachment(idOrFirstObjectSelector, options) {
  785. let ret;
  786. if (Meteor.isServer) {
  787. ret = ReactiveCacheServer.getAttachment(idOrFirstObjectSelector, options);
  788. } else {
  789. ret = ReactiveCacheClient.getAttachment(idOrFirstObjectSelector, options);
  790. }
  791. return ret;
  792. },
  793. getAttachments(selector, options) {
  794. let ret;
  795. if (Meteor.isServer) {
  796. ret = ReactiveCacheServer.getAttachments(selector, options);
  797. } else {
  798. ret = ReactiveCacheClient.getAttachments(selector, options);
  799. }
  800. return ret;
  801. },
  802. getUser(idOrFirstObjectSelector, options) {
  803. let ret;
  804. if (Meteor.isServer) {
  805. ret = ReactiveCacheServer.getUser(idOrFirstObjectSelector, options);
  806. } else {
  807. ret = ReactiveCacheClient.getUser(idOrFirstObjectSelector, options);
  808. }
  809. return ret;
  810. },
  811. getUsers(selector, options) {
  812. let ret;
  813. if (Meteor.isServer) {
  814. ret = ReactiveCacheServer.getUsers(selector, options);
  815. } else {
  816. ret = ReactiveCacheClient.getUsers(selector, options);
  817. }
  818. return ret;
  819. },
  820. getOrg(idOrFirstObjectSelector, options) {
  821. let ret;
  822. if (Meteor.isServer) {
  823. ret = ReactiveCacheServer.getOrg(idOrFirstObjectSelector, options);
  824. } else {
  825. ret = ReactiveCacheClient.getOrg(idOrFirstObjectSelector, options);
  826. }
  827. return ret;
  828. },
  829. getOrgs(selector, options) {
  830. let ret;
  831. if (Meteor.isServer) {
  832. ret = ReactiveCacheServer.getOrgs(selector, options);
  833. } else {
  834. ret = ReactiveCacheClient.getOrgs(selector, options);
  835. }
  836. return ret;
  837. },
  838. getTeam(idOrFirstObjectSelector, options) {
  839. let ret;
  840. if (Meteor.isServer) {
  841. ret = ReactiveCacheServer.getTeam(idOrFirstObjectSelector, options);
  842. } else {
  843. ret = ReactiveCacheClient.getTeam(idOrFirstObjectSelector, options);
  844. }
  845. return ret;
  846. },
  847. getTeams(selector, options) {
  848. let ret;
  849. if (Meteor.isServer) {
  850. ret = ReactiveCacheServer.getTeams(selector, options);
  851. } else {
  852. ret = ReactiveCacheClient.getTeams(selector, options);
  853. }
  854. return ret;
  855. },
  856. getActivity(idOrFirstObjectSelector, options) {
  857. let ret;
  858. if (Meteor.isServer) {
  859. ret = ReactiveCacheServer.getActivity(idOrFirstObjectSelector, options);
  860. } else {
  861. ret = ReactiveCacheClient.getActivity(idOrFirstObjectSelector, options);
  862. }
  863. return ret;
  864. },
  865. getActivities(selector, options) {
  866. let ret;
  867. if (Meteor.isServer) {
  868. ret = ReactiveCacheServer.getActivities(selector, options);
  869. } else {
  870. ret = ReactiveCacheClient.getActivities(selector, options);
  871. }
  872. return ret;
  873. },
  874. getRule(idOrFirstObjectSelector, options) {
  875. let ret;
  876. if (Meteor.isServer) {
  877. ret = ReactiveCacheServer.getRule(idOrFirstObjectSelector, options);
  878. } else {
  879. ret = ReactiveCacheClient.getRule(idOrFirstObjectSelector, options);
  880. }
  881. return ret;
  882. },
  883. getRules(selector, options) {
  884. let ret;
  885. if (Meteor.isServer) {
  886. ret = ReactiveCacheServer.getRules(selector, options);
  887. } else {
  888. ret = ReactiveCacheClient.getRules(selector, options);
  889. }
  890. return ret;
  891. },
  892. getAction(idOrFirstObjectSelector, options) {
  893. let ret;
  894. if (Meteor.isServer) {
  895. ret = ReactiveCacheServer.getAction(idOrFirstObjectSelector, options);
  896. } else {
  897. ret = ReactiveCacheClient.getAction(idOrFirstObjectSelector, options);
  898. }
  899. return ret;
  900. },
  901. getActions(selector, options) {
  902. let ret;
  903. if (Meteor.isServer) {
  904. ret = ReactiveCacheServer.getActions(selector, options);
  905. } else {
  906. ret = ReactiveCacheClient.getActions(selector, options);
  907. }
  908. return ret;
  909. },
  910. getTrigger(idOrFirstObjectSelector, options) {
  911. let ret;
  912. if (Meteor.isServer) {
  913. ret = ReactiveCacheServer.getTrigger(idOrFirstObjectSelector, options);
  914. } else {
  915. ret = ReactiveCacheClient.getTrigger(idOrFirstObjectSelector, options);
  916. }
  917. return ret;
  918. },
  919. getTriggers(selector, options) {
  920. let ret;
  921. if (Meteor.isServer) {
  922. ret = ReactiveCacheServer.getTriggers(selector, options);
  923. } else {
  924. ret = ReactiveCacheClient.getTriggers(selector, options);
  925. }
  926. return ret;
  927. },
  928. getImpersonatedUser(idOrFirstObjectSelector, options) {
  929. let ret;
  930. if (Meteor.isServer) {
  931. ret = ReactiveCacheServer.getImpersonatedUser(idOrFirstObjectSelector, options);
  932. } else {
  933. ret = ReactiveCacheClient.getImpersonatedUser(idOrFirstObjectSelector, options);
  934. }
  935. return ret;
  936. },
  937. getImpersonatedUsers(selector, options) {
  938. let ret;
  939. if (Meteor.isServer) {
  940. ret = ReactiveCacheServer.getImpersonatedUsers(selector, options);
  941. } else {
  942. ret = ReactiveCacheClient.getImpersonatedUsers(selector, options);
  943. }
  944. return ret;
  945. },
  946. getCurrentSetting() {
  947. let ret;
  948. if (Meteor.isServer) {
  949. ret = ReactiveCacheServer.getCurrentSetting();
  950. } else {
  951. ret = ReactiveCacheClient.getCurrentSetting();
  952. }
  953. return ret;
  954. },
  955. getCurrentUser() {
  956. let ret;
  957. if (Meteor.isServer) {
  958. ret = ReactiveCacheServer.getCurrentUser();
  959. } else {
  960. ret = ReactiveCacheClient.getCurrentUser();
  961. }
  962. return ret;
  963. },
  964. }
  965. export { ReactiveCache };