"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 = deleteDbEntry; const sql_formatter_1 = require("sql-formatter"); 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")); /** * # Delete DB Entry Function * @description */ function deleteDbEntry(_a) { return __awaiter(this, arguments, void 0, function* ({ dbContext, dbFullName, tableName, identifierColumnName, identifierValue, forceLocal, whereClauseObject, }) { try { const isMaster = forceLocal ? true : (0, check_if_is_master_1.default)({ dbContext, dbFullName }); /** * Execution * * @description */ let query = `DELETE FROM ${isMaster && !dbFullName ? "" : `\`${dbFullName}\`.`}\`${tableName}\``; let values = []; if (whereClauseObject) { query += ` ${whereClauseObject.clause}`; values.push(...(whereClauseObject.params || [])); } else if (identifierColumnName && identifierValue) { query += ` WHERE \`${identifierColumnName.toString()}\`=?`; values = [identifierValue]; } else { throw new Error(`Delete operation has no specified rows! Can't delete everything in this table!`); } const deletedEntry = (yield (0, conn_db_handler_1.default)({ query, values, })); /** * Return statement */ return { success: Boolean(deletedEntry.affectedRows), payload: deletedEntry, queryObject: { sql: (0, sql_formatter_1.format)(query), params: values, }, }; } catch (error) { const errorMsg = `Error Deleting Entry =>, ${error.message}`; console.log(errorMsg); return { success: false, msg: errorMsg, }; } }); }