| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { product } from "./product.js";
- export class products_loader {
- static async all() {
- const request = await fetch("/products/");
- const response = await request.json();
-
- return products_loader.#response_to_collection(response);
- }
- static #response_to_collection(response) {
- if (response.result !== "success") {
- return new Array();
- }
- if ("collection" in response) {
- return this.#list_response_to_collection(response);
- }
- return this.#single_response_to_collection(response);
- }
- static #single_response_to_collection(response) {
- const result = new Array();
- result.push(new product(response.product));
-
- return result;
- }
- static #list_response_to_collection(response) {
- const result = new Array();
-
- response.collection.forEach(serialized => {
- result.push(new product(serialized));
- });
- return result;
- }
- static async search_name(name) {
- return await products_loader.#search(
- "/product/search/name",
- name
- );
- }
- static async search_author(author) {
- return await products_loader.#search(
- "/product/search/author",
- author
- );
- }
- static async search_barcode(barcode) {
- return await products_loader.#search(
- "/product/get/barcode",
- barcode
- );
- }
- static async #search(path, parameter) {
- const coded = encodeURI(parameter);
- const request = await fetch(path + "/" + coded);
- const response = await request.json();
-
- return products_loader.#response_to_collection(response);
- }
- }
|