import { ServerlessMysql } from "serverless-mysql"; type QueryObject = { query: string; values?: (string | number | undefined)[]; }; type Return = ReturnType | null; /** * # 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: ServerlessMysql, /** * String Or `QueryObject` Array */ query: QueryObject["query"] | QueryObject[], /** * Array of Values to Sanitize and Inject */ values?: QueryObject["values"] ): Promise> { try { if (typeof query == "string") { const res = await conn.query(query, values); return JSON.parse(JSON.stringify(res)); } else if (typeof query == "object") { const resArray = []; for (let i = 0; i < query.length; i++) { const queryObj = query[i]; const queryObjRes = await conn.query( queryObj.query, queryObj.values ); resArray.push(JSON.parse(JSON.stringify(queryObjRes))); } return resArray as any; } else { return null; } } catch (error) { return null; } finally { conn.end(); } }