UNPKG

opencart-manager

Version:

Node.js package helping to manage your opencart store data easily.

106 lines (105 loc) 4.63 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const product_1 = __importDefault(require("../entities/product")); const product_image_1 = __importDefault(require("./product-image")); const product_option_1 = __importDefault(require("./product-option")); const product_special_1 = __importDefault(require("./product-special")); class ProductFactory { constructor(model) { this.model = model; this.option = new product_option_1.default(this.model); this.special = new product_special_1.default(this.model); this.image = new product_image_1.default(this.model); } create() { return new product_1.default(this.model); } extract(criteria) { return __awaiter(this, void 0, void 0, function* () { const rowsData = yield this.model.product.select(criteria); return this.createEntityFromRowData(rowsData[0]); }); } extractAll(criteria) { return __awaiter(this, void 0, void 0, function* () { const rowsData = yield this.model.product.select(criteria); const entities = []; for (const rowData of rowsData) { const entity = yield this.createEntityFromRowData(rowData); if (entity) { entities.push(entity); } } return entities; }); } createEntityFromRowData(rowData) { return __awaiter(this, void 0, void 0, function* () { if (!rowData) return undefined; const { productId } = rowData; const descriptionRowData = yield this.model.product.description.select({ productId, }); const entity = new product_1.default(this.model, productId); entity.setData({ model: rowData.model, sku: rowData.sku, upc: rowData.upc, ean: rowData.ean, jan: rowData.jan, isbn: rowData.isbn, mpn: rowData.mpn, location: rowData.location, quantity: rowData.quantity, stockStatusId: rowData.stockStatusId, image: rowData.image, manufacturerId: rowData.manufacturerId, shipping: rowData.shipping, price: rowData.price, points: rowData.points, taxClassId: rowData.taxClassId, dateAvailable: rowData.dateAvailable, weight: rowData.weight, weightClassId: rowData.weightClassId, length: rowData.length, width: rowData.width, height: rowData.height, lengthClassId: rowData.lengthClassId, subtract: rowData.subtract, minimum: rowData.minimum, sortOrder: rowData.sortOrder, status: rowData.status, viewed: rowData.viewed, dateAdded: rowData.dateAdded, dateModified: rowData.dateModified, }); descriptionRowData.forEach((row) => { entity.setDescription({ languageId: row.languageId, name: row.name, description: row.description, tag: row.tag, metaTitle: row.metaTitle, metaH1: row.metaH1, metaDescription: row.metaDescription, metaKeyword: row.metaKeyword, }); }); return entity; }); } } exports.default = ProductFactory;