UNPKG

node-flyway

Version:

Apply version control to databases from within a Node.js application.

157 lines 6.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FlywayCommandLineOptions = void 0; const types_1 = require("util/types"); const os_1 = require("os"); class FlywayCommandLineOptions { constructor(options) { this.options = options; this.options = options; } static build(config) { const options = CommandLineOptionGenerator.generateCommandLineOptions(config); return new FlywayCommandLineOptions(options); } getCommandLineOptions() { return this.options.map(option => option.convertToCommandLineString()); } convertToCommandLineString() { return this.options.map(option => option.convertToCommandLineString()).join(" "); } } exports.FlywayCommandLineOptions = FlywayCommandLineOptions; class FlywayCommandLineStandardOption { constructor(commandLineOptionKey, commandLineOptionValue) { this.commandLineOptionKey = commandLineOptionKey; this.commandLineOptionValue = commandLineOptionValue; } convertToCommandLineString() { const quote = (0, os_1.platform)() === "win32" ? '"' : "'"; return `-${this.commandLineOptionKey}=${quote}${this.commandLineOptionValue}${quote}`; } } class FlywayCommandLineArrayOption { constructor(commandLineOptionKey, commandLineOptionValues) { this.commandLineOptionKey = commandLineOptionKey; this.commandLineOptionValues = commandLineOptionValues; } convertToCommandLineString() { const quote = (0, os_1.platform)() === "win32" ? '"' : "'"; return `-${this.commandLineOptionKey}=${quote}${this.commandLineOptionValues.join(',')}${quote}`; } } class FlywayCommandLineMapOption { constructor(commandLineOptionKey, commandLineOptionMapValues) { this.commandLineOptionKey = commandLineOptionKey; this.commandLineOptionMapValues = commandLineOptionMapValues; } convertToCommandLineString() { const commandLineStringParts = []; const quote = (0, os_1.platform)() === 'win32' ? '"' : "'"; // Throw if keys include whitespace this.commandLineOptionMapValues.forEach((key, val) => { commandLineStringParts.push(`${this.commandLineOptionKey}.${key}=${quote}${val}${quote}`); }); return commandLineStringParts.join(" "); } } class CommandLineOptionGenerator { static generateCommandLineOptions(config) { const mergedConfig = this.mergeConfigProperties(config); const flatConfig = Object.assign({ url: mergedConfig.url, user: mergedConfig.user, password: mergedConfig.password, defaultSchema: mergedConfig.defaultSchema, migrationLocations: mergedConfig.migrationLocations }, mergedConfig.advanced); const configKeys = Object.keys(flatConfig); return configKeys .filter(configKey => flatConfig[configKey] != undefined) .map(configKey => this.build(flatConfig, configKey, commandLineOptionMap)) .filter(this.isDefined); } static mergeConfigProperties(config) { var _a, _b; let defaultSchema; let schemas; if (config.defaultSchema == undefined || ((_a = config.advanced) === null || _a === void 0 ? void 0 : _a.schemas) == undefined) { defaultSchema = config.defaultSchema; schemas = (_b = config.advanced) === null || _b === void 0 ? void 0 : _b.schemas; } else { defaultSchema = config.defaultSchema; schemas = config.advanced.schemas.filter(schema => schema != config.defaultSchema); } const basicConfig = Object.assign(Object.assign({}, config), { defaultSchema: defaultSchema }); const advancedConfig = config.advanced != null ? Object.assign(Object.assign({}, config.advanced), { schemas }) : undefined; return Object.assign(Object.assign({}, basicConfig), { advanced: advancedConfig }); } static build(config, configKey, commandLineOptionMappings) { const configPropertyValue = config[configKey]; if (configPropertyValue == undefined) { return undefined; } if (Array.isArray(configPropertyValue)) { return new FlywayCommandLineArrayOption(commandLineOptionMappings[configKey], configPropertyValue); } else if ((0, types_1.isMap)(configPropertyValue)) { return new FlywayCommandLineMapOption(commandLineOptionMappings[configKey], configPropertyValue // TODO - fix explicit any ); } else { return new FlywayCommandLineStandardOption(commandLineOptionMappings[configKey], `${configPropertyValue}`); } } static isDefined(arg) { return arg != undefined; } } const commandLineOptionMap = { url: "url", user: "user", password: "password", defaultSchema: "defaultSchema", migrationLocations: "locations", driver: "driver", connectRetries: "connectRetries", connectRetriesInterval: "connectRetriesInterval", initSql: "initSql", callbacks: "callbacks", configFileEncoding: "configFileEncoding", configFiles: "configFiles", migrationEncoding: "encoding", groupPendingMigrations: "group", installedBy: "installedBy", jarDirs: "jarDirs", failOnMissingMigrationLocations: "failOnMissingLocations", lockRetryCount: "lockRetryCount", mixed: "mixed", applyNewMigrationsOutOfOrder: "outOfOrder", skipDefaultCallbacks: "skipDefaultCallbacks", skipDefaultResolvers: "skipDefaultResolvers", schemaHistoryTable: "table", schemaHistoryTableSpace: "tableSpace", target: "target", validateMigrationNaming: "validateMigrationNaming", validateOnMigrate: "validateOnMigrate", workingDirectory: "workingDirectory", createSchemas: "createSchemas", schemas: "schemas", baselineDescription: "baselineDescription", baselineOnMigrate: "baselineOnMigrate", baselineVersion: "baselineVersion", cleanDisabled: "cleanDisabled", cleanOnValidationError: "cleanOnValidationError", ignoreMigrationPatterns: "ignoreMigrationPatterns", repeatableSqlMigrationPrefix: "repeatableSqlMigrationPrefix", resolvers: "resolvers", sqlMigrationPrefix: "sqlMigrationPrefix", sqlMigrationSeparator: "sqlMigrationSeparator", sqlMigrationSuffixes: "sqlMigrationSuffixes", placeHolderReplacement: "placeHolderReplacement", placeHolderPrefix: "placeHolderPrefix", placeHolderSuffix: "placeHolderSuffix", placeHolders: "placeHolders", placeHolderSeparator: "placeHolderSeparator", scriptPlaceHolderPrefix: "scriptPlaceHolderPrefix", scriptPlaceHolderSuffix: "scriptPlaceHolderSuffix", edition: "edition", postgresqlTransactionLock: "postgresqlTransactionLock" }; //# sourceMappingURL=flyway-command-line-options.js.map