import { DATASQUIREL_LoggedInUser, UserType } from "../../../types"; import path from "path"; type Param = { user?: DATASQUIREL_LoggedInUser | UserType; userId?: string | number | null; }; export default function grabDirNames(param?: Param) { const appDir = process.env.DSQL_APP_DIR; const schemasDir = process.env.DSQL_DB_SCHEMA_DIR; const tempDirName = ".tmp"; if (!appDir) throw new Error("Please provide the `DSQL_APP_DIR` env variable."); if (!schemasDir) 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(schemasDir, `main.json`); const defaultTableFieldsJSONFilePath = path.join( pakageSharedDir, `data/defaultFields.json` ); const usersSchemaDir = path.join(schemasDir, `users`); const userDirPath = param?.user?.id ? path.join(usersSchemaDir, `user-${param.user.id}`) : param?.userId ? path.join(usersSchemaDir, `user-${param.userId}`) : undefined; const userSchemaMainJSONFilePath = userDirPath ? path.join(userDirPath, `main.json`) : undefined; const userPrivateMediaDir = userDirPath ? path.join(userDirPath, `media`) : undefined; const userPrivateExportsDir = userDirPath ? path.join(userDirPath, `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 userPrivateDbImportZipFileName = `db-export.zip`; const userPrivateDbImportZipFilePath = userPrivateSQLExportsDir ? path.join(userPrivateSQLExportsDir, userPrivateDbImportZipFileName) : undefined; const dbNginxLoadBalancerConfigFile = path.join( appDir, "docker/mariadb/load-balancer/config/template/nginx.conf" ); return { schemasDir, userDirPath, mainShemaJSONFilePath, mainDbTypeDefFile, tempDirName, defaultTableFieldsJSONFilePath, usersSchemaDir, userSchemaMainJSONFilePath, userPrivateMediaDir, userPrivateExportsDir, userPrivateSQLExportsDir, userPrivateTempSQLExportsDir, userPrivateTempJSONSchemaFilePath, userPrivateDbExportZipFileName, userPrivateDbExportZipFilePath, userPrivateDbImportZipFileName, userPrivateDbImportZipFilePath, dbNginxLoadBalancerConfigFile, }; }