This commit is contained in:
Benjamin Toby
2025-07-06 17:00:35 +01:00
parent b38ddc9f21
commit 6acf0f2cd6
48 changed files with 353 additions and 622 deletions
@@ -5,7 +5,7 @@ import grabDSQLConnection from "../../grab-dsql-connection";
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
*/
export default async function DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = grabDSQLConnection();
const CONNECTION = await grabDSQLConnection();
try {
if (!CONNECTION)
@@ -13,7 +13,11 @@ export default async function DB_HANDLER(query: string, values?: any[]) {
const results = await CONNECTION.query(query, values);
return JSON.parse(JSON.stringify(results));
if (Array.isArray(results)) {
return Array.from(results);
} else {
return results;
}
} catch (error: any) {
global.ERROR_CALLBACK?.(`DB_HANDLER Error`, error as Error);
return {
@@ -17,8 +17,8 @@ export default async function DSQL_USER_DB_HANDLER({
}: Param) {
const CONNECTION =
paradigm == "Read Only"
? grabDSQLConnection({ ro: true })
: grabDSQLConnection({ fa: true });
? await grabDSQLConnection({ ro: true })
: await grabDSQLConnection({ fa: true });
try {
return await connDbHandler(CONNECTION, queryString, queryValues);
@@ -26,6 +26,6 @@ export default async function DSQL_USER_DB_HANDLER({
global.ERROR_CALLBACK?.(`DSQL_USER_DB_HANDLER Error`, error as Error);
return null;
} finally {
CONNECTION?.end();
await CONNECTION?.end();
}
}
@@ -4,12 +4,16 @@ import grabDSQLConnection from "../../grab-dsql-connection";
* # DSQL user read-only DB handler
*/
export default async function LOCAL_DB_HANDLER(query: string, values?: any[]) {
const MASTER = grabDSQLConnection();
const CONNECTION = await grabDSQLConnection();
try {
const results = await MASTER.query(query, values);
const results = await CONNECTION.query(query, values);
return JSON.parse(JSON.stringify(results));
if (Array.isArray(results)) {
return Array.from(results);
} else {
return results;
}
} catch (error: any) {
global.ERROR_CALLBACK?.(`LOCAL_DB_HANDLER Error`, error as Error);
return {
@@ -17,6 +21,6 @@ export default async function LOCAL_DB_HANDLER(query: string, values?: any[]) {
error: error.message,
};
} finally {
await MASTER?.end();
await CONNECTION?.end();
}
}
@@ -3,22 +3,27 @@ import grabDSQLConnection from "../../grab-dsql-connection";
/**
* # DSQL user read-only DB handler
*/
export default function NO_DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = grabDSQLConnection();
export default async function NO_DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = await grabDSQLConnection();
try {
return new Promise((resolve, reject) => {
CONNECTION.query(query, values)
.then((results) => {
CONNECTION.end();
resolve(JSON.parse(JSON.stringify(results)));
.then(async (results) => {
if (Array.isArray(results)) {
resolve(Array.from(results));
} else {
resolve(results);
}
})
.catch((err) => {
CONNECTION.end();
.catch(async (err) => {
resolve({
error: err.message,
sql: err.sql,
});
})
.finally(async () => {
await CONNECTION?.end();
});
});
} catch (error: any) {
@@ -27,7 +32,5 @@ export default function NO_DB_HANDLER(query: string, values?: any[]) {
success: false,
error: error.message,
};
} finally {
CONNECTION?.end();
}
}
@@ -1,33 +0,0 @@
import grabDSQLConnection from "../../grab-dsql-connection";
/**
* # Root DB handler
*/
export default function ROOT_DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = grabDSQLConnection();
try {
return new Promise((resolve, reject) => {
CONNECTION.query(query, values)
.then((results) => {
CONNECTION.end();
resolve(JSON.parse(JSON.stringify(results)));
})
.catch((err) => {
CONNECTION.end();
resolve({
error: err.message,
sql: err.sql,
});
});
});
} catch (error: any) {
global.ERROR_CALLBACK?.(`ROOT_DB_HANDLER Error`, error as Error);
return {
success: false,
error: error.message,
};
} finally {
CONNECTION?.end();
}
}
+10 -7
View File
@@ -1,6 +1,6 @@
import debugLog from "../logging/debug-log";
import { DSQLErrorObject } from "../../types";
import type { ConnectionConfig, Pool } from "mariadb";
import mariadb, { Connection, ConnectionConfig, Pool } from "mariadb";
export type ConnDBHandlerQueryObject = {
query: string;
@@ -20,9 +20,9 @@ type Return<ReturnType = any> =
*/
export default async function connDbHandler<ReturnType = any>(
/**
* MariaDB Connection Pool Object
* MariaDB Connection
*/
connPool?: Pool,
conn?: mariadb.Connection,
/**
* String Or `ConnDBHandlerQueryObject` Array
*/
@@ -34,13 +34,13 @@ export default async function connDbHandler<ReturnType = any>(
debug?: boolean
): Promise<Return<ReturnType>> {
try {
if (!connPool) throw new Error("No Connection Found!");
if (!conn) throw new Error("No Connection Found!");
if (!query) throw new Error("Query String Required!");
let queryErrorArray: DSQLErrorObject[] = [];
if (typeof query == "string") {
const res = await connPool.query(trimQuery(query), values);
const res = await conn.query(trimQuery(query), values);
if (debug) {
debugLog({
@@ -67,7 +67,7 @@ export default async function connDbHandler<ReturnType = any>(
currentQueryError.sql = queryObj.query;
currentQueryError.sqlValues = queryObj.values;
const queryObjRes = await connPool.query(
const queryObjRes = await conn.query(
trimQuery(queryObj.query),
queryObj.values
);
@@ -90,6 +90,9 @@ export default async function connDbHandler<ReturnType = any>(
`Connection DB Handler Query Error`,
error as Error
);
console.log("query", query);
resArray.push(null);
currentQueryError["error"] = error.message;
queryErrorArray.push(currentQueryError);
@@ -130,7 +133,7 @@ export default async function connDbHandler<ReturnType = any>(
// config: conn,
};
} finally {
connPool?.end();
await conn?.end();
}
}
+24 -10
View File
@@ -1,4 +1,4 @@
import mariadb, { Pool } from "mariadb";
import mariadb, { Connection, Pool } from "mariadb";
import grabDbSSL from "./backend/grabDbSSL";
type Param = {
@@ -23,11 +23,13 @@ type Param = {
/**
* # Grab General CONNECTION for DSQL
*/
export default function grabDSQLConnection(param?: Param): Pool {
export default async function grabDSQLConnection(
param?: Param
): Promise<Connection> {
if (global.DSQL_USE_LOCAL || param?.local) {
return (
global.DSQL_DB_CONN ||
mariadb.createPool({
(await mariadb.createConnection({
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
@@ -37,14 +39,17 @@ export default function grabDSQLConnection(param?: Param): Pool {
: undefined,
charset: "utf8mb4",
ssl: grabDbSSL(),
})
supportBigNumbers: true,
bigNumberStrings: false,
dateStrings: true,
}))
);
}
if (param?.ro) {
return (
global.DSQL_READ_ONLY_DB_CONN ||
mariadb.createPool({
(await mariadb.createConnection({
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_READ_ONLY_USERNAME,
password: process.env.DSQL_DB_READ_ONLY_PASSWORD,
@@ -53,14 +58,17 @@ export default function grabDSQLConnection(param?: Param): Pool {
: undefined,
charset: "utf8mb4",
ssl: grabDbSSL(),
})
supportBigNumbers: true,
bigNumberStrings: false,
dateStrings: true,
}))
);
}
if (param?.fa) {
return (
global.DSQL_FULL_ACCESS_DB_CONN ||
mariadb.createPool({
(await mariadb.createConnection({
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_FULL_ACCESS_USERNAME,
password: process.env.DSQL_DB_FULL_ACCESS_PASSWORD,
@@ -69,13 +77,16 @@ export default function grabDSQLConnection(param?: Param): Pool {
: undefined,
charset: "utf8mb4",
ssl: grabDbSSL(),
})
supportBigNumbers: true,
bigNumberStrings: false,
dateStrings: true,
}))
);
}
return (
global.DSQL_DB_CONN ||
mariadb.createPool({
(await mariadb.createConnection({
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
@@ -85,6 +96,9 @@ export default function grabDSQLConnection(param?: Param): Pool {
: undefined,
charset: "utf8mb4",
ssl: grabDbSSL(),
})
supportBigNumbers: true,
bigNumberStrings: false,
dateStrings: true,
}))
);
}
+22 -6
View File
@@ -8,15 +8,15 @@ type Params = {
connectionLimit?: number;
};
export default function setupDSQLDb({
export default async function setupDSQLDb({
useLocal,
dbConfig,
ssl,
connectionLimit = 100,
connectionLimit = 20,
}: Params) {
global.DSQL_USE_LOCAL = useLocal || true;
const pool = mariadb.createPool({
const conn = await mariadb.createConnection({
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
@@ -24,10 +24,26 @@ export default function setupDSQLDb({
charset: "utf8mb4",
...dbConfig,
ssl: ssl ? grabDbSSL() : undefined,
connectionLimit,
supportBigNumbers: true,
bigNumberStrings: false,
dateStrings: true,
});
global.DSQL_DB_CONN = pool;
// const conn = mariadb.createPool({
// host: process.env.DSQL_DB_HOST,
// user: process.env.DSQL_DB_USERNAME,
// password: process.env.DSQL_DB_PASSWORD,
// database: process.env.DSQL_DB_NAME,
// charset: "utf8mb4",
// ...dbConfig,
// ssl: ssl ? grabDbSSL() : undefined,
// connectionLimit,
// supportBigNumbers: true,
// bigNumberStrings: false,
// dateStrings: true,
// });
global.DSQL_DB_CONN = conn;
// let readOnlyConnection;
@@ -47,7 +63,7 @@ export default function setupDSQLDb({
// }
return {
pool,
conn,
// readOnlyConnection,
};
}