opencart-manager
Version:
Node.js package helping to manage your opencart store data easily.
59 lines (58 loc) • 2.08 kB
JavaScript
;
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());