Bug 32939: Use APIClient to fetch local eHoldings
[koha-ffzg.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 agreements() {
11         return {
12             get: (id) =>
13                 this.get({
14                     endpoint: "agreements/" + id,
15                     headers: {
16                         "x-koha-embed":
17                             "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
18                     },
19                 }),
20             getAll: (query) =>
21                 this.get({
22                     endpoint: "agreements?" + (query || "_per_page=-1"),
23                 }),
24             delete: (id) =>
25                 this.delete({
26                     endpoint: "agreements/" + id,
27                 }),
28             create: (agreement) =>
29                 this.post({
30                     endpoint: "agreements",
31                     body: agreement,
32                 }),
33             update: (agreement, id) =>
34                 this.put({
35                     endpoint: "agreements/" + id,
36                     body: agreement,
37                 }),
38             //count: () => this.count("agreements"), //TODO: Implement count method
39         };
40     }
41
42     get licenses() {
43         return {
44             get: (id) =>
45                 this.get({
46                     endpoint: "licenses/" + id,
47                     headers: {
48                         "x-koha-embed":
49                             "user_roles,user_roles.patron,vendor,documents",
50                     },
51                 }),
52             getAll: (query) =>
53                 this.get({
54                     endpoint: "licenses?" + (query || "_per_page=-1"),
55                     headers: {
56                         "x-koha-embed": "vendor.name",
57                     },
58                 }),
59             delete: (id) =>
60                 this.delete({
61                     endpoint: "licenses/" + id,
62                 }),
63             create: (license) =>
64                 this.post({
65                     endpoint: "licenses",
66                     body: license,
67                 }),
68             update: (license, id) =>
69                 this.put({
70                     endpoint: "licenses/" + id,
71                     body: license,
72                 }),
73         };
74     }
75
76     get localPackages() {
77         return {
78             get: (id) =>
79                 this.get({
80                     endpoint: "eholdings/local/packages/" + id,
81                     headers: {
82                         "x-koha-embed":
83                             "package_agreements,package_agreements.agreement,resources+count,vendor",
84                     },
85                 }),
86             getAll: (query) =>
87                 this.get({
88                     endpoint:
89                         "eholdings/local/packages?" + (query || "_per_page=-1"),
90                     headers: {
91                         "x-koha-embed": "resources+count,vendor.name",
92                     },
93                 }),
94             delete: (id) =>
95                 this.delete({
96                     endpoint: "eholdings/local/packages/" + id,
97                 }),
98             create: (local_package) =>
99                 this.post({
100                     endpoint: "eholdings/local/packages",
101                     body: local_package,
102                 }),
103             update: (local_package, id) =>
104                 this.put({
105                     endpoint: "eholdings/local/packages/" + id,
106                     body: local_package,
107                 }),
108             count: (query = {}) =>
109                 this.count({
110                     endpoint:
111                         "eholdings/local/packages?" +
112                         new URLSearchParams({
113                             _page: 1,
114                             _per_page: 1,
115                             ...(query && { q: JSON.stringify(query) }),
116                         }),
117                 }),
118         };
119     }
120
121     get localTitles() {
122         return {
123             get: (id) =>
124                 this.get({
125                     endpoint: "eholdings/local/titles/" + id,
126                     headers: {
127                         "x-koha-embed": "resources,resources.package",
128                     },
129                 }),
130             getAll: (query) =>
131                 this.get({
132                     endpoint: "eholdings/local/titles?" + (query || "_per_page=-1"),
133                 }),
134             delete: (id) =>
135                 this.delete({
136                     endpoint: "eholdings/local/titles/" + id,
137                 }),
138             create: (local_package) =>
139                 this.post({
140                     endpoint: "eholdings/local/titles",
141                     body: local_package,
142                 }),
143             update: (local_package, id) =>
144                 this.put({
145                     endpoint: "eholdings/local/titles/" + id,
146                     body: local_package,
147                 }),
148             count: (query = {}) =>
149                 this.count({
150                     endpoint:
151                         "eholdings/local/titles?" +
152                         new URLSearchParams({
153                             _page: 1,
154                             _per_page: 1,
155                             ...(query && { q: JSON.stringify(query) }),
156                         }),
157                 }),
158         };
159     }
160
161     get localResources() {
162         return {
163             get: (id) =>
164                 this.get({
165                     endpoint: "eholdings/local/resources/" + id,
166                     headers: {
167                         "x-koha-embed": "title,package,vendor",
168                     },
169                 }),
170         };
171     }
172 }
173
174 export default ERMAPIClient;