datasquirel/package-shared/functions/backend/user-db-handler.ts
Benjamin Toby a1e56bb1b0 Updates
2025-08-06 06:37:43 +01:00

71 lines
1.7 KiB
TypeScript

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;
}