Bug 34587: Convert titles search to keyword search
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / vue / fetch / erm-api-client.js
1 import HttpClient from "./http-client";
2
3 export class ERMAPIClient extends HttpClient {
4     constructor() {
5         super({
6             baseURL: "/api/v1/erm/",
7         });
8     }
9
10     get config() {
11         return {
12             get: () =>
13                 this.get({
14                     endpoint: "config",
15                 }),
16         };
17     }
18
19     get agreements() {
20         return {
21             get: id =>
22                 this.get({
23                     endpoint: "agreements/" + id,
24                     headers: {
25                         "x-koha-embed":
26                             "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
27                     },
28                 }),
29             getAll: (query, params) =>
30                 this.getAll({
31                     endpoint: "agreements",
32                     query,
33                     params,
34                 }),
35             delete: id =>
36                 this.delete({
37                     endpoint: "agreements/" + id,
38                 }),
39             create: agreement =>
40                 this.post({
41                     endpoint: "agreements",
42                     body: agreement,
43                 }),
44             update: (agreement, id) =>
45                 this.put({
46                     endpoint: "agreements/" + id,
47                     body: agreement,
48                 }),
49             count: (query = {}) =>
50                 this.count({
51                     endpoint:
52                         "agreements?" +
53                         new URLSearchParams({
54                             _page: 1,
55                             _per_page: 1,
56                             ...(query && { q: JSON.stringify(query) }),
57                         }),
58                 }),
59         };
60     }
61
62     get licenses() {
63         return {
64             get: id =>
65                 this.get({
66                     endpoint: "licenses/" + id,
67                     headers: {
68                         "x-koha-embed":
69                             "user_roles,user_roles.patron,vendor,documents",
70                     },
71                 }),
72             getAll: (query, params) =>
73                 this.getAll({
74                     endpoint: "licenses",
75                     query,
76                     params,
77                     headers: {
78                         "x-koha-embed": "vendor",
79                     },
80                 }),
81             delete: id =>
82                 this.delete({
83                     endpoint: "licenses/" + id,
84                 }),
85             create: license =>
86                 this.post({
87                     endpoint: "licenses",
88                     body: license,
89                 }),
90             update: (license, id) =>
91                 this.put({
92                     endpoint: "licenses/" + id,
93                     body: license,
94                 }),
95             count: (query = {}) =>
96                 this.count({
97                     endpoint:
98                         "licenses?" +
99                         new URLSearchParams({
100                             _page: 1,
101                             _per_page: 1,
102                             ...(query && { q: JSON.stringify(query) }),
103                         }),
104                 }),
105         };
106     }
107
108     get localPackages() {
109         return {
110             get: id =>
111                 this.get({
112                     endpoint: "eholdings/local/packages/" + id,
113                     headers: {
114                         "x-koha-embed":
115                             "package_agreements,package_agreements.agreement,resources+count,vendor",
116                     },
117                 }),
118             getAll: (query, params) =>
119                 this.getAll({
120                     endpoint: "eholdings/local/packages",
121                     query,
122                     params,
123                     headers: {
124                         "x-koha-embed": "resources+count,vendor.name",
125                     },
126                 }),
127             delete: id =>
128                 this.delete({
129                     endpoint: "eholdings/local/packages/" + id,
130                 }),
131             create: local_package =>
132                 this.post({
133                     endpoint: "eholdings/local/packages",
134                     body: local_package,
135                 }),
136             update: (local_package, id) =>
137                 this.put({
138                     endpoint: "eholdings/local/packages/" + id,
139                     body: local_package,
140                 }),
141             count: (query = {}) =>
142                 this.count({
143                     endpoint:
144                         "eholdings/local/packages?" +
145                         new URLSearchParams({
146                             _page: 1,
147                             _per_page: 1,
148                             ...(query && { q: JSON.stringify(query) }),
149                         }),
150                 }),
151         };
152     }
153
154     get localTitles() {
155         return {
156             get: id =>
157                 this.get({
158                     endpoint: "eholdings/local/titles/" + id,
159                     headers: {
160                         "x-koha-embed": "resources,resources.package",
161                     },
162                 }),
163             delete: id =>
164                 this.delete({
165                     endpoint: "eholdings/local/titles/" + id,
166                 }),
167             create: local_package =>
168                 this.post({
169                     endpoint: "eholdings/local/titles",
170                     body: local_package,
171                 }),
172             update: (local_package, id) =>
173                 this.put({
174                     endpoint: "eholdings/local/titles/" + id,
175                     body: local_package,
176                 }),
177             count: (query = {}) =>
178                 this.count({
179                     endpoint:
180                         "eholdings/local/titles?" +
181                         new URLSearchParams({
182                             _page: 1,
183                             _per_page: 1,
184                             ...(query && { q: JSON.stringify(query) }),
185                         }),
186                 }),
187             import: body =>
188                 this.post({
189                     endpoint: "eholdings/local/titles/import",
190                     body,
191                 }),
192         };
193     }
194
195     get localResources() {
196         return {
197             get: id =>
198                 this.get({
199                     endpoint: "eholdings/local/resources/" + id,
200                     headers: {
201                         "x-koha-embed": "title,package,vendor",
202                     },
203                 }),
204         };
205     }
206
207     get EBSCOPackages() {
208         return {
209             get: id =>
210                 this.get({
211                     endpoint: "eholdings/ebsco/packages/" + id,
212                     headers: {
213                         "x-koha-embed":
214                             "package_agreements,package_agreements.agreement,resources+count,vendor",
215                     },
216                 }),
217             patch: (id, body) =>
218                 this.patch({
219                     endpoint: "eholdings/ebsco/packages/" + id,
220                     body,
221                 }),
222         };
223     }
224
225     get EBSCOTitles() {
226         return {
227             get: id =>
228                 this.get({
229                     endpoint: "eholdings/ebsco/titles/" + id,
230                     headers: {
231                         "x-koha-embed": "resources,resources.package",
232                     },
233                 }),
234         };
235     }
236
237     get EBSCOResources() {
238         return {
239             get: id =>
240                 this.get({
241                     endpoint: "eholdings/ebsco/resources/" + id,
242                     headers: {
243                         "x-koha-embed": "title,package,vendor",
244                     },
245                 }),
246             patch: (id, body) =>
247                 this.patch({
248                     endpoint: "eholdings/ebsco/resources/" + id,
249                     body,
250                 }),
251         };
252     }
253
254     get usage_data_providers() {
255         return {
256             get: id =>
257                 this.get({
258                     endpoint: "usage_data_providers/" + id,
259                 }),
260             getAll: query =>
261                 this.get({
262                     endpoint: "usage_data_providers",
263                     query,
264                 }),
265             delete: id =>
266                 this.delete({
267                     endpoint: "usage_data_providers/" + id,
268                 }),
269             create: usage_data_provider =>
270                 this.post({
271                     endpoint: "usage_data_providers",
272                     body: usage_data_provider,
273                 }),
274             update: (usage_data_provider, id) =>
275                 this.put({
276                     endpoint: "usage_data_providers/" + id,
277                     body: usage_data_provider,
278                 }),
279             run: (id, begin_date, end_date) =>
280                 this.get({
281                     endpoint:
282                         "usage_data_providers/" +
283                         id +
284                         "/run?begin_date=" +
285                         begin_date +
286                         "&end_date=" +
287                         end_date,
288                 }),
289             test: id =>
290                 this.get({
291                     endpoint: "usage_data_providers/" + id + "/test_connection",
292                 }),
293             count: (query = {}) =>
294                 this.count({
295                     endpoint:
296                         "usage_data_providers?" +
297                         new URLSearchParams({
298                             _page: 1,
299                             _per_page: 1,
300                             ...(query && { q: JSON.stringify(query) }),
301                         }),
302                 }),
303         };
304     }
305
306     get counter_files() {
307         return {
308             delete: id =>
309                 this.delete({
310                     endpoint: "counter_files/" + id,
311                 }),
312             count: (query = {}) =>
313                 this.count({
314                     endpoint:
315                         "counter_files?" +
316                         new URLSearchParams({
317                             _page: 1,
318                             _per_page: 1,
319                             ...(query && { q: JSON.stringify(query) }),
320                         }),
321                 }),
322         };
323     }
324
325     get default_usage_reports() {
326         return {
327             getAll: query =>
328                 this.get({
329                     endpoint: "default_usage_reports",
330                     query,
331                 }),
332             create: default_usage_report =>
333                 this.post({
334                     endpoint: "default_usage_reports",
335                     body: default_usage_report,
336                 }),
337             delete: (id) =>
338                 this.delete({
339                     endpoint: "default_usage_reports/" + id,
340                 }),
341         };
342     }
343
344     get usage_platforms() {
345         return {
346             count: (query = {}) =>
347                 this.count({
348                     endpoint:
349                         "usage_platforms?" +
350                         new URLSearchParams({
351                             _page: 1,
352                             _per_page: 1,
353                             ...(query && { q: JSON.stringify(query) }),
354                         }),
355                 }),
356         };
357     }
358
359     get usage_items() {
360         return {
361             count: (query = {}) =>
362                 this.count({
363                     endpoint:
364                         "usage_items?" +
365                         new URLSearchParams({
366                             _page: 1,
367                             _per_page: 1,
368                             ...(query && { q: JSON.stringify(query) }),
369                         }),
370                 }),
371         };
372     }
373
374     get usage_databases() {
375         return {
376             count: (query = {}) =>
377                 this.count({
378                     endpoint:
379                         "usage_databases?" +
380                         new URLSearchParams({
381                             _page: 1,
382                             _per_page: 1,
383                             ...(query && { q: JSON.stringify(query) }),
384                         }),
385                 }),
386         };
387     }
388
389     get usage_titles() {
390         return {
391             count: (query = {}) =>
392                 this.count({
393                     endpoint:
394                         "usage_titles?" +
395                         new URLSearchParams({
396                             _page: 1,
397                             _per_page: 1,
398                             ...(query && { q: JSON.stringify(query) }),
399                         }),
400                 }),
401         };
402     }
403 }
404
405 export default ERMAPIClient;