Koha/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/erm-api-client.js
Jonathan Druart f781fdb4a2
Bug 32807: Fetch count instead of all entries for agreements and licenses
To list agreements and licenses we are retrieving the whole list to
simply know if at least one exists (and display the table that will
fetch the X first elements to display).

We should call count instead.

Test plan:
List agreements and licenses.
If none exists, the table is not displayed but a "There are no...
defined" message instead.
If at least one exists the table must be there

Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-03-27 12:50:00 +02:00

260 lines
8.4 KiB
JavaScript

import HttpClient from "./http-client";
export class ERMAPIClient extends HttpClient {
constructor() {
super({
baseURL: "/api/v1/erm/",
});
}
get agreements() {
return {
get: (id) =>
this.get({
endpoint: "agreements/" + id,
headers: {
"x-koha-embed":
"periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
},
}),
getAll: (query) =>
this.get({
endpoint: "agreements?" + (query || "_per_page=-1"),
}),
delete: (id) =>
this.delete({
endpoint: "agreements/" + id,
}),
create: (agreement) =>
this.post({
endpoint: "agreements",
body: agreement,
}),
update: (agreement, id) =>
this.put({
endpoint: "agreements/" + id,
body: agreement,
}),
count: (query = {}) =>
this.count({
endpoint:
"agreements?" +
new URLSearchParams({
_page: 1,
_per_page: 1,
...(query && { q: JSON.stringify(query) }),
}),
}),
};
}
get licenses() {
return {
get: (id) =>
this.get({
endpoint: "licenses/" + id,
headers: {
"x-koha-embed":
"user_roles,user_roles.patron,vendor,documents",
},
}),
getAll: (query) =>
this.get({
endpoint: "licenses?" + (query || "_per_page=-1"),
headers: {
"x-koha-embed": "vendor.name",
},
}),
delete: (id) =>
this.delete({
endpoint: "licenses/" + id,
}),
create: (license) =>
this.post({
endpoint: "licenses",
body: license,
}),
update: (license, id) =>
this.put({
endpoint: "licenses/" + id,
body: license,
}),
count: (query = {}) =>
this.count({
endpoint:
"licenses?" +
new URLSearchParams({
_page: 1,
_per_page: 1,
...(query && { q: JSON.stringify(query) }),
}),
}),
};
}
get localPackages() {
return {
get: (id) =>
this.get({
endpoint: "eholdings/local/packages/" + id,
headers: {
"x-koha-embed":
"package_agreements,package_agreements.agreement,resources+count,vendor",
},
}),
getAll: (query) =>
this.get({
endpoint:
"eholdings/local/packages?" + (query || "_per_page=-1"),
headers: {
"x-koha-embed": "resources+count,vendor.name",
},
}),
delete: (id) =>
this.delete({
endpoint: "eholdings/local/packages/" + id,
}),
create: (local_package) =>
this.post({
endpoint: "eholdings/local/packages",
body: local_package,
}),
update: (local_package, id) =>
this.put({
endpoint: "eholdings/local/packages/" + id,
body: local_package,
}),
count: (query = {}) =>
this.count({
endpoint:
"eholdings/local/packages?" +
new URLSearchParams({
_page: 1,
_per_page: 1,
...(query && { q: JSON.stringify(query) }),
}),
}),
};
}
get localTitles() {
return {
get: (id) =>
this.get({
endpoint: "eholdings/local/titles/" + id,
headers: {
"x-koha-embed": "resources,resources.package",
},
}),
getAll: (query) =>
this.get({
endpoint: "eholdings/local/titles?" + (query || "_per_page=-1"),
}),
delete: (id) =>
this.delete({
endpoint: "eholdings/local/titles/" + id,
}),
create: (local_package) =>
this.post({
endpoint: "eholdings/local/titles",
body: local_package,
}),
update: (local_package, id) =>
this.put({
endpoint: "eholdings/local/titles/" + id,
body: local_package,
}),
count: (query = {}) =>
this.count({
endpoint:
"eholdings/local/titles?" +
new URLSearchParams({
_page: 1,
_per_page: 1,
...(query && { q: JSON.stringify(query) }),
}),
}),
import: (body) =>
this.post({
endpoint: "eholdings/local/titles/import",
body,
}),
};
}
get localResources() {
return {
get: (id) =>
this.get({
endpoint: "eholdings/local/resources/" + id,
headers: {
"x-koha-embed": "title,package,vendor",
},
}),
};
}
get EBSCOPackages() {
return {
get: (id) =>
this.get({
endpoint: "eholdings/ebsco/packages/" + id,
headers: {
"x-koha-embed":
"package_agreements,package_agreements.agreement,resources+count,vendor",
},
}),
getAll: (query) =>
this.get({
endpoint:
"eholdings/ebsco/packages/" +
id +
(query || "_per_page=-1"),
headers: {
"x-koha-embed": "resources+count,vendor.name",
},
}),
patch: (id, body) =>
this.patch({
endpoint: "eholdings/ebsco/packages/" + id,
body,
}),
};
}
get EBSCOTitles() {
return {
get: (id) =>
this.get({
endpoint: "eholdings/ebsco/titles/" + id,
headers: {
"x-koha-embed": "resources,resources.package",
},
}),
getAll: (query) =>
this.get({
endpoint:
"eholdings/local/ebsco/titles" + (query || "_per_page=-1"),
}),
};
}
get EBSCOResources() {
return {
get: (id) =>
this.get({
endpoint: "eholdings/ebsco/resources/" + id,
headers: {
"x-koha-embed": "title,package,vendor",
},
}),
patch: (id, body) =>
this.patch({
endpoint: "eholdings/ebsco/packages/" + id,
body,
}),
};
}
}
export default ERMAPIClient;