UNPKG

opencart-manager

Version:

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

90 lines (89 loc) 3.91 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 errors_1 = __importDefault(require("./errors")); const utils_1 = require("./utils"); class Database { constructor(connection, prefix = "oc_") { this.connection = connection; this.prefix = prefix; } select(table, criteria) { return __awaiter(this, void 0, void 0, function* () { const criteriaSnakeCase = utils_1.snakeCasePropertyNames(criteria); const result = yield this.connection.query(` SELECT * FROM \`${this.prefix + table}\` WHERE ${Object.keys(criteriaSnakeCase) .map((key) => `\`${key}\` = '${criteriaSnakeCase[key]}'`) .join(" AND ")} `); return result[0].map((row) => utils_1.camelCasePropertyNames(row)); }); } insert(table, data) { return __awaiter(this, void 0, void 0, function* () { const dataSnakeCase = utils_1.snakeCasePropertyNames(data); const result = yield this.connection.query(` INSERT INTO \`${this.prefix + table}\` (${Object.keys(dataSnakeCase) .map((key) => `\`${key}\``) .join(", ")}) VALUES (${Object.keys(dataSnakeCase) .map((key) => `'${dataSnakeCase[key]}'`) .join(", ")}) `); if (result[0].affectedRows === 0) { throw new Error(errors_1.default.NO_AFFECTED_ROWS); } return result[0]; }); } update(table, criteria, data) { return __awaiter(this, void 0, void 0, function* () { const dataSnakeCase = utils_1.snakeCasePropertyNames(data); const criteriaSnakeCase = utils_1.snakeCasePropertyNames(criteria); const result = yield this.connection.query(` UPDATE \`${this.prefix + table}\` SET ${Object.keys(dataSnakeCase) .map((key) => `\`${key}\` = '${dataSnakeCase[key]}'`) .join(", ")} WHERE ${Object.keys(criteriaSnakeCase) .map((key) => `\`${key}\` = '${criteriaSnakeCase[key]}'`) .join(" AND ")} `); if (result[0].affectedRows === 0) { throw new Error(errors_1.default.NO_AFFECTED_ROWS); } return result[0]; }); } delete(table, criteria) { return __awaiter(this, void 0, void 0, function* () { const criteriaSnakeCase = utils_1.snakeCasePropertyNames(criteria); const result = yield this.connection.query(` DELETE FROM \`${this.prefix + table}\` WHERE ${Object.keys(criteriaSnakeCase) .map((key) => `\`${key}\` = '${criteriaSnakeCase[key]}'`) .join(" AND ")} `); return result[0]; }); } close() { this.connection.destroy(); } } exports.default = Database;