UNPKG

opencart-manager

Version:

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

59 lines (58 loc) 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fakeResultSetHeader = void 0; exports.fakeResultSetHeader = { fieldCount: 0, affectedRows: 1, insertId: -1, info: "", serverStatus: undefined, warningStatus: undefined, }; class Actions { select(table, criteria = {}) { let rows = this[table]; if (!Array.isArray(rows)) throw new Error(`Table ${table} doesn't exists`); Object.keys(criteria).forEach((key) => { rows = rows.filter((row) => row[key] === criteria[key]); }); return rows; } insert(table, data) { let insertId; if (Array.isArray(this[table])) { insertId = this[table].push(data) - 1; this[table][insertId][`${table}_id`] = insertId; } else { this[table] = []; insertId = 0; this[table][insertId] = Object.assign(Object.assign({}, data), { [`${table}_id`]: insertId }); } return Object.assign(Object.assign({}, exports.fakeResultSetHeader), { insertId }); } update(table, criteria = {}, data) { const rows = this.select(table, criteria); rows.forEach((row) => { const rowId = row[`${table}_id`]; this[table][rowId] = Object.assign(Object.assign({}, row), data); }); return Object.assign(Object.assign({}, exports.fakeResultSetHeader), { affectedRows: rows.length }); } delete(table, criteria = {}) { const rows = this.select(table, criteria); let affectedRows = 0; Object.keys(rows).forEach((key) => { const row = rows[key]; const rowId = row[`${table}_id`]; delete this[table][rowId]; affectedRows += 1; }); return Object.assign(Object.assign({}, exports.fakeResultSetHeader), { affectedRows }); } import() { return this; } } exports.default = Object.setPrototypeOf({}, new Actions());