233 lines
7.8 KiB
TypeScript
233 lines
7.8 KiB
TypeScript
import { DATASQUIREL_LoggedInUser, UserType } from "../../../types";
|
|
import path from "path";
|
|
|
|
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 DATA_DIR = param?.dataDir || process.env.DSQL_DATA_DIR || "/data";
|
|
|
|
const finalUserId = param?.user?.id || param?.userId;
|
|
|
|
if (!appDir)
|
|
throw new Error("Please provide the `DSQL_APP_DIR` env variable.");
|
|
|
|
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";
|
|
|
|
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."
|
|
);
|
|
|
|
const pakageSharedDir = path.join(appDir, `package-shared`);
|
|
|
|
const mainDbTypeDefFile = path.join(pakageSharedDir, `types/dsql.ts`);
|
|
const mainShemaJSONFilePath = path.join(oldSchemasDir, `main.json`);
|
|
const defaultTableFieldsJSONFilePath = path.join(
|
|
pakageSharedDir,
|
|
`data/defaultFields.json`
|
|
);
|
|
|
|
const usersSchemaDir = path.join(privateDataDir, `users`);
|
|
const targetUserPrivateDir = finalUserId
|
|
? path.join(usersSchemaDir, `user-${finalUserId}`)
|
|
: undefined;
|
|
const userTempSQLFilePath = targetUserPrivateDir
|
|
? path.join(targetUserPrivateDir, `tmp.sql`)
|
|
: undefined;
|
|
const userMainShemaJSONFilePath = targetUserPrivateDir
|
|
? path.join(targetUserPrivateDir, `main.json`)
|
|
: undefined;
|
|
|
|
const userConfigJSONFilePath = targetUserPrivateDir
|
|
? path.join(targetUserPrivateDir, `config.json`)
|
|
: undefined;
|
|
|
|
const userSchemaMainJSONFilePath = targetUserPrivateDir
|
|
? path.join(targetUserPrivateDir, `main.json`)
|
|
: undefined;
|
|
const userPrivateMediaDir = targetUserPrivateDir
|
|
? path.join(targetUserPrivateDir, `media`)
|
|
: undefined;
|
|
const userPrivateExportsDir = targetUserPrivateDir
|
|
? path.join(targetUserPrivateDir, `export`)
|
|
: undefined;
|
|
const userPrivateSQLExportsDir = userPrivateExportsDir
|
|
? path.join(userPrivateExportsDir, `sql`)
|
|
: undefined;
|
|
const userPrivateTempSQLExportsDir = userPrivateSQLExportsDir
|
|
? path.join(userPrivateSQLExportsDir, tempDirName)
|
|
: undefined;
|
|
const userPrivateTempJSONSchemaFilePath = userPrivateTempSQLExportsDir
|
|
? path.join(userPrivateTempSQLExportsDir, `schema.json`)
|
|
: undefined;
|
|
const userPrivateDbExportZipFileName = `db-export.zip`;
|
|
const userPrivateDbExportZipFilePath = userPrivateSQLExportsDir
|
|
? path.join(userPrivateSQLExportsDir, userPrivateDbExportZipFileName)
|
|
: undefined;
|
|
|
|
const userPublicMediaDir = finalUserId
|
|
? path.join(publicImagesDir, `user-images/user-${finalUserId}`)
|
|
: undefined;
|
|
|
|
const userPrivateDbImportZipFileName = `db-export.zip`;
|
|
const userPrivateDbImportZipFilePath = userPrivateSQLExportsDir
|
|
? path.join(userPrivateSQLExportsDir, userPrivateDbImportZipFileName)
|
|
: undefined;
|
|
|
|
const dbNginxLoadBalancerConfigFile = path.join(
|
|
appDir,
|
|
"docker/services/mariadb/load-balancer/config/template/nginx.conf"
|
|
);
|
|
|
|
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(
|
|
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"
|
|
);
|
|
const extraDockerComposeFileAlt = path.join(
|
|
appDir,
|
|
"extra.docker-compose.yaml"
|
|
);
|
|
|
|
const siteSetupFile = path.join(appDir, "site-setup.json");
|
|
|
|
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,
|
|
privateDataDir,
|
|
oldSchemasDir,
|
|
userConfigJSONFilePath,
|
|
mainShemaJSONFilePath,
|
|
mainDbTypeDefFile,
|
|
tempDirName,
|
|
defaultTableFieldsJSONFilePath,
|
|
usersSchemaDir,
|
|
targetUserPrivateDir,
|
|
userSchemaMainJSONFilePath,
|
|
userPrivateMediaDir,
|
|
userPrivateExportsDir,
|
|
userPrivateSQLExportsDir,
|
|
userPrivateTempSQLExportsDir,
|
|
userPrivateTempJSONSchemaFilePath,
|
|
userPrivateDbExportZipFileName,
|
|
userPrivateDbExportZipFilePath,
|
|
userPrivateDbImportZipFileName,
|
|
userPrivateDbImportZipFilePath,
|
|
dbNginxLoadBalancerConfigFile,
|
|
dockerComposeFile,
|
|
dockerComposeFileAlt,
|
|
testDockerComposeFile,
|
|
testDockerComposeFileAlt,
|
|
extraDockerComposeFile,
|
|
extraDockerComposeFileAlt,
|
|
siteSetupFile,
|
|
envFile,
|
|
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,
|
|
};
|
|
}
|