This commit is contained in:
Benjamin Toby
2025-07-07 09:14:37 +01:00
parent 6acf0f2cd6
commit ccb5605b58
30 changed files with 292 additions and 166 deletions
@@ -20,6 +20,24 @@ export default function grabDirNames(param?: Param) {
throw new Error("Please provide the `DATA_DIR` env variable.");
const STATIC_ROOT = path.join(DATA_DIR, "static");
const staticConfigDir = path.join(DATA_DIR, "static-config");
const staticNGINXConfigFile = path.join(staticConfigDir, "default.conf");
const mainReverseProxyConfigDir = path.join(DATA_DIR, "reverse-proxy");
const mainReverseProxyConfigFile = path.join(
mainReverseProxyConfigDir,
"default.conf"
);
const mainReverseProxyTemplatesDir = path.join(
mainReverseProxyConfigDir,
"templates"
);
const mainReverseProxyTemplatesDefaultFile = path.join(
mainReverseProxyTemplatesDir,
"default.conf.template"
);
const publicImagesDir = path.join(STATIC_ROOT, `images`);
const publicDir = path.join(appDir, "public");
@@ -140,10 +158,12 @@ export default function grabDirNames(param?: Param) {
let dockerComposeFile = path.join(appDir, "docker-compose.yml");
let dockerComposeFileAlt = path.join(appDir, "docker-compose.yaml");
const testDockerComposeFile = path.join(appDir, "test.docker-compose.yml");
const testDockerComposeFileAlt = path.join(
const dsqlDockerComposeFileName = "dsql.docker-compose.yml";
const dsqlDockerComposeFileNameAlt = "dsql.docker-compose.yaml";
const dsqlDockerComposeFile = path.join(appDir, dsqlDockerComposeFileName);
const dsqlDockerComposeFileAlt = path.join(
appDir,
"test.docker-compose.yaml"
dsqlDockerComposeFileNameAlt
);
const dbDockerComposeFile = path.join(appDir, "db.docker-compose.yml");
const dbDockerComposeFileAlt = path.join(appDir, "db.docker-compose.yaml");
@@ -159,7 +179,8 @@ export default function grabDirNames(param?: Param) {
const siteSetupFile = path.join(appDir, "site-setup.json");
const envFile = path.join(appDir, ".env");
const testEnvFile = path.join(appDir, "test.env");
const dsqlEnvFileName = "dsql.env";
const dsqlEnvFile = path.join(appDir, dsqlEnvFileName);
/**
* # Backup Dir names
@@ -173,6 +194,32 @@ export default function grabDirNames(param?: Param) {
const sqlBackupDirName = `sql`;
const schemasBackupDirName = `schema`;
/**
* # Distribution Names
*/
const distroDirName = "distro" as const;
const distroAppDirName = "dsql-app" as const;
const distroDataDirName = "dsql-data" as const;
const distroCommunityName = "dsql-community" as const;
const distroCommunityExportTarName =
`${distroCommunityName}.tar.xz` as const;
const distroProName = "dsql-pro" as const;
const distroProExportTarName = `${distroProName}.tar.xz` as const;
const distroEnterpriseName = "dsql-enterprise" as const;
const distroEnterpriseExportTarName =
`${distroEnterpriseName}.tar.xz` as const;
const communityDistroTempDir = path.resolve(
appDir,
"build",
"community",
".tmp"
);
const communityDistroDir = path.resolve(
communityDistroTempDir,
distroDirName
);
return {
appDir,
privateDataDir,
@@ -197,13 +244,14 @@ export default function grabDirNames(param?: Param) {
dbNginxLoadBalancerConfigFile,
dockerComposeFile,
dockerComposeFileAlt,
testDockerComposeFile,
testDockerComposeFileAlt,
dsqlDockerComposeFile,
dsqlDockerComposeFileAlt,
extraDockerComposeFile,
extraDockerComposeFileAlt,
siteSetupFile,
envFile,
testEnvFile,
dsqlEnvFileName,
dsqlEnvFile,
userPublicMediaDir,
userTempSQLFilePath,
STATIC_ROOT,
@@ -237,5 +285,24 @@ export default function grabDirNames(param?: Param) {
mainDBSSLDir,
replica1DBSSLDir,
replica2DBSSLDir,
staticConfigDir,
staticNGINXConfigFile,
mainReverseProxyConfigDir,
mainReverseProxyConfigFile,
mainReverseProxyTemplatesDir,
mainReverseProxyTemplatesDefaultFile,
dsqlDockerComposeFileName,
dsqlDockerComposeFileNameAlt,
distroDirName,
distroAppDirName,
distroDataDirName,
distroCommunityName,
distroCommunityExportTarName,
distroProName,
distroProExportTarName,
distroEnterpriseName,
distroEnterpriseExportTarName,
communityDistroTempDir,
communityDistroDir,
};
}
@@ -4,12 +4,16 @@ export default function grabDockerStackServicesNames() {
const maxScaleServiceName = `${deploymentName}-dsql-maxscale`;
const dbServiceName = `${deploymentName}-dsql-db`;
const dbCronServiceName = `${deploymentName}-dsql-db-cron`;
const cronServiceName = `${deploymentName}-dsql-cron`;
const postDbSetupServiceName = `${deploymentName}-dsql-post-db-setup`;
const setupServiceName = `${deploymentName}-dsql-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`;
const reverseProxyServiceName = `${deploymentName}-dsql-reverse-proxy`;
const staticServiceName = `${deploymentName}-dsql-static`;
const websocketServiceName = `${deploymentName}-dsql-websocket`;
return {
deploymentName,
@@ -17,10 +21,14 @@ export default function grabDockerStackServicesNames() {
dbServiceName,
dbCronServiceName,
postDbSetupServiceName,
setupServiceName,
webAppServiceName,
webAppCronServiceName,
webAppPostDbSetupServiceName,
dbReplica1ServiceName,
dbReplica2ServiceName,
reverseProxyServiceName,
staticServiceName,
websocketServiceName,
cronServiceName,
};
}
@@ -2,13 +2,23 @@ import grabDockerResourceIPNumbers from "../../grab-docker-resource-ip-numbers";
export default function grabIPAddresses() {
const globalIPPrefix = process.env.DSQL_NETWORK_IP_PREFIX || "172.72.0";
const { cron, db, maxscale, postDbSetup, web } =
grabDockerResourceIPNumbers();
const {
cron,
db,
maxscale,
postDbSetup,
web,
db_cron,
reverse_proxy,
web_app_post_db_setup,
websocket,
} = grabDockerResourceIPNumbers();
const webAppIP = `${globalIPPrefix}.${web}`;
const appCronIP = `${globalIPPrefix}.${cron}`;
const maxScaleIP = `${globalIPPrefix}.${maxscale}`;
const mainDBIP = `${globalIPPrefix}.${db}`;
const webSocketIP = `${globalIPPrefix}.${websocket}`;
const localHostIP = `${globalIPPrefix}.1`;
return {
@@ -18,5 +28,6 @@ export default function grabIPAddresses() {
mainDBIP,
localHostIP,
globalIPPrefix,
webSocketIP,
};
}
@@ -22,8 +22,6 @@ export default async function <
dbFullName,
});
const DB_CONN = global.DSQL_READ_ONLY_DB_CONN || global.DSQL_DB_CONN;
let connQueries: ConnDBHandlerQueryObject[] = [
{
query: queryObject?.string,
@@ -55,7 +53,7 @@ export default async function <
];
}
const res = await connDbHandler(DB_CONN, connQueries);
const res = await connDbHandler(undefined, connQueries);
const isSuccess = Array.isArray(res) && Array.isArray(res[0]);
+7 -4
View File
@@ -1,6 +1,7 @@
import debugLog from "../logging/debug-log";
import { DSQLErrorObject } from "../../types";
import mariadb, { Connection, ConnectionConfig, Pool } from "mariadb";
import grabDSQLConnection from "../grab-dsql-connection";
export type ConnDBHandlerQueryObject = {
query: string;
@@ -33,14 +34,16 @@ export default async function connDbHandler<ReturnType = any>(
values?: ConnDBHandlerQueryObject["values"],
debug?: boolean
): Promise<Return<ReturnType>> {
const finalConnection = conn || (await grabDSQLConnection());
try {
if (!conn) throw new Error("No Connection Found!");
if (!finalConnection) throw new Error("No Connection Found!");
if (!query) throw new Error("Query String Required!");
let queryErrorArray: DSQLErrorObject[] = [];
if (typeof query == "string") {
const res = await conn.query(trimQuery(query), values);
const res = await finalConnection.query(trimQuery(query), values);
if (debug) {
debugLog({
@@ -67,7 +70,7 @@ export default async function connDbHandler<ReturnType = any>(
currentQueryError.sql = queryObj.query;
currentQueryError.sqlValues = queryObj.values;
const queryObjRes = await conn.query(
const queryObjRes = await finalConnection.query(
trimQuery(queryObj.query),
queryObj.values
);
@@ -133,7 +136,7 @@ export default async function connDbHandler<ReturnType = any>(
// config: conn,
};
} finally {
await conn?.end();
await finalConnection?.end();
}
}
@@ -26,6 +26,21 @@ type Param = {
export default async function grabDSQLConnection(
param?: Param
): Promise<Connection> {
return await mariadb.createConnection({
host: process.env.DSQL_DB_HOST,
user: process.env.DSQL_DB_USERNAME,
password: process.env.DSQL_DB_PASSWORD,
database: param?.noDb ? undefined : process.env.DSQL_DB_NAME,
port: process.env.DSQL_DB_PORT
? Number(process.env.DSQL_DB_PORT)
: undefined,
charset: "utf8mb4",
ssl: grabDbSSL(),
supportBigNumbers: true,
bigNumberStrings: false,
dateStrings: true,
});
if (global.DSQL_USE_LOCAL || param?.local) {
return (
global.DSQL_DB_CONN ||
+6 -1
View File
@@ -24,7 +24,12 @@ export default function numberfy(num: any, decimals?: number): number {
if (typeof numberfiedNum !== "number") return 0;
if (isNaN(numberfiedNum)) return 0;
if (decimals) return Number(numberfiedNum.toFixed(decimals));
if (decimals == 0) {
return Math.round(Number(numberfiedNum));
} else if (decimals) {
return Number(numberfiedNum.toFixed(decimals));
}
if (existingDecimals)
return Number(numberfiedNum.toFixed(existingDecimals));
return Math.round(numberfiedNum);