| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- import { import_process_fail } from "./import_process_fail.js";
 
- import { product_base } from "./product_base";
 
- export class database {
 
-     #content;
 
-     #processed;
 
-     #on_skip;
 
-     constructor(content) {
 
-         this.#content = content
 
-         this.#processed = new Map();
 
-         this.#on_skip = null;
 
-     }
 
-     #append(target) {
 
-         if (this.#processed.has(target.barcode)) {
 
-             this.#processed.get(target.barcode).stock_count += 1;
 
-             return;
 
-         }
 
-         this.#processed.set(target.barcode, target)
 
-     }
 
-     #validate(target) {
 
-         if (!("id" in target)) {
 
-             throw new Error("One of item has no ID.");
 
-         }
 
-         if (!("title" in target)) {
 
-             throw new Error("Product " + target.barcode + " has no title.")
 
-         }
 
-         if (!("author" in target)) {
 
-             throw new Error("Product " + target.barcode + " has no author.")
 
-         }
 
-     }
 
-     #convert(target) {
 
-         this.#validate(target);
 
-         const product = new product_base();
 
-         product.name = target.title;
 
-         product.description = "";
 
-         product.author = target.author;
 
-         product.stock_count = 1;
 
-         product.barcode = target.id;
 
-         return product;
 
-     }
 
-     on_skip(target) {
 
-         this.#on_skip = target;
 
-         return this;
 
-     }
 
-     process() {
 
-         this.#processed.clear();
 
-         if (!(this.#content instanceof Array)) {
 
-             throw new Error("Database woud be array of objects.")
 
-         }
 
-         this.#content.forEach(count => {
 
-             try {
 
-                 const product = this.#convert(count);
 
-                 this.#append(product);
 
-             } catch (error) {
 
-                 if (this.#on_skip === null) {
 
-                     return ;
 
-                 }
 
-                 try {
 
-                     this.#on_skip(new import_process_fail(count, error));
 
-                 } catch (fail) {
 
-                     console.log(fail);
 
-                 }
 
-             }
 
-         });
 
-         return this;
 
-     }
 
-     results() {
 
-         return Array.from(this.#processed.values());
 
-     }
 
- }
 
 
  |