"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")); const grab_dsql_connection_1 = __importDefault(require("../grab-dsql-connection")); /** * # 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 */ conn, /** * String Or `ConnDBHandlerQueryObject` Array */ query, /** * Array of Values to Sanitize and Inject */ values, debug) { return __awaiter(this, void 0, void 0, function* () { const finalConnection = conn || (yield (0, grab_dsql_connection_1.default)()); try { if (!finalConnection) throw new Error("No Connection Found!"); if (!query) throw new Error("Query String Required!"); let queryErrorArray = []; if (typeof query == "string") { const [results] = yield finalConnection.query(trimQuery(query), values); if (debug) { (0, debug_log_1.default)({ log: results, addTime: true, label: "res", }); } return results; } 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 finalConnection.query(trimQuery(queryObj.query), queryObj.values); const results = queryObjRes[0]; if (debug) { (0, debug_log_1.default)({ log: results, addTime: true, label: "queryObjRes", }); } resArray.push(results); } catch (error) { console.log("query", query); 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) { 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 { yield (finalConnection === null || finalConnection === void 0 ? void 0 : finalConnection.end()); } }); } function trimQuery(query) { return query.replace(/\n/gm, " ").replace(/ {2,}/g, " ").trim(); }