"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 = connDbHandler; const debug_log_1 = __importDefault(require("../logging/debug-log")); /** * # Run Query From MySQL Connection * @description Run a query from a pre-existing MySQL/Mariadb Connection * setup with `serverless-mysql` npm module */ function connDbHandler( /** * MariaDB Connection Pool Object */ connPool, /** * String Or `ConnDBHandlerQueryObject` Array */ query, /** * Array of Values to Sanitize and Inject */ values, debug) { return __awaiter(this, void 0, void 0, function* () { var _a, _b; try { if (!connPool) throw new Error("No Connection Found!"); if (!query) throw new Error("Query String Required!"); let queryErrorArray = []; if (typeof query == "string") { const res = yield connPool.query(trimQuery(query), values); if (debug) { (0, debug_log_1.default)({ log: res, addTime: true, label: "res", }); } if (Array.isArray(res)) { return Array.from(res); } return res; } else if (typeof query == "object") { const resArray = []; for (let i = 0; i < query.length; i++) { let currentQueryError = {}; try { const queryObj = query[i]; currentQueryError.sql = queryObj.query; currentQueryError.sqlValues = queryObj.values; const queryObjRes = yield connPool.query(trimQuery(queryObj.query), queryObj.values); if (debug) { (0, debug_log_1.default)({ log: queryObjRes, addTime: true, label: "queryObjRes", }); } if (Array.isArray(queryObjRes)) { resArray.push(Array.from(queryObjRes)); } else { resArray.push(queryObjRes); } } catch (error) { (_a = global.ERROR_CALLBACK) === null || _a === void 0 ? void 0 : _a.call(global, `Connection DB Handler Query Error`, error); resArray.push(null); currentQueryError["error"] = error.message; queryErrorArray.push(currentQueryError); } } if (debug) { (0, debug_log_1.default)({ log: resArray, addTime: true, label: "resArray", }); } if (queryErrorArray[0]) { return { errors: queryErrorArray, }; } return resArray; } else { return null; } } catch (error) { (_b = global.ERROR_CALLBACK) === null || _b === void 0 ? void 0 : _b.call(global, `Connection DB Handler Error`, error); if (debug) { (0, debug_log_1.default)({ log: `Connection DB Handler Error: ${error.message}`, addTime: true, label: "Error", }); } return { error: `Connection DB Handler Error: ${error.message}`, // config: conn, }; } finally { connPool === null || connPool === void 0 ? void 0 : connPool.end(); } }); } function trimQuery(query) { return query.replace(/\n/gm, " ").replace(/ {2,}/g, " ").trim(); }