payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
68 lines (67 loc) • 6.96 kB
JavaScript
/* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "migrate", {
enumerable: true,
get: function() {
return migrate;
}
});
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 migrate() {
const { payload } = this;
const migrationFiles = await (0, _readMigrationFiles.readMigrationFiles)({
payload
});
const { existingMigrations, latestBatch } = await (0, _getMigrations.getMigrations)({
payload
});
const newBatch = latestBatch + 1;
// Execute 'up' function for each migration sequentially
for (const migration of migrationFiles){
const existingMigration = existingMigrations.find((existing)=>existing.name === migration.name);
// Run migration if not found in database
if (existingMigration) {
continue; // eslint-disable-line no-continue
}
const start = Date.now();
const req = {
payload
};
payload.logger.info({
msg: `Migrating: ${migration.name}`
});
try {
await (0, _initTransaction.initTransaction)(req);
await migration.up({
payload,
req
});
payload.logger.info({
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
});
await payload.create({
collection: 'payload-migrations',
data: {
name: migration.name,
batch: newBatch
},
req
});
await (0, _commitTransaction.commitTransaction)(req);
} catch (err) {
await (0, _killTransaction.killTransaction)(req);
payload.logger.error({
err,
msg: `Error running migration ${migration.name}`
});
throw err;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9taWdyYXRpb25zL21pZ3JhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi8uLi9leHByZXNzL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCYXNlRGF0YWJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vdHlwZXMnXG5cbmltcG9ydCB7IGNvbW1pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbW1pdFRyYW5zYWN0aW9uJ1xuaW1wb3J0IHsgaW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2luaXRUcmFuc2FjdGlvbidcbmltcG9ydCB7IGtpbGxUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9raWxsVHJhbnNhY3Rpb24nXG5pbXBvcnQgeyBnZXRNaWdyYXRpb25zIH0gZnJvbSAnLi9nZXRNaWdyYXRpb25zJ1xuaW1wb3J0IHsgcmVhZE1pZ3JhdGlvbkZpbGVzIH0gZnJvbSAnLi9yZWFkTWlncmF0aW9uRmlsZXMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlKHRoaXM6IEJhc2VEYXRhYmFzZUFkYXB0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuICBjb25zdCB7IGV4aXN0aW5nTWlncmF0aW9ucywgbGF0ZXN0QmF0Y2ggfSA9IGF3YWl0IGdldE1pZ3JhdGlvbnMoeyBwYXlsb2FkIH0pXG5cbiAgY29uc3QgbmV3QmF0Y2ggPSBsYXRlc3RCYXRjaCArIDFcblxuICAvLyBFeGVjdXRlICd1cCcgZnVuY3Rpb24gZm9yIGVhY2ggbWlncmF0aW9uIHNlcXVlbnRpYWxseVxuICBmb3IgKGNvbnN0IG1pZ3JhdGlvbiBvZiBtaWdyYXRpb25GaWxlcykge1xuICAgIGNvbnN0IGV4aXN0aW5nTWlncmF0aW9uID0gZXhpc3RpbmdNaWdyYXRpb25zLmZpbmQoXG4gICAgICAoZXhpc3RpbmcpID0+IGV4aXN0aW5nLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lLFxuICAgIClcblxuICAgIC8vIFJ1biBtaWdyYXRpb24gaWYgbm90IGZvdW5kIGluIGRhdGFiYXNlXG4gICAgaWYgKGV4aXN0aW5nTWlncmF0aW9uKSB7XG4gICAgICBjb250aW51ZSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgY29uc3QgcmVxID0geyBwYXlsb2FkIH0gYXMgUGF5bG9hZFJlcXVlc3RcblxuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmc6ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGluaXRUcmFuc2FjdGlvbihyZXEpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkLCByZXEgfSlcbiAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRlZDogICR7bWlncmF0aW9uLm5hbWV9ICgke0RhdGUubm93KCkgLSBzdGFydH1tcylgIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgYmF0Y2g6IG5ld0JhdGNoLFxuICAgICAgICB9LFxuICAgICAgICByZXEsXG4gICAgICB9KVxuICAgICAgYXdhaXQgY29tbWl0VHJhbnNhY3Rpb24ocmVxKVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICAgIHBheWxvYWQubG9nZ2VyLmVycm9yKHsgZXJyLCBtc2c6IGBFcnJvciBydW5uaW5nIG1pZ3JhdGlvbiAke21pZ3JhdGlvbi5uYW1lfWAgfSlcbiAgICAgIHRocm93IGVyclxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGUiLCJwYXlsb2FkIiwibWlncmF0aW9uRmlsZXMiLCJyZWFkTWlncmF0aW9uRmlsZXMiLCJleGlzdGluZ01pZ3JhdGlvbnMiLCJsYXRlc3RCYXRjaCIsImdldE1pZ3JhdGlvbnMiLCJuZXdCYXRjaCIsIm1pZ3JhdGlvbiIsImV4aXN0aW5nTWlncmF0aW9uIiwiZmluZCIsImV4aXN0aW5nIiwibmFtZSIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInJlcSIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJpbml0VHJhbnNhY3Rpb24iLCJ1cCIsImNyZWF0ZSIsImNvbGxlY3Rpb24iLCJkYXRhIiwiYmF0Y2giLCJjb21taXRUcmFuc2FjdGlvbiIsImVyciIsImtpbGxUcmFuc2FjdGlvbiIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7Ozs7K0JBVW5DQTs7O2VBQUFBOzs7bUNBTlk7aUNBQ0Y7aUNBQ0E7K0JBQ0Y7b0NBQ0s7QUFFNUIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3hCLE1BQU1DLGlCQUFpQixNQUFNQyxJQUFBQSxzQ0FBa0IsRUFBQztRQUFFRjtJQUFRO0lBQzFELE1BQU0sRUFBRUcsa0JBQWtCLEVBQUVDLFdBQVcsRUFBRSxHQUFHLE1BQU1DLElBQUFBLDRCQUFhLEVBQUM7UUFBRUw7SUFBUTtJQUUxRSxNQUFNTSxXQUFXRixjQUFjO0lBRS9CLHdEQUF3RDtJQUN4RCxLQUFLLE1BQU1HLGFBQWFOLGVBQWdCO1FBQ3RDLE1BQU1PLG9CQUFvQkwsbUJBQW1CTSxJQUFJLENBQy9DLENBQUNDLFdBQWFBLFNBQVNDLElBQUksS0FBS0osVUFBVUksSUFBSTtRQUdoRCx5Q0FBeUM7UUFDekMsSUFBSUgsbUJBQW1CO1lBQ3JCLFVBQVMsa0NBQWtDO1FBQzdDO1FBRUEsTUFBTUksUUFBUUMsS0FBS0MsR0FBRztRQUN0QixNQUFNQyxNQUFNO1lBQUVmO1FBQVE7UUFFdEJBLFFBQVFnQixNQUFNLENBQUNDLElBQUksQ0FBQztZQUFFQyxLQUFLLENBQUMsV0FBVyxFQUFFWCxVQUFVSSxJQUFJLENBQUMsQ0FBQztRQUFDO1FBRTFELElBQUk7WUFDRixNQUFNUSxJQUFBQSxnQ0FBZSxFQUFDSjtZQUN0QixNQUFNUixVQUFVYSxFQUFFLENBQUM7Z0JBQUVwQjtnQkFBU2U7WUFBSTtZQUNsQ2YsUUFBUWdCLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUFFQyxLQUFLLENBQUMsV0FBVyxFQUFFWCxVQUFVSSxJQUFJLENBQUMsRUFBRSxFQUFFRSxLQUFLQyxHQUFHLEtBQUtGLE1BQU0sR0FBRyxDQUFDO1lBQUM7WUFDcEYsTUFBTVosUUFBUXFCLE1BQU0sQ0FBQztnQkFDbkJDLFlBQVk7Z0JBQ1pDLE1BQU07b0JBQ0paLE1BQU1KLFVBQVVJLElBQUk7b0JBQ3BCYSxPQUFPbEI7Z0JBQ1Q7Z0JBQ0FTO1lBQ0Y7WUFDQSxNQUFNVSxJQUFBQSxvQ0FBaUIsRUFBQ1Y7UUFDMUIsRUFBRSxPQUFPVyxLQUFjO1lBQ3JCLE1BQU1DLElBQUFBLGdDQUFlLEVBQUNaO1lBQ3RCZixRQUFRZ0IsTUFBTSxDQUFDWSxLQUFLLENBQUM7Z0JBQUVGO2dCQUFLUixLQUFLLENBQUMsd0JBQXdCLEVBQUVYLFVBQVVJLElBQUksQ0FBQyxDQUFDO1lBQUM7WUFDN0UsTUFBTWU7UUFDUjtJQUNGO0FBQ0YifQ==