71 lines
1.7 KiB
TypeScript
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(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;
|
|
}
|