| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- import { autocomplete_request } from "./autocomplete_request";
 
- import { create_request } from "./create_request";
 
- import { import_process_fail } from "./import_process_fail.js";
 
- import { product_get_request } from "./product_get_request.js";
 
- export class import_loop {
 
-     #content;
 
-     #on_autocomplete;
 
-     #on_create;
 
-     #on_single_fail;
 
-     #on_skip;
 
-     #on_single_success;
 
-     #finally;
 
-     on_autocomplete(target) {
 
-         this.#on_autocomplete = target;
 
-         return this;
 
-     }
 
-     on_create(target) {
 
-         this.#on_create = target;
 
-         return this;
 
-     }
 
-     on_single_fail(target) {
 
-         this.#on_single_fail = target;
 
-         return this;
 
-     }
 
-     on_skip(target) {
 
-         this.#on_skip = target;
 
-         return this;
 
-     }
 
-     on_single_success(target) {
 
-         this.#on_single_success = target;
 
-         return this;
 
-     }
 
-     finally(target) {
 
-         this.#finally = target;
 
-         return this;
 
-     }
 
-     constructor(dataset) {
 
-         this.#content = dataset;
 
-         this.#on_autocomplete = null;
 
-         this.#on_create = null;
 
-         this.#on_single_fail = null;
 
-         this.#on_skip = null;
 
-         this.#on_single_success = null;
 
-         this.#finally = null;
 
-     }
 
-     async #autocomplete(target) {
 
-         if (this.#on_autocomplete !== null) {
 
-             try {
 
-                 this.#on_autocomplete(target);
 
-             } catch (error) {
 
-                 console.log(error);
 
-             }
 
-         }
 
-         const request = new autocomplete_request(target.barcode);
 
-         const response = await request.connect();
 
-         if (!response.result) {
 
-             throw new Error(response.cause);
 
-         }
 
-         const found = response.found;
 
-         target.description = found.description;
 
-         if (found.image.length === 0) {
 
-             throw new Error("Image for " + target.barcode + " not found.");
 
-         }
 
-         return new create_request(target, found.image);
 
-     }
 
-     async process() {
 
-         for (const count of this.#content) {
 
-             try {
 
-                 await this.#create(count);
 
-             } catch(error) {
 
-                 if (this.#on_single_fail !== null) {
 
-                     try {
 
-                         const fail = new import_process_fail(count, error);
 
-                         this.#on_single_fail(fail);
 
-                     } catch (error) {
 
-                         console.log(error);
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         if (this.#finally !== null) {
 
-             try {
 
-                 this.#finally();
 
-             } catch (error) {
 
-                 console.log(error);
 
-             }
 
-         }
 
-         return this;
 
-     }
 
-     async #exists(target) {
 
-         const request = new product_get_request(target.barcode);
 
-         const response = await request.connect();
 
-         return response.product !== null;
 
-     }
 
-     async #create(target) {
 
-         if (await this.#exists(target)) {
 
-             try {
 
-                 const result = new import_process_fail(target, null);
 
-                 this.#on_skip(result);
 
-             } catch (error) {
 
-                 console.log(error);
 
-             }
 
-             return;
 
-         }
 
-         const request = await this.#autocomplete(target);
 
-         if (this.on_create !== null) {
 
-             try {
 
-                 this.#on_create(target);
 
-             } catch (error) {
 
-                 console.log(error);
 
-             }
 
-         }
 
-         const response = await request.connect();
 
-         if (!response.result) {
 
-             throw new Error(response.cause);
 
-         }
 
-         if (this.#on_single_success !== null) {
 
-             try {
 
-                 this.#on_single_success(target);
 
-             } catch (error) {
 
-                 console.log(error);
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |