This commit is contained in:
Benjamin Toby
2025-01-14 10:49:37 +01:00
parent 2118a55ab6
commit 0cd3eb418c
19 changed files with 307 additions and 65 deletions
@@ -1,9 +1,24 @@
import mysql from "serverless-mysql";
/**
* # DSQL user read-only DB handler
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
*/
export default async function DB_HANDLER(...args: any[]) {
const CONNECTION = global.DSQL_DB_CONN;
const CONNECTION =
global.DSQL_DB_CONN ||
mysql({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT
? Number(process.env.DSQL_DB_PORT)
: undefined,
charset: "utf8mb4",
},
});
try {
if (!CONNECTION)
@@ -1,3 +1,4 @@
import mysql from "serverless-mysql";
import connDbHandler from "../../db/conn-db-handler";
type Param = {
@@ -14,25 +15,40 @@ export default async function DSQL_USER_DB_HANDLER({
queryString,
queryValues,
}: Param) {
const CONNECTION =
global.DSQL_DB_CONN ||
mysql({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT
? Number(process.env.DSQL_DB_PORT)
: undefined,
charset: "utf8mb4",
},
});
try {
switch (paradigm) {
case "Read Only":
return await connDbHandler(
global.DSQL_READ_ONLY_DB_CONN,
global.DSQL_READ_ONLY_DB_CONN || CONNECTION,
queryString,
queryValues
);
case "Full Access":
return await connDbHandler(
global.DSQL_FULL_ACCESS_DB_CONN,
global.DSQL_FULL_ACCESS_DB_CONN || CONNECTION,
queryString,
queryValues
);
case "FA":
return await connDbHandler(
global.DSQL_FULL_ACCESS_DB_CONN,
global.DSQL_FULL_ACCESS_DB_CONN || CONNECTION,
queryString,
queryValues
);
@@ -5,17 +5,30 @@ import grabDbSSL from "../grabDbSSL";
* # DSQL user read-only DB handler
*/
export default function NO_DB_HANDLER(...args: any[]) {
const NO_DB = global.DSQL_DB_CONN;
const CONNECTION =
global.DSQL_DB_CONN ||
mysql({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT
? Number(process.env.DSQL_DB_PORT)
: undefined,
charset: "utf8mb4",
},
});
try {
return new Promise((resolve, reject) => {
NO_DB.query(...args)
CONNECTION.query(...args)
.then((results) => {
NO_DB.end();
CONNECTION.end();
resolve(JSON.parse(JSON.stringify(results)));
})
.catch((err) => {
NO_DB.end();
CONNECTION.end();
resolve({
error: err.message,
sql: err.sql,
@@ -27,5 +40,7 @@ export default function NO_DB_HANDLER(...args: any[]) {
success: false,
error: error.message,
};
} finally {
CONNECTION?.end();
}
}
@@ -1,18 +1,33 @@
import mysql from "serverless-mysql";
/**
* # Root DB handler
*/
export default function ROOT_DB_HANDLER(...args: any[]) {
const NO_DB = global.DSQL_DB_CONN;
const CONNECTION =
global.DSQL_DB_CONN ||
mysql({
config: {
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT
? Number(process.env.DSQL_DB_PORT)
: undefined,
charset: "utf8mb4",
},
});
try {
return new Promise((resolve, reject) => {
NO_DB.query(...args)
CONNECTION.query(...args)
.then((results) => {
NO_DB.end();
CONNECTION.end();
resolve(JSON.parse(JSON.stringify(results)));
})
.catch((err) => {
NO_DB.end();
CONNECTION.end();
resolve({
error: err.message,
sql: err.sql,
@@ -24,5 +39,7 @@ export default function ROOT_DB_HANDLER(...args: any[]) {
success: false,
error: error.message,
};
} finally {
CONNECTION?.end();
}
}