reactiveCache.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  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. getCustomField(idOrFirstObjectSelector, options) {
  62. const ret = CustomFields.findOne(idOrFirstObjectSelector, options);
  63. return ret;
  64. },
  65. getCustomFields(selector, options) {
  66. const ret = CustomFields.find(selector, options).fetch();
  67. return ret;
  68. },
  69. getAttachment(idOrFirstObjectSelector, options) {
  70. const ret = Attachments.findOne(idOrFirstObjectSelector, options);
  71. return ret;
  72. },
  73. getAttachments(selector, options) {
  74. const ret = Attachments.find(selector, options).fetch();
  75. return ret;
  76. },
  77. getUser(idOrFirstObjectSelector, options) {
  78. const ret = Users.findOne(idOrFirstObjectSelector, options);
  79. return ret;
  80. },
  81. getUsers(selector, options) {
  82. const ret = Users.find(selector, options).fetch();
  83. return ret;
  84. },
  85. getOrg(idOrFirstObjectSelector, options) {
  86. const ret = Org.findOne(idOrFirstObjectSelector, options);
  87. return ret;
  88. },
  89. getOrgs(selector, options) {
  90. const ret = Org.find(selector, options).fetch();
  91. return ret;
  92. },
  93. getTeam(idOrFirstObjectSelector, options) {
  94. const ret = Team.findOne(idOrFirstObjectSelector, options);
  95. return ret;
  96. },
  97. getTeams(selector, options) {
  98. const ret = Team.find(selector, options).fetch();
  99. return ret;
  100. },
  101. getActivity(idOrFirstObjectSelector, options) {
  102. const ret = Activities.findOne(idOrFirstObjectSelector, options);
  103. return ret;
  104. },
  105. getActivities(selector, options) {
  106. const ret = Activities.find(selector, options).fetch();
  107. return ret;
  108. },
  109. getCurrentSetting() {
  110. const ret = Settings.findOne();
  111. return ret;
  112. },
  113. getCurrentUser() {
  114. const ret = Meteor.user();
  115. return ret;
  116. },
  117. }
  118. // only the Client is reactive
  119. // saving the result has a big advantage if the query is big and often searched for the same data again and again
  120. // if the data is changed in the client, the data is saved to the server and depending code is reactive called again
  121. ReactiveCacheClient = {
  122. getBoard(idOrFirstObjectSelector, options) {
  123. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  124. if (!this.__board) {
  125. this.__board = new DataCache(_idOrFirstObjectSelect => {
  126. const __select = Jsons.parse(_idOrFirstObjectSelect);
  127. const _ret = Boards.findOne(__select.idOrFirstObjectSelector, __select.options);
  128. return _ret;
  129. });
  130. }
  131. const ret = this.__board.get(Jsons.stringify(idOrFirstObjectSelect));
  132. return ret;
  133. },
  134. getBoards(selector, options) {
  135. const select = {selector, options}
  136. if (!this.__boards) {
  137. this.__boards = new DataCache(_select => {
  138. const __select = Jsons.parse(_select);
  139. const _ret = Boards.find(__select.selector, __select.options).fetch();
  140. return _ret;
  141. });
  142. }
  143. const ret = this.__boards.get(Jsons.stringify(select));
  144. return ret;
  145. },
  146. getList(idOrFirstObjectSelector, options) {
  147. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  148. if (!this.__list) {
  149. this.__list = new DataCache(_idOrFirstObjectSelect => {
  150. const __select = Jsons.parse(_idOrFirstObjectSelect);
  151. const _ret = Lists.findOne(__select.idOrFirstObjectSelector, __select.options);
  152. return _ret;
  153. });
  154. }
  155. const ret = this.__list.get(Jsons.stringify(idOrFirstObjectSelect));
  156. return ret;
  157. },
  158. getLists(selector, options) {
  159. const select = {selector, options}
  160. if (!this.__lists) {
  161. this.__lists = new DataCache(_select => {
  162. const __select = Jsons.parse(_select);
  163. const _ret = Lists.find(__select.selector, __select.options).fetch();
  164. return _ret;
  165. });
  166. }
  167. const ret = this.__lists.get(Jsons.stringify(select));
  168. return ret;
  169. },
  170. getSwimlane(idOrFirstObjectSelector, options) {
  171. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  172. if (!this.__swimlane) {
  173. this.__swimlane = new DataCache(_idOrFirstObjectSelect => {
  174. const __select = Jsons.parse(_idOrFirstObjectSelect);
  175. const _ret = Swimlanes.findOne(__select.idOrFirstObjectSelector, __select.options);
  176. return _ret;
  177. });
  178. }
  179. const ret = this.__swimlane.get(Jsons.stringify(idOrFirstObjectSelect));
  180. return ret;
  181. },
  182. getSwimlanes(selector, options) {
  183. const select = {selector, options}
  184. if (!this.__swimlanes) {
  185. this.__swimlanes = new DataCache(_select => {
  186. const __select = Jsons.parse(_select);
  187. const _ret = Swimlanes.find(__select.selector, __select.options).fetch();
  188. return _ret;
  189. });
  190. }
  191. const ret = this.__swimlanes.get(Jsons.stringify(select));
  192. return ret;
  193. },
  194. getChecklist(idOrFirstObjectSelector, options) {
  195. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  196. if (!this.__checklist) {
  197. this.__checklist = new DataCache(_idOrFirstObjectSelect => {
  198. const __select = Jsons.parse(_idOrFirstObjectSelect);
  199. const _ret = Checklists.findOne(__select.idOrFirstObjectSelector, __select.options);
  200. return _ret;
  201. });
  202. }
  203. const ret = this.__checklist.get(Jsons.stringify(idOrFirstObjectSelect));
  204. return ret;
  205. },
  206. getChecklists(selector, options) {
  207. const select = {selector, options}
  208. if (!this.__checklists) {
  209. this.__checklists = new DataCache(_select => {
  210. const __select = Jsons.parse(_select);
  211. const _ret = Checklists.find(__select.selector, __select.options).fetch();
  212. return _ret;
  213. });
  214. }
  215. const ret = this.__checklists.get(Jsons.stringify(select));
  216. return ret;
  217. },
  218. getChecklistItem(idOrFirstObjectSelector, options) {
  219. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  220. if (!this.__checklistItem) {
  221. this.__checklistItem = new DataCache(_idOrFirstObjectSelect => {
  222. const __select = Jsons.parse(_idOrFirstObjectSelect);
  223. const _ret = ChecklistItems.findOne(__select.idOrFirstObjectSelector, __select.options);
  224. return _ret;
  225. });
  226. }
  227. const ret = this.__checklistItem.get(Jsons.stringify(idOrFirstObjectSelect));
  228. return ret;
  229. },
  230. getChecklistItems(selector, options) {
  231. const select = {selector, options}
  232. if (!this.__checklistItems) {
  233. this.__checklistItems = new DataCache(_select => {
  234. const __select = Jsons.parse(_select);
  235. const _ret = ChecklistItems.find(__select.selector, __select.options).fetch();
  236. return _ret;
  237. });
  238. }
  239. const ret = this.__checklistItems.get(Jsons.stringify(select));
  240. return ret;
  241. },
  242. getCard(idOrFirstObjectSelector, options) {
  243. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  244. if (!this.__card) {
  245. this.__card = new DataCache(_idOrFirstObjectSelect => {
  246. const __select = Jsons.parse(_idOrFirstObjectSelect);
  247. const _ret = Cards.findOne(__select.idOrFirstObjectSelector, __select.options);
  248. return _ret;
  249. });
  250. }
  251. const ret = this.__card.get(Jsons.stringify(idOrFirstObjectSelect));
  252. return ret;
  253. },
  254. getCards(selector, options) {
  255. const select = {selector, options}
  256. if (!this.__cards) {
  257. this.__cards = new DataCache(_select => {
  258. const __select = Jsons.parse(_select);
  259. const _ret = Cards.find(__select.selector, __select.options).fetch();
  260. return _ret;
  261. });
  262. }
  263. const ret = this.__cards.get(Jsons.stringify(select));
  264. return ret;
  265. },
  266. getCardComment(idOrFirstObjectSelector, options) {
  267. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  268. if (!this.__cardComment) {
  269. this.__cardComment = new DataCache(_idOrFirstObjectSelect => {
  270. const __select = Jsons.parse(_idOrFirstObjectSelect);
  271. const _ret = CardComments.findOne(__select.idOrFirstObjectSelector, __select.options);
  272. return _ret;
  273. });
  274. }
  275. const ret = this.__cardComment.get(Jsons.stringify(idOrFirstObjectSelect));
  276. return ret;
  277. },
  278. getCardComments(selector, options) {
  279. const select = {selector, options}
  280. if (!this.__cardComments) {
  281. this.__cardComments = new DataCache(_select => {
  282. const __select = Jsons.parse(_select);
  283. const _ret = CardComments.find(__select.selector, __select.options).fetch();
  284. return _ret;
  285. });
  286. }
  287. const ret = this.__cardComments.get(Jsons.stringify(select));
  288. return ret;
  289. },
  290. getCustomField(idOrFirstObjectSelector, options) {
  291. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  292. if (!this.__customField) {
  293. this.__customField = new DataCache(_idOrFirstObjectSelect => {
  294. const __select = Jsons.parse(_idOrFirstObjectSelect);
  295. const _ret = CustomFields.findOne(__select.idOrFirstObjectSelector, __select.options);
  296. return _ret;
  297. });
  298. }
  299. const ret = this.__customField.get(Jsons.stringify(idOrFirstObjectSelect));
  300. return ret;
  301. },
  302. getCustomFields(selector, options) {
  303. const select = {selector, options}
  304. if (!this.__customFields) {
  305. this.__customFields = new DataCache(_select => {
  306. const __select = Jsons.parse(_select);
  307. const _ret = CustomFields.find(__select.selector, __select.options).fetch();
  308. return _ret;
  309. });
  310. }
  311. const ret = this.__customFields.get(Jsons.stringify(select));
  312. return ret;
  313. },
  314. getAttachment(idOrFirstObjectSelector, options) {
  315. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  316. if (!this.__attachment) {
  317. this.__attachment = new DataCache(_idOrFirstObjectSelect => {
  318. const __select = Jsons.parse(_idOrFirstObjectSelect);
  319. const _ret = Attachments.findOne(__select.idOrFirstObjectSelector, __select.options);
  320. return _ret;
  321. });
  322. }
  323. const ret = this.__attachment.get(Jsons.stringify(idOrFirstObjectSelect));
  324. return ret;
  325. },
  326. getAttachments(selector, options) {
  327. const select = {selector, options}
  328. if (!this.__attachments) {
  329. this.__attachments = new DataCache(_select => {
  330. const __select = Jsons.parse(_select);
  331. const _ret = Attachments.find(__select.selector, __select.options).fetch();
  332. return _ret;
  333. });
  334. }
  335. const ret = this.__attachments.get(Jsons.stringify(select));
  336. return ret;
  337. },
  338. getUser(idOrFirstObjectSelector, options) {
  339. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  340. if (!this.__user) {
  341. this.__user = new DataCache(_idOrFirstObjectSelect => {
  342. const __select = Jsons.parse(_idOrFirstObjectSelect);
  343. const _ret = Users.findOne(__select.idOrFirstObjectSelector, __select.options);
  344. return _ret;
  345. });
  346. }
  347. const ret = this.__user.get(Jsons.stringify(idOrFirstObjectSelect));
  348. return ret;
  349. },
  350. getUsers(selector, options) {
  351. const select = {selector, options}
  352. if (!this.__users) {
  353. this.__users = new DataCache(_select => {
  354. const __select = Jsons.parse(_select);
  355. const _ret = Users.find(__select.selector, __select.options).fetch();
  356. return _ret;
  357. });
  358. }
  359. const ret = this.__users.get(Jsons.stringify(select));
  360. return ret;
  361. },
  362. getOrg(idOrFirstObjectSelector, options) {
  363. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  364. if (!this.__org) {
  365. this.__org = new DataCache(_idOrFirstObjectSelect => {
  366. const __select = Jsons.parse(_idOrFirstObjectSelect);
  367. const _ret = Org.findOne(__select.idOrFirstObjectSelector, __select.options);
  368. return _ret;
  369. });
  370. }
  371. const ret = this.__org.get(Jsons.stringify(idOrFirstObjectSelect));
  372. return ret;
  373. },
  374. getOrgs(selector, options) {
  375. const select = {selector, options}
  376. if (!this.__orgs) {
  377. this.__orgs = new DataCache(_select => {
  378. const __select = Jsons.parse(_select);
  379. const _ret = Org.find(__select.selector, __select.options).fetch();
  380. return _ret;
  381. });
  382. }
  383. const ret = this.__orgs.get(Jsons.stringify(select));
  384. return ret;
  385. },
  386. getTeam(idOrFirstObjectSelector, options) {
  387. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  388. if (!this.__team) {
  389. this.__team = new DataCache(_idOrFirstObjectSelect => {
  390. const __select = Jsons.parse(_idOrFirstObjectSelect);
  391. const _ret = Team.findOne(__select.idOrFirstObjectSelector, __select.options);
  392. return _ret;
  393. });
  394. }
  395. const ret = this.__team.get(Jsons.stringify(idOrFirstObjectSelect));
  396. return ret;
  397. },
  398. getTeams(selector, options) {
  399. const select = {selector, options}
  400. if (!this.__teams) {
  401. this.__teams = new DataCache(_select => {
  402. const __select = Jsons.parse(_select);
  403. const _ret = Team.find(__select.selector, __select.options).fetch();
  404. return _ret;
  405. });
  406. }
  407. const ret = this.__teams.get(Jsons.stringify(select));
  408. return ret;
  409. },
  410. getActivity(idOrFirstObjectSelector, options) {
  411. const idOrFirstObjectSelect = {idOrFirstObjectSelector, options}
  412. if (!this.__activity) {
  413. this.__activity = new DataCache(_idOrFirstObjectSelect => {
  414. const __select = Jsons.parse(_idOrFirstObjectSelect);
  415. const _ret = Activities.findOne(__select.idOrFirstObjectSelector, __select.options);
  416. return _ret;
  417. });
  418. }
  419. const ret = this.__activity.get(Jsons.stringify(idOrFirstObjectSelect));
  420. return ret;
  421. },
  422. getActivities(selector, options) {
  423. const select = {selector, options}
  424. if (!this.__activities) {
  425. this.__activities = new DataCache(_select => {
  426. const __select = Jsons.parse(_select);
  427. const _ret = Activities.find(__select.selector, __select.options).fetch();
  428. return _ret;
  429. });
  430. }
  431. const ret = this.__activities.get(Jsons.stringify(select));
  432. return ret;
  433. },
  434. getCurrentSetting() {
  435. if (!this.__currentSetting || !this.__currentSetting.get()) {
  436. this.__currentSetting = new DataCache(() => {
  437. const _ret = Settings.findOne();
  438. return _ret;
  439. });
  440. }
  441. const ret = this.__currentSetting.get();
  442. return ret;
  443. },
  444. getCurrentUser() {
  445. if (!this.__currentUser || !this.__currentUser.get()) {
  446. this.__currentUser = new DataCache(() => {
  447. const _ret = Meteor.user();
  448. return _ret;
  449. });
  450. }
  451. const ret = this.__currentUser.get();
  452. return ret;
  453. }
  454. }
  455. // global Reactive Cache class to avoid big overhead while searching for the same data often again
  456. // This class calls 2 implementation, for server and client code
  457. //
  458. // having this class here has several advantages:
  459. // - The Programmer hasn't to care about in which context he call's this class
  460. // - having all queries together in 1 class to make it possible to see which queries in Wekan happens, e.g. with console.log
  461. ReactiveCache = {
  462. getBoard(idOrFirstObjectSelector, options) {
  463. let ret;
  464. if (Meteor.isServer) {
  465. ret = ReactiveCacheServer.getBoard(idOrFirstObjectSelector, options);
  466. } else {
  467. ret = ReactiveCacheClient.getBoard(idOrFirstObjectSelector, options);
  468. }
  469. return ret;
  470. },
  471. getBoards(selector, options) {
  472. let ret;
  473. if (Meteor.isServer) {
  474. ret = ReactiveCacheServer.getBoards(selector, options);
  475. } else {
  476. ret = ReactiveCacheClient.getBoards(selector, options);
  477. }
  478. return ret;
  479. },
  480. getList(idOrFirstObjectSelector, options) {
  481. let ret;
  482. if (Meteor.isServer) {
  483. ret = ReactiveCacheServer.getList(idOrFirstObjectSelector, options);
  484. } else {
  485. ret = ReactiveCacheClient.getList(idOrFirstObjectSelector, options);
  486. }
  487. return ret;
  488. },
  489. getLists(selector, options) {
  490. let ret;
  491. if (Meteor.isServer) {
  492. ret = ReactiveCacheServer.getLists(selector, options);
  493. } else {
  494. ret = ReactiveCacheClient.getLists(selector, options);
  495. }
  496. return ret;
  497. },
  498. getSwimlane(idOrFirstObjectSelector, options) {
  499. let ret;
  500. if (Meteor.isServer) {
  501. ret = ReactiveCacheServer.getSwimlane(idOrFirstObjectSelector, options);
  502. } else {
  503. ret = ReactiveCacheClient.getSwimlane(idOrFirstObjectSelector, options);
  504. }
  505. return ret;
  506. },
  507. getSwimlanes(selector, options) {
  508. let ret;
  509. if (Meteor.isServer) {
  510. ret = ReactiveCacheServer.getSwimlanes(selector, options);
  511. } else {
  512. ret = ReactiveCacheClient.getSwimlanes(selector, options);
  513. }
  514. return ret;
  515. },
  516. getChecklist(idOrFirstObjectSelector, options) {
  517. let ret;
  518. if (Meteor.isServer) {
  519. ret = ReactiveCacheServer.getChecklist(idOrFirstObjectSelector, options);
  520. } else {
  521. ret = ReactiveCacheClient.getChecklist(idOrFirstObjectSelector, options);
  522. }
  523. return ret;
  524. },
  525. getChecklists(selector, options) {
  526. let ret;
  527. if (Meteor.isServer) {
  528. ret = ReactiveCacheServer.getChecklists(selector, options);
  529. } else {
  530. ret = ReactiveCacheClient.getChecklists(selector, options);
  531. }
  532. return ret;
  533. },
  534. getChecklistItem(idOrFirstObjectSelector, options) {
  535. let ret;
  536. if (Meteor.isServer) {
  537. ret = ReactiveCacheServer.getChecklistItem(idOrFirstObjectSelector, options);
  538. } else {
  539. ret = ReactiveCacheClient.getChecklistItem(idOrFirstObjectSelector, options);
  540. }
  541. return ret;
  542. },
  543. getChecklistItems(selector, options) {
  544. let ret;
  545. if (Meteor.isServer) {
  546. ret = ReactiveCacheServer.getChecklistItems(selector, options);
  547. } else {
  548. ret = ReactiveCacheClient.getChecklistItems(selector, options);
  549. }
  550. return ret;
  551. },
  552. getCard(idOrFirstObjectSelector, options, noCache = false) {
  553. let ret;
  554. if (Meteor.isServer || noCache === true) {
  555. ret = ReactiveCacheServer.getCard(idOrFirstObjectSelector, options);
  556. } else {
  557. ret = ReactiveCacheClient.getCard(idOrFirstObjectSelector, options);
  558. }
  559. return ret;
  560. },
  561. getCards(selector, options) {
  562. let ret;
  563. if (Meteor.isServer) {
  564. ret = ReactiveCacheServer.getCards(selector, options);
  565. } else {
  566. ret = ReactiveCacheClient.getCards(selector, options);
  567. }
  568. return ret;
  569. },
  570. getCardComment(idOrFirstObjectSelector, options) {
  571. let ret;
  572. if (Meteor.isServer) {
  573. ret = ReactiveCacheServer.getCardComment(idOrFirstObjectSelector, options);
  574. } else {
  575. ret = ReactiveCacheClient.getCardComment(idOrFirstObjectSelector, options);
  576. }
  577. return ret;
  578. },
  579. getCardComments(selector, options) {
  580. let ret;
  581. if (Meteor.isServer) {
  582. ret = ReactiveCacheServer.getCardComments(selector, options);
  583. } else {
  584. ret = ReactiveCacheClient.getCardComments(selector, options);
  585. }
  586. return ret;
  587. },
  588. getCustomField(idOrFirstObjectSelector, options) {
  589. let ret;
  590. if (Meteor.isServer) {
  591. ret = ReactiveCacheServer.getCustomField(idOrFirstObjectSelector, options);
  592. } else {
  593. ret = ReactiveCacheClient.getCustomField(idOrFirstObjectSelector, options);
  594. }
  595. return ret;
  596. },
  597. getCustomFields(selector, options) {
  598. let ret;
  599. if (Meteor.isServer) {
  600. ret = ReactiveCacheServer.getCustomFields(selector, options);
  601. } else {
  602. ret = ReactiveCacheClient.getCustomFields(selector, options);
  603. }
  604. return ret;
  605. },
  606. getAttachment(idOrFirstObjectSelector, options) {
  607. let ret;
  608. if (Meteor.isServer) {
  609. ret = ReactiveCacheServer.getAttachment(idOrFirstObjectSelector, options);
  610. } else {
  611. ret = ReactiveCacheClient.getAttachment(idOrFirstObjectSelector, options);
  612. }
  613. return ret;
  614. },
  615. getAttachments(selector, options) {
  616. let ret;
  617. if (Meteor.isServer) {
  618. ret = ReactiveCacheServer.getAttachments(selector, options);
  619. } else {
  620. ret = ReactiveCacheClient.getAttachments(selector, options);
  621. }
  622. return ret;
  623. },
  624. getUser(idOrFirstObjectSelector, options) {
  625. let ret;
  626. if (Meteor.isServer) {
  627. ret = ReactiveCacheServer.getUser(idOrFirstObjectSelector, options);
  628. } else {
  629. ret = ReactiveCacheClient.getUser(idOrFirstObjectSelector, options);
  630. }
  631. return ret;
  632. },
  633. getUsers(selector, options) {
  634. let ret;
  635. if (Meteor.isServer) {
  636. ret = ReactiveCacheServer.getUsers(selector, options);
  637. } else {
  638. ret = ReactiveCacheClient.getUsers(selector, options);
  639. }
  640. return ret;
  641. },
  642. getOrg(idOrFirstObjectSelector, options) {
  643. let ret;
  644. if (Meteor.isServer) {
  645. ret = ReactiveCacheServer.getOrg(idOrFirstObjectSelector, options);
  646. } else {
  647. ret = ReactiveCacheClient.getOrg(idOrFirstObjectSelector, options);
  648. }
  649. return ret;
  650. },
  651. getOrgs(selector, options) {
  652. let ret;
  653. if (Meteor.isServer) {
  654. ret = ReactiveCacheServer.getOrgs(selector, options);
  655. } else {
  656. ret = ReactiveCacheClient.getOrgs(selector, options);
  657. }
  658. return ret;
  659. },
  660. getTeam(idOrFirstObjectSelector, options) {
  661. let ret;
  662. if (Meteor.isServer) {
  663. ret = ReactiveCacheServer.getTeam(idOrFirstObjectSelector, options);
  664. } else {
  665. ret = ReactiveCacheClient.getTeam(idOrFirstObjectSelector, options);
  666. }
  667. return ret;
  668. },
  669. getTeams(selector, options) {
  670. let ret;
  671. if (Meteor.isServer) {
  672. ret = ReactiveCacheServer.getTeams(selector, options);
  673. } else {
  674. ret = ReactiveCacheClient.getTeams(selector, options);
  675. }
  676. return ret;
  677. },
  678. getActivity(idOrFirstObjectSelector, options) {
  679. let ret;
  680. if (Meteor.isServer) {
  681. ret = ReactiveCacheServer.getActivity(idOrFirstObjectSelector, options);
  682. } else {
  683. ret = ReactiveCacheClient.getActivity(idOrFirstObjectSelector, options);
  684. }
  685. return ret;
  686. },
  687. getActivities(selector, options) {
  688. let ret;
  689. if (Meteor.isServer) {
  690. ret = ReactiveCacheServer.getActivities(selector, options);
  691. } else {
  692. ret = ReactiveCacheClient.getActivities(selector, options);
  693. }
  694. return ret;
  695. },
  696. getCurrentSetting() {
  697. let ret;
  698. if (Meteor.isServer) {
  699. ret = ReactiveCacheServer.getCurrentSetting();
  700. } else {
  701. ret = ReactiveCacheClient.getCurrentSetting();
  702. }
  703. return ret;
  704. },
  705. getCurrentUser() {
  706. let ret;
  707. if (Meteor.isServer) {
  708. ret = ReactiveCacheServer.getCurrentUser();
  709. } else {
  710. ret = ReactiveCacheClient.getCurrentUser();
  711. }
  712. return ret;
  713. },
  714. }
  715. export { ReactiveCache };