This commit is contained in:
Benjamin Toby
2025-07-06 15:32:28 +01:00
parent 3597b11342
commit b38ddc9f21
50 changed files with 453 additions and 245 deletions
@@ -4,14 +4,14 @@ import grabDSQLConnection from "../../grab-dsql-connection";
* # DSQL user read-only DB handler
* @requires DSQL_DB_CONN - Gobal Variable for Datasquirel Database
*/
export default async function DB_HANDLER(...args: any[]) {
export default async function DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = grabDSQLConnection();
try {
if (!CONNECTION)
throw new Error("No Connection provided to DB_HANDLER function!");
const results = await CONNECTION.query(...args);
const results = await CONNECTION.query(query, values);
return JSON.parse(JSON.stringify(results));
} catch (error: any) {
@@ -3,11 +3,11 @@ import grabDSQLConnection from "../../grab-dsql-connection";
/**
* # DSQL user read-only DB handler
*/
export default async function LOCAL_DB_HANDLER(...args: any[]) {
export default async function LOCAL_DB_HANDLER(query: string, values?: any[]) {
const MASTER = grabDSQLConnection();
try {
const results = await MASTER.query(...args);
const results = await MASTER.query(query, values);
return JSON.parse(JSON.stringify(results));
} catch (error: any) {
@@ -1,16 +1,14 @@
import mysql from "serverless-mysql";
import grabDbSSL from "../grabDbSSL";
import grabDSQLConnection from "../../grab-dsql-connection";
/**
* # DSQL user read-only DB handler
*/
export default function NO_DB_HANDLER(...args: any[]) {
export default function NO_DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = grabDSQLConnection();
try {
return new Promise((resolve, reject) => {
CONNECTION.query(...args)
CONNECTION.query(query, values)
.then((results) => {
CONNECTION.end();
resolve(JSON.parse(JSON.stringify(results)));
@@ -3,12 +3,12 @@ import grabDSQLConnection from "../../grab-dsql-connection";
/**
* # Root DB handler
*/
export default function ROOT_DB_HANDLER(...args: any[]) {
export default function ROOT_DB_HANDLER(query: string, values?: any[]) {
const CONNECTION = grabDSQLConnection();
try {
return new Promise((resolve, reject) => {
CONNECTION.query(...args)
CONNECTION.query(query, values)
.then((results) => {
CONNECTION.end();
resolve(JSON.parse(JSON.stringify(results)));
+8 -13
View File
@@ -1,22 +1,19 @@
import fs from "fs";
import grabDirNames from "./names/grab-dir-names";
import type { ConnectionConfig } from "mariadb";
type Return =
| string
| (import("tls").SecureContextOptions & {
rejectUnauthorized?: boolean | undefined;
})
| undefined;
type Return = ConnectionConfig["ssl"] | undefined;
/**
* # Grall SSL
* # Grab SSL
*/
export default function grabDbSSL(): Return {
const SSL_DIR = process.env.DSQL_SSL_DIR;
if (!SSL_DIR?.match(/./)) {
const { maxscaleSSLDir } = grabDirNames();
if (!maxscaleSSLDir?.match(/./)) {
return undefined;
}
const caFilePath = `${SSL_DIR}/ca-cert.pem`;
const caFilePath = `${maxscaleSSLDir}/ca-cert.pem`;
if (!fs.existsSync(caFilePath)) {
console.log(`${caFilePath} does not exist`);
@@ -24,9 +21,7 @@ export default function grabDbSSL(): Return {
}
return {
ca: fs.readFileSync(`${SSL_DIR}/ca-cert.pem`),
// key: fs.readFileSync(`${SSL_DIR}/client-key.pem`),
// cert: fs.readFileSync(`${SSL_DIR}/client-cert.pem`),
ca: fs.readFileSync(`${maxscaleSSLDir}/ca-cert.pem`),
rejectUnauthorized: false,
};
}
@@ -27,6 +27,11 @@ export default function grabDirNames(param?: Param) {
const appSSLDir = path.join(appDir, "ssl");
const mainSSLDir = path.join(DATA_DIR, "ssl");
const maxscaleSSLDir = path.join(mainSSLDir, "maxscale");
const mainDBSSLDir = path.join(mainSSLDir, "main");
const replica1DBSSLDir = path.join(mainSSLDir, "replica-1");
const replica2DBSSLDir = path.join(mainSSLDir, "replica-2");
const privateDataDir = path.join(DATA_DIR, "private");
/**
@@ -228,5 +233,9 @@ export default function grabDirNames(param?: Param) {
sqlBackupDirName,
schemasBackupDirName,
userMainShemaJSONFilePath,
maxscaleSSLDir,
mainDBSSLDir,
replica1DBSSLDir,
replica2DBSSLDir,
};
}
@@ -0,0 +1,26 @@
export default function grabDockerStackServicesNames() {
const deploymentName = process.env.DSQL_DEPLOYMENT_NAME || "dsql";
const maxScaleServiceName = `${deploymentName}-dsql-maxscale`;
const dbServiceName = `${deploymentName}-dsql-db`;
const dbCronServiceName = `${deploymentName}-dsql-db-cron`;
const postDbSetupServiceName = `${deploymentName}-dsql-post-db-setup`;
const webAppServiceName = `${deploymentName}-dsql-web-app`;
const webAppCronServiceName = `${deploymentName}-dsql-web-app-cron`;
const webAppPostDbSetupServiceName = `${deploymentName}-dsql-web-app-post-db-setup`;
const dbReplica1ServiceName = `${deploymentName}-dsql-db-replica-1`;
const dbReplica2ServiceName = `${deploymentName}-dsql-db-replica-2`;
return {
deploymentName,
maxScaleServiceName,
dbServiceName,
dbCronServiceName,
postDbSetupServiceName,
webAppServiceName,
webAppCronServiceName,
webAppPostDbSetupServiceName,
dbReplica1ServiceName,
dbReplica2ServiceName,
};
}
@@ -8,6 +8,15 @@ export default function grabIPAddresses() {
const webAppIP = `${globalIPPrefix}.${web}`;
const appCronIP = `${globalIPPrefix}.${cron}`;
const maxScaleIP = `${globalIPPrefix}.${maxscale}`;
const mainDBIP = `${globalIPPrefix}.${db}`;
const localHostIP = `${globalIPPrefix}.1`;
return { webAppIP, appCronIP, maxScaleIP, globalIPPrefix };
return {
webAppIP,
appCronIP,
maxScaleIP,
mainDBIP,
localHostIP,
globalIPPrefix,
};
}