import mariadb from "mariadb"; import { DSQL_TableSchemaType, UserType } from "../../types"; import grabMariadbMainUserForUser from "./grab-mariadb-main-user-for-user"; import connDbHandler from "../../utils/db/conn-db-handler"; import grabDbSSL from "../../utils/backend/grabDbSSL"; import _ from "lodash"; type Params = { query?: string; values?: any[]; database?: string; tableSchema?: DSQL_TableSchemaType; debug?: boolean; user: UserType; }; export default async function userDbHandler({ query, user, database, debug, tableSchema, values, }: Params) { const { fullName, host, username, password } = await grabMariadbMainUserForUser({ user }); const connection = await mariadb.createConnection({ host, user: username, password: password, database: database, charset: "utf8mb4", ssl: grabDbSSL(), supportBigNumbers: true, bigNumberStrings: false, dateStrings: true, bigIntAsNumber: true, metaAsArray: true, }); const results = await connDbHandler({ conn: connection, query }); if (Array.isArray(results)) { const parsedDbResults = results.map((res) => parseResultObject(res)); return parsedDbResults; } return results; } function parseResultObject(res: any) { if (typeof res !== "object") return res; if (!res) return res; const newRes = _.cloneDeep(res); const resKeys = Object.keys(res); for (let i = 0; i < resKeys.length; i++) { const k = resKeys[i]; const val = newRes[k]; if (typeof val == "object" && val) { newRes[k] = ""; } } return newRes; }