1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
|
8 |
|
9 | var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
|
10 |
|
11 | var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
12 |
|
13 | var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
14 |
|
15 | var _promise = require('babel-runtime/core-js/promise');
|
16 |
|
17 | var _promise2 = _interopRequireDefault(_promise);
|
18 |
|
19 | exports.default = createLoaders;
|
20 |
|
21 | var _dataloader = require('dataloader');
|
22 |
|
23 | var _dataloader2 = _interopRequireDefault(_dataloader);
|
24 |
|
25 | var _lruCache = require('lru-cache');
|
26 |
|
27 | var _lruCache2 = _interopRequireDefault(_lruCache);
|
28 |
|
29 | var _helpers = require('./types/helpers');
|
30 |
|
31 | var _util = require('./util');
|
32 |
|
33 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
34 |
|
35 | var debug = require('debug')('graphbrainz:loaders');
|
36 |
|
37 | function createLoaders(client) {
|
38 |
|
39 |
|
40 | var cache = (0, _lruCache2.default)({
|
41 | max: parseInt(process.env.GRAPHBRAINZ_CACHE_SIZE || 8192, 10),
|
42 | maxAge: parseInt(process.env.GRAPHBRAINZ_CACHE_TTL || _util.ONE_DAY, 10),
|
43 | dispose: function dispose(key) {
|
44 | debug('Removed from cache. key=' + key);
|
45 | }
|
46 | });
|
47 |
|
48 | cache.delete = cache.del;
|
49 | cache.clear = cache.reset;
|
50 |
|
51 | var lookup = new _dataloader2.default(function (keys) {
|
52 | return _promise2.default.all(keys.map(function (key) {
|
53 | var _key = (0, _slicedToArray3.default)(key, 3),
|
54 | entityType = _key[0],
|
55 | id = _key[1],
|
56 | _key$ = _key[2],
|
57 | params = _key$ === undefined ? {} : _key$;
|
58 |
|
59 | return client.lookup(entityType, id, params).then(function (entity) {
|
60 | if (entity) {
|
61 |
|
62 |
|
63 | entity._type = entityType;
|
64 | }
|
65 | return entity;
|
66 | });
|
67 | }));
|
68 | }, {
|
69 | cacheKeyFn: function cacheKeyFn(key) {
|
70 | return client.getLookupURL.apply(client, (0, _toConsumableArray3.default)(key));
|
71 | },
|
72 | cacheMap: cache
|
73 | });
|
74 |
|
75 | var browse = new _dataloader2.default(function (keys) {
|
76 | return _promise2.default.all(keys.map(function (key) {
|
77 | var _key2 = (0, _slicedToArray3.default)(key, 2),
|
78 | entityType = _key2[0],
|
79 | _key2$ = _key2[1],
|
80 | params = _key2$ === undefined ? {} : _key2$;
|
81 |
|
82 | return client.browse(entityType, params).then(function (list) {
|
83 | list[(0, _helpers.toPlural)(entityType)].forEach(function (entity) {
|
84 |
|
85 |
|
86 | entity._type = entityType;
|
87 | });
|
88 | return list;
|
89 | });
|
90 | }));
|
91 | }, {
|
92 | cacheKeyFn: function cacheKeyFn(key) {
|
93 | return client.getBrowseURL.apply(client, (0, _toConsumableArray3.default)(key));
|
94 | },
|
95 | cacheMap: cache
|
96 | });
|
97 |
|
98 | var search = new _dataloader2.default(function (keys) {
|
99 | return _promise2.default.all(keys.map(function (key) {
|
100 | var _key3 = (0, _slicedToArray3.default)(key, 3),
|
101 | entityType = _key3[0],
|
102 | query = _key3[1],
|
103 | _key3$ = _key3[2],
|
104 | params = _key3$ === undefined ? {} : _key3$;
|
105 |
|
106 | return client.search(entityType, query, params).then(function (list) {
|
107 | list[(0, _helpers.toPlural)(entityType)].forEach(function (entity) {
|
108 |
|
109 |
|
110 | entity._type = entityType;
|
111 | });
|
112 | return list;
|
113 | });
|
114 | }));
|
115 | }, {
|
116 | cacheKeyFn: function cacheKeyFn(key) {
|
117 | return client.getSearchURL.apply(client, (0, _toConsumableArray3.default)(key));
|
118 | },
|
119 | cacheMap: cache
|
120 | });
|
121 |
|
122 | return { lookup: lookup, browse: browse, search: search };
|
123 | } |
\ | No newline at end of file |