1 | import DataLoader from 'dataloader';
|
2 |
|
3 | import {
|
4 | updateEntity,
|
5 | addEntity,
|
6 | getEntity,
|
7 | getEntities,
|
8 | PATH,
|
9 | getEntityByURL,
|
10 | } from '../../Services/Activity';
|
11 |
|
12 | const getActivityLoader = (cacheMap) => {
|
13 | const activitiesLoader =
|
14 | new DataLoader(keys => Promise.all(keys.map(getEntities)), { cache: false });
|
15 |
|
16 | const activityLoader =
|
17 | new DataLoader(keys => Promise.all(keys.map(getEntity)), { cache: false });
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | const activityByURLLoader =
|
25 | new DataLoader(keys =>
|
26 | Promise.all(keys.map(key => getEntityByURL(`${PATH}/${key}`))), { cache: false });
|
27 |
|
28 | activityLoader.loadAll = activitiesLoader.load.bind(activitiesLoader, '__all__');
|
29 | activityLoader.loadByURL = activityByURLLoader.load.bind(activityByURLLoader);
|
30 | activityLoader.loadManyByURL = activityByURLLoader.loadMany.bind(activityByURLLoader);
|
31 | activityLoader.addActivity = addEntity;
|
32 | activityLoader.updateActivity = updateEntity;
|
33 |
|
34 | return activityLoader;
|
35 | };
|
36 |
|
37 | export default { getActivityLoader };
|