UNPKG

graphile-migrate

Version:

Opinionated SQL-powered migration tool for PostgreSQL

66 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const actions_1 = require("../actions"); const migration_1 = require("../migration"); const pg_1 = require("../pg"); const pgReal_1 = require("../pgReal"); const settings_1 = require("../settings"); const _common_1 = require("./_common"); async function _migrate(parsedSettings, shadow = false, forceActions = false) { const connectionString = shadow ? parsedSettings.shadowConnectionString : parsedSettings.connectionString; if (!connectionString) { throw new Error("Could not determine connection string"); } const logSuffix = shadow ? "[shadow]" : ""; await pg_1.withClient(connectionString, parsedSettings, async (pgClient, context) => { await pgReal_1.withAdvisoryLock(pgClient, async () => { const lastMigration = await migration_1.getLastMigration(pgClient, parsedSettings); const remainingMigrations = await migration_1.getMigrationsAfter(parsedSettings, lastMigration); const shouldExecuteActions = remainingMigrations.length > 0 || forceActions; if (shouldExecuteActions) { await actions_1.executeActions(parsedSettings, shadow, parsedSettings.beforeAllMigrations); } // Run migrations in series for (const migration of remainingMigrations) { await migration_1.runCommittedMigration(pgClient, parsedSettings, context, migration, logSuffix); } if (shouldExecuteActions) { await actions_1.executeActions(parsedSettings, shadow, parsedSettings.afterAllMigrations); } parsedSettings.logger.info(`graphile-migrate${logSuffix}: ${remainingMigrations.length > 0 ? `${remainingMigrations.length} committed migrations executed` : lastMigration ? "Already up to date" : `Up to date — no committed migrations to run`}`); }); }); } exports._migrate = _migrate; async function migrate(settings, shadow = false, forceActions = false) { const parsedSettings = await settings_1.parseSettings(settings, shadow); return _migrate(parsedSettings, shadow, forceActions); } exports.migrate = migrate; exports.migrateCommand = { command: "migrate", aliases: [], describe: "Runs any un-executed committed migrations. Does NOT run the current migration. For use in production and development.", builder: { shadow: { type: "boolean", default: false, description: "Apply migrations to the shadow DB (for development).", }, forceActions: { type: "boolean", default: false, description: "Run beforeAllMigrations and afterAllMigrations actions even if no migration was necessary.", }, }, handler: async (argv) => { await migrate(await _common_1.getSettings({ configFile: argv.config }), argv.shadow, argv.forceActions); }, }; //# sourceMappingURL=migrate.js.map