"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 }); exports.default = updateDbEntry; const check_if_is_master_1 = __importDefault(require("../../../utils/check-if-is-master")); const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-handler")); const lodash_1 = __importDefault(require("lodash")); const purge_default_fields_1 = __importDefault(require("../../../utils/purge-default-fields")); const grab_parsed_value_1 = __importDefault(require("./grab-parsed-value")); /** * # Update DB Function * @description */ function updateDbEntry(_a) { return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, data, tableSchema, identifierColumnName, identifierValue, encryptionKey, encryptionSalt, forceLocal, debug, }) { /** * Check if data is valid */ if (!data || !Object.keys(data).length) { return { success: false, payload: undefined, msg: "No data provided", }; } const isMaster = forceLocal ? true : (0, check_if_is_master_1.default)({ dbContext, dbFullName }); //////////////////////////////////////// //////////////////////////////////////// //////////////////////////////////////// let newData = lodash_1.default.cloneDeep(data); newData = (0, purge_default_fields_1.default)(newData); /** * Declare variables * * @description Declare "results" variable */ const dataKeys = Object.keys(newData); let updateKeyValueArray = []; let updateValues = []; for (let i = 0; i < dataKeys.length; i++) { try { const dataKey = dataKeys[i]; let value = newData[dataKey]; const parsedValue = (0, grab_parsed_value_1.default)({ dataKey, encryptionKey, encryptionSalt, tableSchema, value, }); if (typeof parsedValue == "undefined") continue; updateKeyValueArray.push(`\`${dataKey}\`=?`); if (typeof parsedValue == "number") { updateValues.push(String(parsedValue)); } else { updateValues.push(parsedValue); } //////////////////////////////////////// //////////////////////////////////////// } catch ( /** @type {any} */error) { //////////////////////////////////////// //////////////////////////////////////// console.log("DSQL: Error in parsing data keys in update function =>", error.message); continue; } } //////////////////////////////////////// //////////////////////////////////////// updateKeyValueArray.push(`date_updated='${Date()}'`); updateKeyValueArray.push(`date_updated_code='${Date.now()}'`); //////////////////////////////////////// //////////////////////////////////////// const query = `UPDATE ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\` SET ${updateKeyValueArray.join(",")} WHERE \`${identifierColumnName}\`=?`; updateValues.push(identifierValue); const updatedEntry = yield (0, conn_db_handler_1.default)(null, query, updateValues); /** * Return statement */ return { success: Boolean(updatedEntry === null || updatedEntry === void 0 ? void 0 : updatedEntry.affectedRows), payload: updatedEntry, queryObject: { sql: query, params: updateValues, }, debug: debug ? { data, newData } : undefined, }; }); }