"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = grabDirNames;
const path_1 = __importDefault(require("path"));
function grabDirNames(param) {
    var _a;
    const appDir = (param === null || param === void 0 ? void 0 : param.appDir) || process.env.DSQL_APP_DIR;
    if (!appDir)
        throw new Error("Please provide the `DSQL_APP_DIR` env variable.");
    const schemasDir = process.env.DSQL_DB_SCHEMA_DIR ||
        path_1.default.join(appDir, "jsonData", "dbSchemas");
    const tempDirName = ".tmp";
    if (!schemasDir)
        throw new Error("Please provide the `DSQL_DB_SCHEMA_DIR` env variable.");
    const pakageSharedDir = path_1.default.join(appDir, `package-shared`);
    const mainDbTypeDefFile = path_1.default.join(pakageSharedDir, `types/dsql.ts`);
    const mainShemaJSONFilePath = path_1.default.join(schemasDir, `main.json`);
    const defaultTableFieldsJSONFilePath = path_1.default.join(pakageSharedDir, `data/defaultFields.json`);
    const usersSchemaDir = path_1.default.join(schemasDir, `users`);
    const userDirPath = ((_a = param === null || param === void 0 ? void 0 : param.user) === null || _a === void 0 ? void 0 : _a.id)
        ? path_1.default.join(usersSchemaDir, `user-${param.user.id}`)
        : (param === null || param === void 0 ? void 0 : param.userId)
            ? path_1.default.join(usersSchemaDir, `user-${param.userId}`)
            : undefined;
    const userSchemaMainJSONFilePath = userDirPath
        ? path_1.default.join(userDirPath, `main.json`)
        : undefined;
    const userPrivateMediaDir = userDirPath
        ? path_1.default.join(userDirPath, `media`)
        : undefined;
    const userPrivateExportsDir = userDirPath
        ? path_1.default.join(userDirPath, `export`)
        : undefined;
    const userPrivateSQLExportsDir = userPrivateExportsDir
        ? path_1.default.join(userPrivateExportsDir, `sql`)
        : undefined;
    const userPrivateTempSQLExportsDir = userPrivateSQLExportsDir
        ? path_1.default.join(userPrivateSQLExportsDir, tempDirName)
        : undefined;
    const userPrivateTempJSONSchemaFilePath = userPrivateTempSQLExportsDir
        ? path_1.default.join(userPrivateTempSQLExportsDir, `schema.json`)
        : undefined;
    const userPrivateDbExportZipFileName = `db-export.zip`;
    const userPrivateDbExportZipFilePath = userPrivateSQLExportsDir
        ? path_1.default.join(userPrivateSQLExportsDir, userPrivateDbExportZipFileName)
        : undefined;
    const userPrivateDbImportZipFileName = `db-export.zip`;
    const userPrivateDbImportZipFilePath = userPrivateSQLExportsDir
        ? path_1.default.join(userPrivateSQLExportsDir, userPrivateDbImportZipFileName)
        : undefined;
    const dbNginxLoadBalancerConfigFile = path_1.default.join(appDir, "docker/mariadb/load-balancer/config/template/nginx.conf");
    const dockerComposeFile = path_1.default.join(appDir, "docker-compose.yml");
    const testDockerComposeFile = path_1.default.join(appDir, "test.docker-compose.yml");
    const siteSetupFile = path_1.default.join(appDir, "site-setup.json");
    const envFile = path_1.default.join(appDir, ".env");
    const testEnvFile = path_1.default.join(appDir, "test.env");
    return {
        appDir,
        schemasDir,
        userDirPath,
        mainShemaJSONFilePath,
        mainDbTypeDefFile,
        tempDirName,
        defaultTableFieldsJSONFilePath,
        usersSchemaDir,
        userSchemaMainJSONFilePath,
        userPrivateMediaDir,
        userPrivateExportsDir,
        userPrivateSQLExportsDir,
        userPrivateTempSQLExportsDir,
        userPrivateTempJSONSchemaFilePath,
        userPrivateDbExportZipFileName,
        userPrivateDbExportZipFilePath,
        userPrivateDbImportZipFileName,
        userPrivateDbImportZipFilePath,
        dbNginxLoadBalancerConfigFile,
        dockerComposeFile,
        testDockerComposeFile,
        siteSetupFile,
        envFile,
        testEnvFile,
    };
}