payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
117 lines (116 loc) • 11.9 kB
JavaScript
/* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "migrateRefresh", {
enumerable: true,
get: function() {
return migrateRefresh;
}
});
const _commitTransaction = require("../../utilities/commitTransaction");
const _initTransaction = require("../../utilities/initTransaction");
const _killTransaction = require("../../utilities/killTransaction");
const _getMigrations = require("./getMigrations");
const _readMigrationFiles = require("./readMigrationFiles");
async function migrateRefresh() {
const { payload } = this;
const migrationFiles = await (0, _readMigrationFiles.readMigrationFiles)({
payload
});
const { existingMigrations, latestBatch } = await (0, _getMigrations.getMigrations)({
payload
});
if (!existingMigrations?.length) {
payload.logger.info({
msg: 'No migrations to rollback.'
});
return;
}
payload.logger.info({
msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
});
const req = {
payload
};
// Reverse order of migrations to rollback
existingMigrations.reverse();
for (const migration of existingMigrations){
try {
const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
if (!migrationFile) {
throw new Error(`Migration ${migration.name} not found locally.`);
}
payload.logger.info({
msg: `Migrating down: ${migration.name}`
});
const start = Date.now();
await (0, _initTransaction.initTransaction)(req);
await migrationFile.down({
payload,
req
});
payload.logger.info({
msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`
});
await payload.delete({
collection: 'payload-migrations',
req,
where: {
name: {
equals: migration.name
}
}
});
} catch (err) {
await (0, _killTransaction.killTransaction)(req);
let msg = `Error running migration ${migration.name}. Rolling back.`;
if (err instanceof Error) {
msg += ` ${err.message}`;
}
payload.logger.error({
err,
msg
});
process.exit(1);
}
}
// Run all migrate up
for (const migration of migrationFiles){
payload.logger.info({
msg: `Migrating: ${migration.name}`
});
try {
const start = Date.now();
await (0, _initTransaction.initTransaction)(req);
await migration.up({
payload,
req
});
await payload.create({
collection: 'payload-migrations',
data: {
name: migration.name,
executed: true
},
req
});
await (0, _commitTransaction.commitTransaction)(req);
payload.logger.info({
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
});
} catch (err) {
await (0, _killTransaction.killTransaction)(req);
let msg = `Error running migration ${migration.name}. Rolling back.`;
if (err instanceof Error) {
msg += ` ${err.message}`;
}
payload.logger.error({
err,
msg
});
process.exit(1);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGVSZWZyZXNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgQmFzZURhdGFiYXNlQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBjb21taXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb21taXRUcmFuc2FjdGlvbidcbmltcG9ydCB7IGluaXRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9pbml0VHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBraWxsVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMva2lsbFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgZ2V0TWlncmF0aW9ucyB9IGZyb20gJy4vZ2V0TWlncmF0aW9ucydcbmltcG9ydCB7IHJlYWRNaWdyYXRpb25GaWxlcyB9IGZyb20gJy4vcmVhZE1pZ3JhdGlvbkZpbGVzJ1xuXG4vKipcbiAqIFJ1biBhbGwgbWlncmF0aW9uIGRvd24gZnVuY3Rpb25zIGJlZm9yZSBydW5uaW5nIHVwXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlUmVmcmVzaCh0aGlzOiBCYXNlRGF0YWJhc2VBZGFwdGVyKSB7XG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gdGhpc1xuICBjb25zdCBtaWdyYXRpb25GaWxlcyA9IGF3YWl0IHJlYWRNaWdyYXRpb25GaWxlcyh7IHBheWxvYWQgfSlcblxuICBjb25zdCB7IGV4aXN0aW5nTWlncmF0aW9ucywgbGF0ZXN0QmF0Y2ggfSA9IGF3YWl0IGdldE1pZ3JhdGlvbnMoe1xuICAgIHBheWxvYWQsXG4gIH0pXG5cbiAgaWYgKCFleGlzdGluZ01pZ3JhdGlvbnM/Lmxlbmd0aCkge1xuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6ICdObyBtaWdyYXRpb25zIHRvIHJvbGxiYWNrLicgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgIG1zZzogYFJvbGxpbmcgYmFjayBiYXRjaCAke2xhdGVzdEJhdGNofSBjb25zaXN0aW5nIG9mICR7ZXhpc3RpbmdNaWdyYXRpb25zLmxlbmd0aH0gbWlncmF0aW9uKHMpLmAsXG4gIH0pXG5cbiAgY29uc3QgcmVxID0geyBwYXlsb2FkIH0gYXMgUGF5bG9hZFJlcXVlc3RcblxuICAvLyBSZXZlcnNlIG9yZGVyIG9mIG1pZ3JhdGlvbnMgdG8gcm9sbGJhY2tcbiAgZXhpc3RpbmdNaWdyYXRpb25zLnJldmVyc2UoKVxuXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIGV4aXN0aW5nTWlncmF0aW9ucykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBtaWdyYXRpb25GaWxlID0gbWlncmF0aW9uRmlsZXMuZmluZCgobSkgPT4gbS5uYW1lID09PSBtaWdyYXRpb24ubmFtZSlcbiAgICAgIGlmICghbWlncmF0aW9uRmlsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pZ3JhdGlvbiAke21pZ3JhdGlvbi5uYW1lfSBub3QgZm91bmQgbG9jYWxseS5gKVxuICAgICAgfVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0aW5nIGRvd246ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICBhd2FpdCBpbml0VHJhbnNhY3Rpb24ocmVxKVxuICAgICAgYXdhaXQgbWlncmF0aW9uRmlsZS5kb3duKHsgcGF5bG9hZCwgcmVxIH0pXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHtcbiAgICAgICAgbXNnOiBgTWlncmF0ZWQgZG93bjogICR7bWlncmF0aW9uLm5hbWV9ICgke0RhdGUubm93KCkgLSBzdGFydH1tcylgLFxuICAgICAgfSlcbiAgICAgIGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgIHJlcSxcbiAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICBuYW1lOiB7XG4gICAgICAgICAgICBlcXVhbHM6IG1pZ3JhdGlvbi5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICAgIGxldCBtc2cgPSBgRXJyb3IgcnVubmluZyBtaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX0uIFJvbGxpbmcgYmFjay5gXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgbXNnICs9IGAgJHtlcnIubWVzc2FnZX1gXG4gICAgICB9XG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnLFxuICAgICAgfSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biBhbGwgbWlncmF0ZSB1cFxuICBmb3IgKGNvbnN0IG1pZ3JhdGlvbiBvZiBtaWdyYXRpb25GaWxlcykge1xuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmc6ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgIGF3YWl0IGluaXRUcmFuc2FjdGlvbihyZXEpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkLCByZXEgfSlcbiAgICAgIGF3YWl0IHBheWxvYWQuY3JlYXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBtaWdyYXRpb24ubmFtZSxcbiAgICAgICAgICBleGVjdXRlZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVxLFxuICAgICAgfSlcbiAgICAgIGF3YWl0IGNvbW1pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGVkOiAgJHttaWdyYXRpb24ubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAgfSlcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGF3YWl0IGtpbGxUcmFuc2FjdGlvbihyZXEpXG4gICAgICBsZXQgbXNnID0gYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2suYFxuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIG1zZyArPSBgICR7ZXJyLm1lc3NhZ2V9YFxuICAgICAgfVxuICAgICAgcGF5bG9hZC5sb2dnZXIuZXJyb3Ioe1xuICAgICAgICBlcnIsXG4gICAgICAgIG1zZyxcbiAgICAgIH0pXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJtaWdyYXRlUmVmcmVzaCIsInBheWxvYWQiLCJtaWdyYXRpb25GaWxlcyIsInJlYWRNaWdyYXRpb25GaWxlcyIsImV4aXN0aW5nTWlncmF0aW9ucyIsImxhdGVzdEJhdGNoIiwiZ2V0TWlncmF0aW9ucyIsImxlbmd0aCIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJyZXEiLCJyZXZlcnNlIiwibWlncmF0aW9uIiwibWlncmF0aW9uRmlsZSIsImZpbmQiLCJtIiwibmFtZSIsIkVycm9yIiwic3RhcnQiLCJEYXRlIiwibm93IiwiaW5pdFRyYW5zYWN0aW9uIiwiZG93biIsImRlbGV0ZSIsImNvbGxlY3Rpb24iLCJ3aGVyZSIsImVxdWFscyIsImVyciIsImtpbGxUcmFuc2FjdGlvbiIsIm1lc3NhZ2UiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwidXAiLCJjcmVhdGUiLCJkYXRhIiwiZXhlY3V0ZWQiLCJjb21taXRUcmFuc2FjdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEOzs7OytCQWFuQ0E7OztlQUFBQTs7O21DQVRZO2lDQUNGO2lDQUNBOytCQUNGO29DQUNLO0FBSzVCLGVBQWVBO0lBQ3BCLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtJQUN4QixNQUFNQyxpQkFBaUIsTUFBTUMsSUFBQUEsc0NBQWtCLEVBQUM7UUFBRUY7SUFBUTtJQUUxRCxNQUFNLEVBQUVHLGtCQUFrQixFQUFFQyxXQUFXLEVBQUUsR0FBRyxNQUFNQyxJQUFBQSw0QkFBYSxFQUFDO1FBQzlETDtJQUNGO0lBRUEsSUFBSSxDQUFDRyxvQkFBb0JHLFFBQVE7UUFDL0JOLFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQUVDLEtBQUs7UUFBNkI7UUFDeEQ7SUFDRjtJQUVBVCxRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztRQUNsQkMsS0FBSyxDQUFDLG1CQUFtQixFQUFFTCxZQUFZLGVBQWUsRUFBRUQsbUJBQW1CRyxNQUFNLENBQUMsY0FBYyxDQUFDO0lBQ25HO0lBRUEsTUFBTUksTUFBTTtRQUFFVjtJQUFRO0lBRXRCLDBDQUEwQztJQUMxQ0csbUJBQW1CUSxPQUFPO0lBRTFCLEtBQUssTUFBTUMsYUFBYVQsbUJBQW9CO1FBQzFDLElBQUk7WUFDRixNQUFNVSxnQkFBZ0JaLGVBQWVhLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtKLFVBQVVJLElBQUk7WUFDMUUsSUFBSSxDQUFDSCxlQUFlO2dCQUNsQixNQUFNLElBQUlJLE1BQU0sQ0FBQyxVQUFVLEVBQUVMLFVBQVVJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRTtZQUVBaEIsUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQUVDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLENBQUM7WUFBQztZQUMvRCxNQUFNRSxRQUFRQyxLQUFLQyxHQUFHO1lBQ3RCLE1BQU1DLElBQUFBLGdDQUFlLEVBQUNYO1lBQ3RCLE1BQU1HLGNBQWNTLElBQUksQ0FBQztnQkFBRXRCO2dCQUFTVTtZQUFJO1lBQ3hDVixRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztnQkFDbEJDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLEVBQUUsRUFBRUcsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUNwRTtZQUNBLE1BQU1sQixRQUFRdUIsTUFBTSxDQUFDO2dCQUNuQkMsWUFBWTtnQkFDWmQ7Z0JBQ0FlLE9BQU87b0JBQ0xULE1BQU07d0JBQ0pVLFFBQVFkLFVBQVVJLElBQUk7b0JBQ3hCO2dCQUNGO1lBQ0Y7UUFDRixFQUFFLE9BQU9XLEtBQWM7WUFDckIsTUFBTUMsSUFBQUEsZ0NBQWUsRUFBQ2xCO1lBQ3RCLElBQUlELE1BQU0sQ0FBQyx3QkFBd0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNwRSxJQUFJVyxlQUFlVixPQUFPO2dCQUN4QlIsT0FBTyxDQUFDLENBQUMsRUFBRWtCLElBQUlFLE9BQU8sQ0FBQyxDQUFDO1lBQzFCO1lBQ0E3QixRQUFRTyxNQUFNLENBQUN1QixLQUFLLENBQUM7Z0JBQ25CSDtnQkFDQWxCO1lBQ0Y7WUFDQXNCLFFBQVFDLElBQUksQ0FBQztRQUNmO0lBQ0Y7SUFFQSxxQkFBcUI7SUFDckIsS0FBSyxNQUFNcEIsYUFBYVgsZUFBZ0I7UUFDdENELFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQUVDLEtBQUssQ0FBQyxXQUFXLEVBQUVHLFVBQVVJLElBQUksQ0FBQyxDQUFDO1FBQUM7UUFDMUQsSUFBSTtZQUNGLE1BQU1FLFFBQVFDLEtBQUtDLEdBQUc7WUFDdEIsTUFBTUMsSUFBQUEsZ0NBQWUsRUFBQ1g7WUFDdEIsTUFBTUUsVUFBVXFCLEVBQUUsQ0FBQztnQkFBRWpDO2dCQUFTVTtZQUFJO1lBQ2xDLE1BQU1WLFFBQVFrQyxNQUFNLENBQUM7Z0JBQ25CVixZQUFZO2dCQUNaVyxNQUFNO29CQUNKbkIsTUFBTUosVUFBVUksSUFBSTtvQkFDcEJvQixVQUFVO2dCQUNaO2dCQUNBMUI7WUFDRjtZQUNBLE1BQU0yQixJQUFBQSxvQ0FBaUIsRUFBQzNCO1lBRXhCVixRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztnQkFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRUcsVUFBVUksSUFBSSxDQUFDLEVBQUUsRUFBRUcsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUFDO1FBQ3RGLEVBQUUsT0FBT1MsS0FBYztZQUNyQixNQUFNQyxJQUFBQSxnQ0FBZSxFQUFDbEI7WUFDdEIsSUFBSUQsTUFBTSxDQUFDLHdCQUF3QixFQUFFRyxVQUFVSSxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ3BFLElBQUlXLGVBQWVWLE9BQU87Z0JBQ3hCUixPQUFPLENBQUMsQ0FBQyxFQUFFa0IsSUFBSUUsT0FBTyxDQUFDLENBQUM7WUFDMUI7WUFDQTdCLFFBQVFPLE1BQU0sQ0FBQ3VCLEtBQUssQ0FBQztnQkFDbkJIO2dCQUNBbEI7WUFDRjtZQUNBc0IsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtBQUNGIn0=