import debugLog from "../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 */ export default async function connDbHandler( /** * ServerlessMySQL Connection Object */ conn, /** * String Or `ConnDBHandlerQueryObject` Array */ query, /** * Array of Values to Sanitize and Inject */ values, debug) { var _a, _b; try { if (!conn) throw new Error("No Connection Found!"); if (!query) throw new Error("Query String Required!"); let queryErrorArray = []; if (typeof query == "string") { const res = await conn.query(trimQuery(query), values); if (debug) { debugLog({ log: res, addTime: true, label: "res", }); } return JSON.parse(JSON.stringify(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 = await conn.query(trimQuery(queryObj.query), queryObj.values); if (debug) { debugLog({ log: queryObjRes, addTime: true, label: "queryObjRes", }); } resArray.push(JSON.parse(JSON.stringify(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) { debugLog({ 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) { debugLog({ log: `Connection DB Handler Error: ${error.message}`, addTime: true, label: "Error", }); } return { error: `Connection DB Handler Error: ${error.message}`, }; } finally { conn === null || conn === void 0 ? void 0 : conn.end(); } } function trimQuery(query) { return query.replace(/\n/gm, "").replace(/ {2,}/g, "").trim(); }