Updates
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
import { DATASQUIREL_LoggedInUser, UserType } from "../../../types";
|
||||
|
||||
type Param = {
|
||||
user?: DATASQUIREL_LoggedInUser | UserType;
|
||||
userId?: string | number | null;
|
||||
dbSlug?: string;
|
||||
};
|
||||
|
||||
export default function grabUserDbFullName({ dbSlug, user, userId }: Param) {
|
||||
const finalUserId = user?.id || userId;
|
||||
|
||||
if (!finalUserId || !dbSlug)
|
||||
throw new Error(
|
||||
`Couldn't grab full DB name. Missing parameters finalUserId || dbSlug`
|
||||
);
|
||||
|
||||
if (dbSlug.match(/[^a-zA-Z0-9-_]/)) {
|
||||
throw new Error(`Invalid Database slug`);
|
||||
}
|
||||
|
||||
return `datasquirel_user_${finalUserId}_${dbSlug}`;
|
||||
}
|
||||
@@ -5,24 +5,69 @@ type Param = {
|
||||
user?: DATASQUIREL_LoggedInUser | UserType;
|
||||
userId?: string | number | null;
|
||||
appDir?: string;
|
||||
dataDir?: string;
|
||||
};
|
||||
export default function grabDirNames(param?: Param) {
|
||||
const appDir = param?.appDir || process.env.DSQL_APP_DIR;
|
||||
const STATIC_ROOT = process.env.DSQL_STATIC_SERVER_DIR || "/static";
|
||||
const DATA_DIR = param?.dataDir || process.env.DSQL_DATA_DIR || "/data";
|
||||
|
||||
const finalUserId = param?.user?.id || param?.userId;
|
||||
|
||||
const publicImagesDir = path.join(STATIC_ROOT, `images`);
|
||||
|
||||
if (!appDir)
|
||||
throw new Error("Please provide the `DSQL_APP_DIR` env variable.");
|
||||
|
||||
const schemasDir =
|
||||
process.env.DSQL_DB_SCHEMA_DIR ||
|
||||
path.join(appDir, "jsonData", "dbSchemas");
|
||||
if (!DATA_DIR)
|
||||
throw new Error("Please provide the `DATA_DIR` env variable.");
|
||||
|
||||
const STATIC_ROOT = path.join(DATA_DIR, "static");
|
||||
const publicImagesDir = path.join(STATIC_ROOT, `images`);
|
||||
|
||||
const publicDir = path.join(appDir, "public");
|
||||
const publicSSLDir = path.join(publicDir, "documents", "ssl");
|
||||
const appSSLDir = path.join(appDir, "ssl");
|
||||
const mainSSLDir = path.join(DATA_DIR, "ssl");
|
||||
|
||||
const privateDataDir = path.join(DATA_DIR, "private");
|
||||
|
||||
/**
|
||||
* # DB Dir names
|
||||
* @description Database related Directories
|
||||
*/
|
||||
const mainDbDataDir = path.join(DATA_DIR, "db");
|
||||
const mainDbGrastateDatFile = path.join(mainDbDataDir, "grastate.dat");
|
||||
const replica1DbDataDir = path.join(DATA_DIR, "replica-1");
|
||||
|
||||
const mariadbMainConfigDir = path.join(DATA_DIR, "db-config", "main");
|
||||
const mariadbReplicaConfigDir = path.join(DATA_DIR, "db-config", "replica");
|
||||
const maxscaleConfigDir = path.join(DATA_DIR, "db-config", "maxscale");
|
||||
|
||||
const mariadbMainConfigFile = path.join(
|
||||
mariadbMainConfigDir,
|
||||
"default.cnf"
|
||||
);
|
||||
const mariadbReplicaConfigFile = path.join(
|
||||
mariadbReplicaConfigDir,
|
||||
"default.cnf"
|
||||
);
|
||||
const galeraConfigFile = path.join(mariadbMainConfigDir, "galera.cnf");
|
||||
const galeraReplicaConfigFile = path.join(
|
||||
mariadbReplicaConfigDir,
|
||||
"galera.cnf"
|
||||
);
|
||||
const maxscaleConfigFile = path.join(maxscaleConfigDir, "maxscale.cnf");
|
||||
|
||||
/**
|
||||
* # Schema Dir names
|
||||
* @description
|
||||
*/
|
||||
const oldSchemasDir = path.join(appDir, "jsonData", "dbSchemas");
|
||||
const appSchemaJSONFile = path.join(oldSchemasDir, "1.json");
|
||||
const tempDirName = ".tmp";
|
||||
|
||||
if (!schemasDir)
|
||||
const appConfigDir = path.join(appDir, "jsonData", "config");
|
||||
const appConfigJSONFile = path.join(appConfigDir, "app-config.json");
|
||||
|
||||
if (!privateDataDir)
|
||||
throw new Error(
|
||||
"Please provide the `DSQL_DB_SCHEMA_DIR` env variable."
|
||||
);
|
||||
@@ -30,31 +75,35 @@ export default function grabDirNames(param?: Param) {
|
||||
const pakageSharedDir = path.join(appDir, `package-shared`);
|
||||
|
||||
const mainDbTypeDefFile = path.join(pakageSharedDir, `types/dsql.ts`);
|
||||
const mainShemaJSONFilePath = path.join(schemasDir, `main.json`);
|
||||
const mainShemaJSONFilePath = path.join(oldSchemasDir, `main.json`);
|
||||
const defaultTableFieldsJSONFilePath = path.join(
|
||||
pakageSharedDir,
|
||||
`data/defaultFields.json`
|
||||
);
|
||||
|
||||
const usersSchemaDir = path.join(schemasDir, `users`);
|
||||
const targetUserSchemaDir = finalUserId
|
||||
const usersSchemaDir = path.join(privateDataDir, `users`);
|
||||
const targetUserPrivateDir = finalUserId
|
||||
? path.join(usersSchemaDir, `user-${finalUserId}`)
|
||||
: undefined;
|
||||
const userTempSQLFilePath = targetUserSchemaDir
|
||||
? path.join(targetUserSchemaDir, `tmp.sql`)
|
||||
const userTempSQLFilePath = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `tmp.sql`)
|
||||
: undefined;
|
||||
const userMainShemaJSONFilePath = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `main.json`)
|
||||
: undefined;
|
||||
|
||||
const userDirPath = finalUserId
|
||||
? path.join(usersSchemaDir, `user-${finalUserId}`)
|
||||
const userConfigJSONFilePath = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `config.json`)
|
||||
: undefined;
|
||||
const userSchemaMainJSONFilePath = userDirPath
|
||||
? path.join(userDirPath, `main.json`)
|
||||
|
||||
const userSchemaMainJSONFilePath = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `main.json`)
|
||||
: undefined;
|
||||
const userPrivateMediaDir = userDirPath
|
||||
? path.join(userDirPath, `media`)
|
||||
const userPrivateMediaDir = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `media`)
|
||||
: undefined;
|
||||
const userPrivateExportsDir = userDirPath
|
||||
? path.join(userDirPath, `export`)
|
||||
const userPrivateExportsDir = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `export`)
|
||||
: undefined;
|
||||
const userPrivateSQLExportsDir = userPrivateExportsDir
|
||||
? path.join(userPrivateExportsDir, `sql`)
|
||||
@@ -91,6 +140,8 @@ export default function grabDirNames(param?: Param) {
|
||||
appDir,
|
||||
"test.docker-compose.yaml"
|
||||
);
|
||||
const dbDockerComposeFile = path.join(appDir, "db.docker-compose.yml");
|
||||
const dbDockerComposeFileAlt = path.join(appDir, "db.docker-compose.yaml");
|
||||
const extraDockerComposeFile = path.join(
|
||||
appDir,
|
||||
"extra.docker-compose.yml"
|
||||
@@ -105,16 +156,29 @@ export default function grabDirNames(param?: Param) {
|
||||
const envFile = path.join(appDir, ".env");
|
||||
const testEnvFile = path.join(appDir, "test.env");
|
||||
|
||||
/**
|
||||
* # Backup Dir names
|
||||
* @description
|
||||
*/
|
||||
const mainBackupDir = path.join(DATA_DIR, "backups");
|
||||
const userBackupDir = targetUserPrivateDir
|
||||
? path.join(targetUserPrivateDir, `backups`)
|
||||
: undefined;
|
||||
|
||||
const sqlBackupDirName = `sql`;
|
||||
const schemasBackupDirName = `schema`;
|
||||
|
||||
return {
|
||||
appDir,
|
||||
schemasDir,
|
||||
userDirPath,
|
||||
privateDataDir,
|
||||
oldSchemasDir,
|
||||
userConfigJSONFilePath,
|
||||
mainShemaJSONFilePath,
|
||||
mainDbTypeDefFile,
|
||||
tempDirName,
|
||||
defaultTableFieldsJSONFilePath,
|
||||
usersSchemaDir,
|
||||
targetUserSchemaDir,
|
||||
targetUserPrivateDir,
|
||||
userSchemaMainJSONFilePath,
|
||||
userPrivateMediaDir,
|
||||
userPrivateExportsDir,
|
||||
@@ -137,5 +201,32 @@ export default function grabDirNames(param?: Param) {
|
||||
testEnvFile,
|
||||
userPublicMediaDir,
|
||||
userTempSQLFilePath,
|
||||
STATIC_ROOT,
|
||||
appConfigJSONFile,
|
||||
appConfigDir,
|
||||
mariadbMainConfigDir,
|
||||
mariadbMainConfigFile,
|
||||
maxscaleConfigDir,
|
||||
mariadbReplicaConfigDir,
|
||||
DATA_DIR,
|
||||
publicDir,
|
||||
publicSSLDir,
|
||||
appSSLDir,
|
||||
maxscaleConfigFile,
|
||||
mariadbReplicaConfigFile,
|
||||
mainSSLDir,
|
||||
mainDbDataDir,
|
||||
replica1DbDataDir,
|
||||
galeraConfigFile,
|
||||
galeraReplicaConfigFile,
|
||||
dbDockerComposeFile,
|
||||
dbDockerComposeFileAlt,
|
||||
mainDbGrastateDatFile,
|
||||
appSchemaJSONFile,
|
||||
mainBackupDir,
|
||||
userBackupDir,
|
||||
sqlBackupDirName,
|
||||
schemasBackupDirName,
|
||||
userMainShemaJSONFilePath,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
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 webAppIP = `${globalIPPrefix}.${web}`;
|
||||
const appCronIP = `${globalIPPrefix}.${cron}`;
|
||||
const maxScaleIP = `${globalIPPrefix}.${maxscale}`;
|
||||
|
||||
return { webAppIP, appCronIP, maxScaleIP, globalIPPrefix };
|
||||
}
|
||||
Reference in New Issue
Block a user