This commit is contained in:
Benjamin Toby
2025-01-21 18:43:03 +01:00
parent 9f773de1a1
commit 1db9c3a2e7
37 changed files with 244 additions and 311 deletions
@@ -1,16 +1,14 @@
// @ts-check
import sanitizeHtml from "sanitize-html";
import sanitizeHtmlOptions from "../html/sanitizeHtmlOptions";
import updateDbEntry from "./updateDbEntry";
import _ from "lodash";
import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import encrypt from "../../dsql/encrypt";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER";
import connDbHandler from "../../../utils/db/conn-db-handler";
import checkIfIsMaster from "../../../utils/check-if-is-master";
import { DbContextsArray } from "./runQuery";
type Param = {
dbContext?: "Master" | "Dsql User";
dbContext?: (typeof DbContextsArray)[number];
paradigm?: "Read Only" | "Full Access";
dbFullName?: string;
tableName: string;
@@ -42,20 +40,14 @@ export default async function addDbEntry({
/**
* Initialize variables
*/
const isMaster = global.DSQL_USE_LOCAL
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
const isMaster = checkIfIsMaster({ dbContext, dbFullName });
/** @type { any } */
const dbHandler: any = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
const DB_CONN = isMaster
? global.DSQL_DB_CONN
: global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
const DB_RO_CONN = isMaster
? global.DSQL_DB_CONN
: global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
////////////////////////////////////////
////////////////////////////////////////
@@ -72,28 +64,22 @@ export default async function addDbEntry({
////////////////////////////////////////
////////////////////////////////////////
/**
* Handle function logic
*/
if (duplicateColumnName && typeof duplicateColumnName === "string") {
const duplicateValue = isMaster
? await dbHandler(
`SELECT * FROM \`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
[duplicateColumnValue]
)
: await dbHandler({
paradigm: "Read Only",
queryString: `SELECT * FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`,
queryValues: [duplicateColumnValue],
});
const checkDuplicateQuery = `SELECT * FROM ${
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${duplicateColumnName}\`=?`;
const duplicateValue = await connDbHandler(
DB_RO_CONN,
checkDuplicateQuery,
[duplicateColumnValue]
);
if (duplicateValue?.[0] && !update) {
return null;
} else if (duplicateValue && duplicateValue[0] && update) {
return await updateDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
data,
@@ -178,7 +164,7 @@ export default async function addDbEntry({
} else {
insertValuesArray.push(value);
}
} catch (/** @type {any} */ error: any) {
} catch (error: any) {
console.log("DSQL: Error in parsing data keys =>", error.message);
continue;
}
@@ -210,18 +196,14 @@ export default async function addDbEntry({
////////////////////////////////////////
const query = `INSERT INTO \`${dbFullName}\`.\`${tableName}\` (${insertKeysArray.join(
","
)}) VALUES (${insertValuesArray.map(() => "?").join(",")})`;
const query = `INSERT INTO ${
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` (${insertKeysArray.join(",")}) VALUES (${insertValuesArray
.map(() => "?")
.join(",")})`;
const queryValuesArray = insertValuesArray;
const newInsert = isMaster
? await dbHandler(query, queryValuesArray)
: await dbHandler({
paradigm,
queryString: query,
queryValues: queryValuesArray,
});
const newInsert = await connDbHandler(DB_CONN, query, queryValuesArray);
/**
* Return statement
@@ -1,10 +1,9 @@
import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER";
import checkIfIsMaster from "../../../utils/check-if-is-master";
import connDbHandler from "../../../utils/db/conn-db-handler";
import { DbContextsArray } from "./runQuery";
type Param = {
dbContext?: string;
paradigm?: "Read Only" | "Full Access";
dbContext?: (typeof DbContextsArray)[number];
dbFullName: string;
tableName: string;
tableSchema?: import("../../../types").DSQL_TableSchemaType;
@@ -18,41 +17,33 @@ type Param = {
*/
export default async function deleteDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
identifierColumnName,
identifierValue,
}: Param): Promise<object | null> {
try {
const isMaster = global.DSQL_USE_LOCAL
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
const isMaster = checkIfIsMaster({ dbContext, dbFullName });
const dbHandler: (a1: any, a2?: any) => any = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
const DB_CONN = isMaster
? global.DSQL_DB_CONN
: global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
const DB_RO_CONN = isMaster
? global.DSQL_DB_CONN
: global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/**
* Execution
*
* @description
*/
const query = `DELETE FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
const query = `DELETE FROM ${
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
const deletedEntry = isMaster
? await dbHandler(query, [identifierValue])
: await dbHandler({
paradigm,
queryString: query,
queryValues: [identifierValue],
});
const deletedEntry = await connDbHandler(DB_CONN, query, [
identifierValue,
]);
/**
* Return statement
@@ -7,7 +7,10 @@ import deleteDbEntry from "./deleteDbEntry";
import trimSql from "../../../utils/trim-sql";
import { DSQL_TableSchemaType } from "../../../types";
export const DbContextsArray = ["Master", "Dsql User"] as const;
type Param = {
dbContext?: (typeof DbContextsArray)[number];
dbFullName: string;
query: string | any;
readOnly?: boolean;
@@ -28,6 +31,7 @@ export default async function runQuery({
queryValuesArray,
tableName,
debug,
dbContext,
}: Param): Promise<any> {
/**
* Declare variables
@@ -117,10 +121,7 @@ export default async function runQuery({
switch (action.toLowerCase()) {
case "insert":
result = await addDbEntry({
dbContext: global.DSQL_USE_LOCAL
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbContext,
dbFullName: dbFullName,
tableName: table,
data: data,
@@ -138,10 +139,7 @@ export default async function runQuery({
case "update":
result = await updateDbEntry({
dbContext: global.DSQL_USE_LOCAL
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbContext,
dbFullName: dbFullName,
tableName: table,
data: data,
@@ -154,10 +152,7 @@ export default async function runQuery({
case "delete":
result = await deleteDbEntry({
dbContext: global.DSQL_USE_LOCAL
? "Master"
: "Dsql User",
paradigm: "Full Access",
dbContext,
dbFullName: dbFullName,
tableName: table,
identifierColumnName,
@@ -1,13 +1,12 @@
import sanitizeHtml from "sanitize-html";
import sanitizeHtmlOptions from "../html/sanitizeHtmlOptions";
import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import encrypt from "../../dsql/encrypt";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER";
import checkIfIsMaster from "../../../utils/check-if-is-master";
import connDbHandler from "../../../utils/db/conn-db-handler";
import { DbContextsArray } from "./runQuery";
type Param = {
dbContext?: "Master" | "Dsql User";
paradigm?: "Read Only" | "Full Access";
dbContext?: (typeof DbContextsArray)[number];
dbFullName?: string;
tableName: string;
encryptionKey?: string;
@@ -24,7 +23,6 @@ type Param = {
*/
export default async function updateDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
data,
@@ -39,20 +37,14 @@ export default async function updateDbEntry({
*/
if (!data || !Object.keys(data).length) return null;
const isMaster = global.DSQL_USE_LOCAL
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
const isMaster = checkIfIsMaster({ dbContext, dbFullName });
/** @type {(a1:any, a2?:any)=> any } */
const dbHandler: (a1: any, a2?: any) => any = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
const DB_CONN = isMaster
? global.DSQL_DB_CONN
: global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
const DB_RO_CONN = isMaster
? global.DSQL_DB_CONN
: global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
////////////////////////////////////////
////////////////////////////////////////
@@ -162,19 +154,15 @@ export default async function updateDbEntry({
////////////////////////////////////////
////////////////////////////////////////
const query = `UPDATE \`${dbFullName}\`.\`${tableName}\` SET ${updateKeyValueArray.join(
const query = `UPDATE ${
isMaster ? "" : `\`${dbFullName}\`.`
}\`${tableName}\` SET ${updateKeyValueArray.join(
","
)} WHERE \`${identifierColumnName}\`=?`;
updateValues.push(identifierValue);
const updatedEntry = isMaster
? await dbHandler(query, updateValues)
: await dbHandler({
paradigm,
queryString: query,
queryValues: updateValues,
});
const updatedEntry = await connDbHandler(DB_CONN, query, updateValues);
/**
* Return statement
@@ -1,7 +1,4 @@
// @ts-check
import DSQL_USER_DB_HANDLER from "../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER";
import connDbHandler from "../../utils/db/conn-db-handler";
import parseDbResults from "./parseDbResults";
import serverError from "./serverError";
@@ -26,24 +23,18 @@ export default async function fullAccessDbHandler({
*/
let results;
const DB_CONN = global.DSQL_FULL_ACCESS_DB_CONN || global.DSQL_DB_CONN;
/**
* Fetch from db
*
* @description Fetch data from db if no cache
*/
try {
/** ********************* Run Query */
results = global.DSQL_USE_LOCAL
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
: await DSQL_USER_DB_HANDLER({
paradigm: "Full Access",
queryString,
queryValues: queryValuesArray,
});
results = await connDbHandler(DB_CONN, queryString, queryValuesArray);
////////////////////////////////////////
} catch (/** @type {any} */ error: any) {
} catch (error: any) {
////////////////////////////////////////
serverError({
@@ -55,6 +46,8 @@ export default async function fullAccessDbHandler({
* Return error
*/
return error.message;
} finally {
DB_CONN?.end();
}
/**
@@ -1,10 +1,6 @@
// @ts-check
import fs from "fs";
import serverError from "./serverError";
import parseDbResults from "./parseDbResults";
import DSQL_USER_DB_HANDLER from "../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER";
import connDbHandler from "../../utils/db/conn-db-handler";
type Param = {
queryString: string;
@@ -28,22 +24,18 @@ export default async function varReadOnlyDatabaseDbHandler({
*/
let results;
const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
/**
* Fetch from db
*
* @description Fetch data from db if no cache
*/
try {
results = global.DSQL_USE_LOCAL
? await LOCAL_DB_HANDLER(queryString, queryValuesArray)
: await DSQL_USER_DB_HANDLER({
paradigm: "Read Only",
queryString,
queryValues: queryValuesArray,
});
results = await connDbHandler(DB_CONN, queryString, queryValuesArray);
////////////////////////////////////////
} catch (/** @type {any} */ error: any) {
} catch (error: any) {
////////////////////////////////////////
serverError({
@@ -56,6 +48,8 @@ export default async function varReadOnlyDatabaseDbHandler({
* Return error
*/
return error.message;
} finally {
DB_CONN?.end();
}
/**