@payloadcms/db-postgres 0.1.0-beta.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +32 -0
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +28 -19
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +29 -19
- package/dist/createVersion.js +2 -2
- package/dist/extendViteConfig.d.ts +4 -0
- package/dist/extendViteConfig.d.ts.map +1 -0
- package/dist/extendViteConfig.js +38 -0
- package/dist/extendWebpackConfig.d.ts +4 -0
- package/dist/extendWebpackConfig.d.ts.map +1 -0
- package/dist/extendWebpackConfig.js +45 -0
- package/dist/find/buildFindManyArgs.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +2 -4
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +63 -39
- package/dist/migrateDown.d.ts +3 -0
- package/dist/migrateDown.d.ts.map +1 -0
- package/dist/migrateDown.js +71 -0
- package/dist/migrateFresh.d.ts +6 -0
- package/dist/migrateFresh.d.ts.map +1 -0
- package/dist/migrateFresh.js +81 -0
- package/dist/migrateRefresh.d.ts +6 -0
- package/dist/migrateRefresh.d.ts.map +1 -0
- package/dist/migrateRefresh.js +109 -0
- package/dist/migrateReset.d.ts +6 -0
- package/dist/migrateReset.d.ts.map +1 -0
- package/dist/migrateReset.js +89 -0
- package/dist/queries/getTableColumnFromPath.js +2 -2
- package/dist/schema/build.d.ts +2 -1
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +14 -11
- package/dist/schema/createIndex.d.ts +1 -1
- package/dist/schema/createIndex.d.ts.map +1 -1
- package/dist/schema/createIndex.js +12 -3
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +19 -14
- package/dist/transform/read/index.js +4 -4
- package/dist/types.d.ts +7 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +51 -5
- package/dist/upsertRow/index.js +2 -2
- package/dist/utilities/createMigrationTable.d.ts.map +1 -1
- package/dist/utilities/createMigrationTable.js +1 -2
- package/dist/utilities/parseError.d.ts +5 -0
- package/dist/utilities/parseError.d.ts.map +1 -0
- package/dist/utilities/parseError.js +24 -0
- package/mock.js +1 -0
- package/package.json +5 -4
- package/src/index.ts +18 -5
- package/dist/mock.js +0 -13
- package/dist/webpack.d.ts +0 -3
- package/dist/webpack.d.ts.map +0 -1
- package/dist/webpack.js +0 -32
package/dist/migrate.js
CHANGED
@@ -10,71 +10,95 @@ Object.defineProperty(exports, "migrate", {
|
|
10
10
|
});
|
11
11
|
const _utils = require("drizzle-kit/utils");
|
12
12
|
const _database = require("payload/database");
|
13
|
-
const
|
13
|
+
const _prompts = /*#__PURE__*/ _interop_require_default(require("prompts"));
|
14
14
|
const _createMigrationTable = require("./utilities/createMigrationTable");
|
15
15
|
const _migrationTableExists = require("./utilities/migrationTableExists");
|
16
|
+
const _parseError = require("./utilities/parseError");
|
17
|
+
function _interop_require_default(obj) {
|
18
|
+
return obj && obj.__esModule ? obj : {
|
19
|
+
default: obj
|
20
|
+
};
|
21
|
+
}
|
16
22
|
async function migrate() {
|
17
23
|
const { payload } = this;
|
18
24
|
const migrationFiles = await (0, _database.readMigrationFiles)({
|
19
25
|
payload
|
20
26
|
});
|
27
|
+
if (!migrationFiles.length) {
|
28
|
+
payload.logger.info({
|
29
|
+
msg: 'No migrations to run.'
|
30
|
+
});
|
31
|
+
return;
|
32
|
+
}
|
21
33
|
let latestBatch = 0;
|
22
|
-
let
|
34
|
+
let migrationsInDB = [];
|
23
35
|
const hasMigrationTable = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
|
24
36
|
if (hasMigrationTable) {
|
25
|
-
({ docs:
|
37
|
+
({ docs: migrationsInDB } = await payload.find({
|
26
38
|
collection: 'payload-migrations',
|
27
39
|
limit: 0,
|
28
40
|
sort: '-name'
|
29
41
|
}));
|
30
|
-
if (
|
31
|
-
latestBatch = Number(
|
42
|
+
if (Number(migrationsInDB?.[0]?.batch) > 0) {
|
43
|
+
latestBatch = Number(migrationsInDB[0]?.batch);
|
32
44
|
}
|
33
45
|
} else {
|
34
46
|
await (0, _createMigrationTable.createMigrationTable)(this.drizzle);
|
35
47
|
}
|
48
|
+
if (migrationsInDB.find((m)=>m.batch === -1)) {
|
49
|
+
const { confirm: runMigrations } = await (0, _prompts.default)({
|
50
|
+
name: 'confirm',
|
51
|
+
initial: false,
|
52
|
+
message: "It looks like you've run Payload in dev mode, meaning you've dynamically pushed changes to your database.\n\n" + "If you'd like to run migrations, data loss will occur. Would you like to proceed?",
|
53
|
+
type: 'confirm'
|
54
|
+
}, {
|
55
|
+
onCancel: ()=>{
|
56
|
+
process.exit(0);
|
57
|
+
}
|
58
|
+
});
|
59
|
+
if (!runMigrations) {
|
60
|
+
process.exit(0);
|
61
|
+
}
|
62
|
+
}
|
36
63
|
const newBatch = latestBatch + 1;
|
37
64
|
// Execute 'up' function for each migration sequentially
|
38
65
|
for (const migration of migrationFiles){
|
39
|
-
const
|
40
|
-
//
|
41
|
-
if (
|
66
|
+
const alreadyRan = migrationsInDB.find((existing)=>existing.name === migration.name);
|
67
|
+
// If already ran, skip
|
68
|
+
if (alreadyRan) {
|
42
69
|
continue; // eslint-disable-line no-continue
|
43
70
|
}
|
44
|
-
|
71
|
+
await runMigrationFile(payload, migration, newBatch);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
async function runMigrationFile(payload, migration, batch) {
|
75
|
+
const start = Date.now();
|
76
|
+
payload.logger.info({
|
77
|
+
msg: `Migrating: ${migration.name}`
|
78
|
+
});
|
79
|
+
const pgAdapter = payload.db;
|
80
|
+
const drizzleJSON = (0, _utils.generateDrizzleJson)(pgAdapter.schema);
|
81
|
+
try {
|
82
|
+
await migration.up({
|
83
|
+
payload
|
84
|
+
});
|
45
85
|
payload.logger.info({
|
46
|
-
msg: `
|
86
|
+
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
|
47
87
|
});
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
payload.logger.info({
|
55
|
-
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
|
56
|
-
});
|
57
|
-
await payload.create({
|
58
|
-
collection: 'payload-migrations',
|
59
|
-
data: {
|
60
|
-
name: migration.name,
|
61
|
-
batch: newBatch,
|
62
|
-
schema: drizzleJSON
|
63
|
-
}
|
64
|
-
});
|
65
|
-
} catch (err) {
|
66
|
-
let msg = `Error running migration ${migration.name}`;
|
67
|
-
if (err instanceof _pg.DatabaseError) {
|
68
|
-
msg += `: ${err.message}`;
|
69
|
-
if (err.hint) msg += `. ${err.hint}`;
|
88
|
+
await payload.create({
|
89
|
+
collection: 'payload-migrations',
|
90
|
+
data: {
|
91
|
+
name: migration.name,
|
92
|
+
batch,
|
93
|
+
schema: drizzleJSON
|
70
94
|
}
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
}
|
95
|
+
});
|
96
|
+
} catch (err) {
|
97
|
+
payload.logger.error({
|
98
|
+
err,
|
99
|
+
msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}`)
|
100
|
+
});
|
77
101
|
}
|
78
102
|
}
|
79
103
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4LCBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQgdHlwZSB7IFBheWxvYWQgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHR5cGUgeyBNaWdyYXRpb24gfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgeyBnZW5lcmF0ZURyaXp6bGVKc29uIH0gZnJvbSAnZHJpenpsZS1raXQvdXRpbHMnXG5pbXBvcnQgeyByZWFkTWlncmF0aW9uRmlsZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgRGF0YWJhc2VFcnJvciB9IGZyb20gJ3BnJ1xuaW1wb3J0IHByb21wdHMgZnJvbSAncHJvbXB0cydcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBjcmVhdGVNaWdyYXRpb25UYWJsZSB9IGZyb20gJy4vdXRpbGl0aWVzL2NyZWF0ZU1pZ3JhdGlvblRhYmxlJ1xuaW1wb3J0IHsgbWlncmF0aW9uVGFibGVFeGlzdHMgfSBmcm9tICcuL3V0aWxpdGllcy9taWdyYXRpb25UYWJsZUV4aXN0cydcbmltcG9ydCB7IHBhcnNlRXJyb3IgfSBmcm9tICcuL3V0aWxpdGllcy9wYXJzZUVycm9yJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZSh0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuXG4gIGlmICghbWlncmF0aW9uRmlsZXMubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcnVuLicgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxldCBsYXRlc3RCYXRjaCA9IDBcbiAgbGV0IG1pZ3JhdGlvbnNJbkRCID0gW11cblxuICBjb25zdCBoYXNNaWdyYXRpb25UYWJsZSA9IGF3YWl0IG1pZ3JhdGlvblRhYmxlRXhpc3RzKHRoaXMuZHJpenpsZSlcblxuICBpZiAoaGFzTWlncmF0aW9uVGFibGUpIHtcbiAgICA7KHsgZG9jczogbWlncmF0aW9uc0luREIgfSA9IGF3YWl0IHBheWxvYWQuZmluZCh7XG4gICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgIGxpbWl0OiAwLFxuICAgICAgc29ydDogJy1uYW1lJyxcbiAgICB9KSlcbiAgICBpZiAoTnVtYmVyKG1pZ3JhdGlvbnNJbkRCPy5bMF0/LmJhdGNoKSA+IDApIHtcbiAgICAgIGxhdGVzdEJhdGNoID0gTnVtYmVyKG1pZ3JhdGlvbnNJbkRCWzBdPy5iYXRjaClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY3JlYXRlTWlncmF0aW9uVGFibGUodGhpcy5kcml6emxlKVxuICB9XG5cbiAgaWYgKG1pZ3JhdGlvbnNJbkRCLmZpbmQoKG0pID0+IG0uYmF0Y2ggPT09IC0xKSkge1xuICAgIGNvbnN0IHsgY29uZmlybTogcnVuTWlncmF0aW9ucyB9ID0gYXdhaXQgcHJvbXB0cyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICBpbml0aWFsOiBmYWxzZSxcbiAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICBcIkl0IGxvb2tzIGxpa2UgeW91J3ZlIHJ1biBQYXlsb2FkIGluIGRldiBtb2RlLCBtZWFuaW5nIHlvdSd2ZSBkeW5hbWljYWxseSBwdXNoZWQgY2hhbmdlcyB0byB5b3VyIGRhdGFiYXNlLlxcblxcblwiICtcbiAgICAgICAgICBcIklmIHlvdSdkIGxpa2UgdG8gcnVuIG1pZ3JhdGlvbnMsIGRhdGEgbG9zcyB3aWxsIG9jY3VyLiBXb3VsZCB5b3UgbGlrZSB0byBwcm9jZWVkP1wiLFxuICAgICAgICB0eXBlOiAnY29uZmlybScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvbkNhbmNlbDogKCkgPT4ge1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG5cbiAgICBpZiAoIXJ1bk1pZ3JhdGlvbnMpIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG5ld0JhdGNoID0gbGF0ZXN0QmF0Y2ggKyAxXG5cbiAgLy8gRXhlY3V0ZSAndXAnIGZ1bmN0aW9uIGZvciBlYWNoIG1pZ3JhdGlvbiBzZXF1ZW50aWFsbHlcbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgbWlncmF0aW9uRmlsZXMpIHtcbiAgICBjb25zdCBhbHJlYWR5UmFuID0gbWlncmF0aW9uc0luREIuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5nLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuXG4gICAgLy8gSWYgYWxyZWFkeSByYW4sIHNraXBcbiAgICBpZiAoYWxyZWFkeVJhbikge1xuICAgICAgY29udGludWUgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250aW51ZVxuICAgIH1cblxuICAgIGF3YWl0IHJ1bk1pZ3JhdGlvbkZpbGUocGF5bG9hZCwgbWlncmF0aW9uLCBuZXdCYXRjaClcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5NaWdyYXRpb25GaWxlKHBheWxvYWQ6IFBheWxvYWQsIG1pZ3JhdGlvbjogTWlncmF0aW9uLCBiYXRjaDogbnVtYmVyKSB7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmc6ICR7bWlncmF0aW9uLm5hbWV9YCB9KVxuXG4gIGNvbnN0IHBnQWRhcHRlciA9IHBheWxvYWQuZGJcbiAgY29uc3QgZHJpenpsZUpTT04gPSBnZW5lcmF0ZURyaXp6bGVKc29uKHBnQWRhcHRlci5zY2hlbWEpXG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGVkOiAgJHttaWdyYXRpb24ubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAgfSlcbiAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgIGJhdGNoLFxuICAgICAgICBzY2hlbWE6IGRyaXp6bGVKU09OLFxuICAgICAgfSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICBlcnIsXG4gICAgICBtc2c6IHBhcnNlRXJyb3IoZXJyLCBgRXJyb3IgcnVubmluZyBtaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX1gKSxcbiAgICB9KVxuICB9XG59XG4iXSwibmFtZXMiOlsibWlncmF0ZSIsInBheWxvYWQiLCJtaWdyYXRpb25GaWxlcyIsInJlYWRNaWdyYXRpb25GaWxlcyIsImxlbmd0aCIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJsYXRlc3RCYXRjaCIsIm1pZ3JhdGlvbnNJbkRCIiwiaGFzTWlncmF0aW9uVGFibGUiLCJtaWdyYXRpb25UYWJsZUV4aXN0cyIsImRyaXp6bGUiLCJkb2NzIiwiZmluZCIsImNvbGxlY3Rpb24iLCJsaW1pdCIsInNvcnQiLCJOdW1iZXIiLCJiYXRjaCIsImNyZWF0ZU1pZ3JhdGlvblRhYmxlIiwibSIsImNvbmZpcm0iLCJydW5NaWdyYXRpb25zIiwicHJvbXB0cyIsIm5hbWUiLCJpbml0aWFsIiwibWVzc2FnZSIsInR5cGUiLCJvbkNhbmNlbCIsInByb2Nlc3MiLCJleGl0IiwibmV3QmF0Y2giLCJtaWdyYXRpb24iLCJhbHJlYWR5UmFuIiwiZXhpc3RpbmciLCJydW5NaWdyYXRpb25GaWxlIiwic3RhcnQiLCJEYXRlIiwibm93IiwicGdBZGFwdGVyIiwiZGIiLCJkcml6emxlSlNPTiIsImdlbmVyYXRlRHJpenpsZUpzb24iLCJzY2hlbWEiLCJ1cCIsImNyZWF0ZSIsImRhdGEiLCJlcnIiLCJlcnJvciIsInBhcnNlRXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFlbkNBOzs7ZUFBQUE7Ozt1QkFYYzswQkFDRDtnRUFFZjtzQ0FJaUI7c0NBQ0E7NEJBQ1Y7Ozs7OztBQUVwQixlQUFlQTtJQUNwQixNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDeEIsTUFBTUMsaUJBQWlCLE1BQU1DLElBQUFBLDRCQUFrQixFQUFDO1FBQUVGO0lBQVE7SUFFMUQsSUFBSSxDQUFDQyxlQUFlRSxNQUFNLEVBQUU7UUFDMUJILFFBQVFJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1lBQUVDLEtBQUs7UUFBd0I7UUFDbkQ7SUFDRjtJQUVBLElBQUlDLGNBQWM7SUFDbEIsSUFBSUMsaUJBQWlCLEVBQUU7SUFFdkIsTUFBTUMsb0JBQW9CLE1BQU1DLElBQUFBLDBDQUFvQixFQUFDLElBQUksQ0FBQ0MsT0FBTztJQUVqRSxJQUFJRixtQkFBbUI7UUFDbkIsQ0FBQSxFQUFFRyxNQUFNSixjQUFjLEVBQUUsR0FBRyxNQUFNUixRQUFRYSxJQUFJLENBQUM7WUFDOUNDLFlBQVk7WUFDWkMsT0FBTztZQUNQQyxNQUFNO1FBQ1IsRUFBQztRQUNELElBQUlDLE9BQU9ULGdCQUFnQixDQUFDLEVBQUUsRUFBRVUsU0FBUyxHQUFHO1lBQzFDWCxjQUFjVSxPQUFPVCxjQUFjLENBQUMsRUFBRSxFQUFFVTtRQUMxQztJQUNGLE9BQU87UUFDTCxNQUFNQyxJQUFBQSwwQ0FBb0IsRUFBQyxJQUFJLENBQUNSLE9BQU87SUFDekM7SUFFQSxJQUFJSCxlQUFlSyxJQUFJLENBQUMsQ0FBQ08sSUFBTUEsRUFBRUYsS0FBSyxLQUFLLENBQUMsSUFBSTtRQUM5QyxNQUFNLEVBQUVHLFNBQVNDLGFBQWEsRUFBRSxHQUFHLE1BQU1DLElBQUFBLGdCQUFPLEVBQzlDO1lBQ0VDLE1BQU07WUFDTkMsU0FBUztZQUNUQyxTQUNFLGtIQUNBO1lBQ0ZDLE1BQU07UUFDUixHQUNBO1lBQ0VDLFVBQVU7Z0JBQ1JDLFFBQVFDLElBQUksQ0FBQztZQUNmO1FBQ0Y7UUFHRixJQUFJLENBQUNSLGVBQWU7WUFDbEJPLFFBQVFDLElBQUksQ0FBQztRQUNmO0lBQ0Y7SUFFQSxNQUFNQyxXQUFXeEIsY0FBYztJQUUvQix3REFBd0Q7SUFDeEQsS0FBSyxNQUFNeUIsYUFBYS9CLGVBQWdCO1FBQ3RDLE1BQU1nQyxhQUFhekIsZUFBZUssSUFBSSxDQUFDLENBQUNxQixXQUFhQSxTQUFTVixJQUFJLEtBQUtRLFVBQVVSLElBQUk7UUFFckYsdUJBQXVCO1FBQ3ZCLElBQUlTLFlBQVk7WUFDZCxVQUFTLGtDQUFrQztRQUM3QztRQUVBLE1BQU1FLGlCQUFpQm5DLFNBQVNnQyxXQUFXRDtJQUM3QztBQUNGO0FBRUEsZUFBZUksaUJBQWlCbkMsT0FBZ0IsRUFBRWdDLFNBQW9CLEVBQUVkLEtBQWE7SUFDbkYsTUFBTWtCLFFBQVFDLEtBQUtDLEdBQUc7SUFFdEJ0QyxRQUFRSSxNQUFNLENBQUNDLElBQUksQ0FBQztRQUFFQyxLQUFLLENBQUMsV0FBVyxFQUFFMEIsVUFBVVIsSUFBSSxDQUFDLENBQUM7SUFBQztJQUUxRCxNQUFNZSxZQUFZdkMsUUFBUXdDLEVBQUU7SUFDNUIsTUFBTUMsY0FBY0MsSUFBQUEsMEJBQW1CLEVBQUNILFVBQVVJLE1BQU07SUFFeEQsSUFBSTtRQUNGLE1BQU1YLFVBQVVZLEVBQUUsQ0FBQztZQUFFNUM7UUFBUTtRQUM3QkEsUUFBUUksTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRTBCLFVBQVVSLElBQUksQ0FBQyxFQUFFLEVBQUVhLEtBQUtDLEdBQUcsS0FBS0YsTUFBTSxHQUFHLENBQUM7UUFBQztRQUNwRixNQUFNcEMsUUFBUTZDLE1BQU0sQ0FBQztZQUNuQi9CLFlBQVk7WUFDWmdDLE1BQU07Z0JBQ0p0QixNQUFNUSxVQUFVUixJQUFJO2dCQUNwQk47Z0JBQ0F5QixRQUFRRjtZQUNWO1FBQ0Y7SUFDRixFQUFFLE9BQU9NLEtBQWM7UUFDckIvQyxRQUFRSSxNQUFNLENBQUM0QyxLQUFLLENBQUM7WUFDbkJEO1lBQ0F6QyxLQUFLMkMsSUFBQUEsc0JBQVUsRUFBQ0YsS0FBSyxDQUFDLHdCQUF3QixFQUFFZixVQUFVUixJQUFJLENBQUMsQ0FBQztRQUNsRTtJQUNGO0FBQ0YifQ==
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"migrateDown.d.ts","sourceRoot":"","sources":["../src/migrateDown.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDtE"}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
/* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "migrateDown", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return migrateDown;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _database = require("payload/database");
|
12
|
+
const _migrationTableExists = require("./utilities/migrationTableExists");
|
13
|
+
const _parseError = require("./utilities/parseError");
|
14
|
+
async function migrateDown() {
|
15
|
+
const { payload } = this;
|
16
|
+
const migrationFiles = await (0, _database.readMigrationFiles)({
|
17
|
+
payload
|
18
|
+
});
|
19
|
+
const { existingMigrations, latestBatch } = await (0, _database.getMigrations)({
|
20
|
+
payload
|
21
|
+
});
|
22
|
+
if (!existingMigrations?.length) {
|
23
|
+
payload.logger.info({
|
24
|
+
msg: 'No migrations to rollback.'
|
25
|
+
});
|
26
|
+
return;
|
27
|
+
}
|
28
|
+
payload.logger.info({
|
29
|
+
msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
|
30
|
+
});
|
31
|
+
for (const migration of existingMigrations){
|
32
|
+
const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
|
33
|
+
if (!migrationFile) {
|
34
|
+
throw new Error(`Migration ${migration.name} not found locally.`);
|
35
|
+
}
|
36
|
+
const start = Date.now();
|
37
|
+
let transactionID;
|
38
|
+
try {
|
39
|
+
payload.logger.info({
|
40
|
+
msg: `Migrating down: ${migrationFile.name}`
|
41
|
+
});
|
42
|
+
transactionID = await this.beginTransaction();
|
43
|
+
await migrationFile.down({
|
44
|
+
payload
|
45
|
+
});
|
46
|
+
payload.logger.info({
|
47
|
+
msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`
|
48
|
+
});
|
49
|
+
const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
|
50
|
+
if (tableExists) {
|
51
|
+
await payload.delete({
|
52
|
+
id: migration.id,
|
53
|
+
collection: 'payload-migrations',
|
54
|
+
req: {
|
55
|
+
transactionID
|
56
|
+
}
|
57
|
+
});
|
58
|
+
}
|
59
|
+
await this.commitTransaction(transactionID);
|
60
|
+
} catch (err) {
|
61
|
+
await this.rollbackTransaction(transactionID);
|
62
|
+
payload.logger.error({
|
63
|
+
err,
|
64
|
+
msg: (0, _parseError.parseError)(err, `Error migrating down ${migrationFile.name}. Rolling back.`)
|
65
|
+
});
|
66
|
+
process.exit(1);
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlRG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tYXdhaXQtaW4tbG9vcCAqL1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGdldE1pZ3JhdGlvbnMsIHJlYWRNaWdyYXRpb25GaWxlcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgbWlncmF0aW9uVGFibGVFeGlzdHMgfSBmcm9tICcuL3V0aWxpdGllcy9taWdyYXRpb25UYWJsZUV4aXN0cydcbmltcG9ydCB7IHBhcnNlRXJyb3IgfSBmcm9tICcuL3V0aWxpdGllcy9wYXJzZUVycm9yJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZURvd24odGhpczogUG9zdGdyZXNBZGFwdGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gdGhpc1xuICBjb25zdCBtaWdyYXRpb25GaWxlcyA9IGF3YWl0IHJlYWRNaWdyYXRpb25GaWxlcyh7IHBheWxvYWQgfSlcblxuICBjb25zdCB7IGV4aXN0aW5nTWlncmF0aW9ucywgbGF0ZXN0QmF0Y2ggfSA9IGF3YWl0IGdldE1pZ3JhdGlvbnMoe1xuICAgIHBheWxvYWQsXG4gIH0pXG5cbiAgaWYgKCFleGlzdGluZ01pZ3JhdGlvbnM/Lmxlbmd0aCkge1xuICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6ICdObyBtaWdyYXRpb25zIHRvIHJvbGxiYWNrLicgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgIG1zZzogYFJvbGxpbmcgYmFjayBiYXRjaCAke2xhdGVzdEJhdGNofSBjb25zaXN0aW5nIG9mICR7ZXhpc3RpbmdNaWdyYXRpb25zLmxlbmd0aH0gbWlncmF0aW9uKHMpLmAsXG4gIH0pXG5cbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgZXhpc3RpbmdNaWdyYXRpb25zKSB7XG4gICAgY29uc3QgbWlncmF0aW9uRmlsZSA9IG1pZ3JhdGlvbkZpbGVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbWlncmF0aW9uLm5hbWUpXG4gICAgaWYgKCFtaWdyYXRpb25GaWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pZ3JhdGlvbiAke21pZ3JhdGlvbi5uYW1lfSBub3QgZm91bmQgbG9jYWxseS5gKVxuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgIGxldCB0cmFuc2FjdGlvbklEXG5cbiAgICB0cnkge1xuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZyBkb3duOiAke21pZ3JhdGlvbkZpbGUubmFtZX1gIH0pXG4gICAgICB0cmFuc2FjdGlvbklEID0gYXdhaXQgdGhpcy5iZWdpblRyYW5zYWN0aW9uKClcbiAgICAgIGF3YWl0IG1pZ3JhdGlvbkZpbGUuZG93bih7IHBheWxvYWQgfSlcbiAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgICAgICBtc2c6IGBNaWdyYXRlZCBkb3duOiAgJHttaWdyYXRpb25GaWxlLm5hbWV9ICgke0RhdGUubm93KCkgLSBzdGFydH1tcylgLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgdGFibGVFeGlzdHMgPSBhd2FpdCBtaWdyYXRpb25UYWJsZUV4aXN0cyh0aGlzLmRyaXp6bGUpXG4gICAgICBpZiAodGFibGVFeGlzdHMpIHtcbiAgICAgICAgYXdhaXQgcGF5bG9hZC5kZWxldGUoe1xuICAgICAgICAgIGlkOiBtaWdyYXRpb24uaWQsXG4gICAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgICAgcmVxOiB7XG4gICAgICAgICAgICB0cmFuc2FjdGlvbklELFxuICAgICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMuY29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGF3YWl0IHRoaXMucm9sbGJhY2tUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIG1pZ3JhdGluZyBkb3duICR7bWlncmF0aW9uRmlsZS5uYW1lfS4gUm9sbGluZyBiYWNrLmApLFxuICAgICAgfSlcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGVEb3duIiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZXhpc3RpbmdNaWdyYXRpb25zIiwibGF0ZXN0QmF0Y2giLCJnZXRNaWdyYXRpb25zIiwibGVuZ3RoIiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsIm1pZ3JhdGlvbiIsIm1pZ3JhdGlvbkZpbGUiLCJmaW5kIiwibSIsIm5hbWUiLCJFcnJvciIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInRyYW5zYWN0aW9uSUQiLCJiZWdpblRyYW5zYWN0aW9uIiwiZG93biIsInRhYmxlRXhpc3RzIiwibWlncmF0aW9uVGFibGVFeGlzdHMiLCJkcml6emxlIiwiZGVsZXRlIiwiaWQiLCJjb2xsZWN0aW9uIiwicmVxIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJlcnIiLCJyb2xsYmFja1RyYW5zYWN0aW9uIiwiZXJyb3IiLCJwYXJzZUVycm9yIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFVbkNBOzs7ZUFBQUE7OzswQkFQNEI7c0NBSWI7NEJBQ1Y7QUFFcEIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3hCLE1BQU1DLGlCQUFpQixNQUFNQyxJQUFBQSw0QkFBa0IsRUFBQztRQUFFRjtJQUFRO0lBRTFELE1BQU0sRUFBRUcsa0JBQWtCLEVBQUVDLFdBQVcsRUFBRSxHQUFHLE1BQU1DLElBQUFBLHVCQUFhLEVBQUM7UUFDOURMO0lBQ0Y7SUFFQSxJQUFJLENBQUNHLG9CQUFvQkcsUUFBUTtRQUMvQk4sUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSztRQUE2QjtRQUN4RDtJQUNGO0lBRUFULFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1FBQ2xCQyxLQUFLLENBQUMsbUJBQW1CLEVBQUVMLFlBQVksZUFBZSxFQUFFRCxtQkFBbUJHLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDbkc7SUFFQSxLQUFLLE1BQU1JLGFBQWFQLG1CQUFvQjtRQUMxQyxNQUFNUSxnQkFBZ0JWLGVBQWVXLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtKLFVBQVVJLElBQUk7UUFDMUUsSUFBSSxDQUFDSCxlQUFlO1lBQ2xCLE1BQU0sSUFBSUksTUFBTSxDQUFDLFVBQVUsRUFBRUwsVUFBVUksSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2xFO1FBRUEsTUFBTUUsUUFBUUMsS0FBS0MsR0FBRztRQUN0QixJQUFJQztRQUVKLElBQUk7WUFDRm5CLFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUFFQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUVFLGNBQWNHLElBQUksQ0FBQyxDQUFDO1lBQUM7WUFDbkVLLGdCQUFnQixNQUFNLElBQUksQ0FBQ0MsZ0JBQWdCO1lBQzNDLE1BQU1ULGNBQWNVLElBQUksQ0FBQztnQkFBRXJCO1lBQVE7WUFDbkNBLFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUNsQkMsS0FBSyxDQUFDLGdCQUFnQixFQUFFRSxjQUFjRyxJQUFJLENBQUMsRUFBRSxFQUFFRyxLQUFLQyxHQUFHLEtBQUtGLE1BQU0sR0FBRyxDQUFDO1lBQ3hFO1lBRUEsTUFBTU0sY0FBYyxNQUFNQyxJQUFBQSwwQ0FBb0IsRUFBQyxJQUFJLENBQUNDLE9BQU87WUFDM0QsSUFBSUYsYUFBYTtnQkFDZixNQUFNdEIsUUFBUXlCLE1BQU0sQ0FBQztvQkFDbkJDLElBQUloQixVQUFVZ0IsRUFBRTtvQkFDaEJDLFlBQVk7b0JBQ1pDLEtBQUs7d0JBQ0hUO29CQUNGO2dCQUNGO1lBQ0Y7WUFFQSxNQUFNLElBQUksQ0FBQ1UsaUJBQWlCLENBQUNWO1FBQy9CLEVBQUUsT0FBT1csS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNaO1lBRS9CbkIsUUFBUU8sTUFBTSxDQUFDeUIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0FyQixLQUFLd0IsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHFCQUFxQixFQUFFbkIsY0FBY0csSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNsRjtZQUNBb0IsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtBQUNGIn0=
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DvE"}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "migrateFresh", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return migrateFresh;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _drizzleorm = require("drizzle-orm");
|
12
|
+
const _database = require("payload/database");
|
13
|
+
const _prompts = /*#__PURE__*/ _interop_require_default(require("prompts"));
|
14
|
+
const _parseError = require("./utilities/parseError");
|
15
|
+
function _interop_require_default(obj) {
|
16
|
+
return obj && obj.__esModule ? obj : {
|
17
|
+
default: obj
|
18
|
+
};
|
19
|
+
}
|
20
|
+
async function migrateFresh() {
|
21
|
+
const { payload } = this;
|
22
|
+
const { confirm: acceptWarning } = await (0, _prompts.default)({
|
23
|
+
name: 'confirm',
|
24
|
+
initial: false,
|
25
|
+
message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,
|
26
|
+
type: 'confirm'
|
27
|
+
}, {
|
28
|
+
onCancel: ()=>{
|
29
|
+
process.exit(0);
|
30
|
+
}
|
31
|
+
});
|
32
|
+
if (!acceptWarning) {
|
33
|
+
process.exit(0);
|
34
|
+
}
|
35
|
+
payload.logger.info({
|
36
|
+
msg: `Dropping database.`
|
37
|
+
});
|
38
|
+
await this.drizzle.execute((0, _drizzleorm.sql)`drop schema public cascade;\ncreate schema public;`);
|
39
|
+
const migrationFiles = await (0, _database.readMigrationFiles)({
|
40
|
+
payload
|
41
|
+
});
|
42
|
+
payload.logger.debug({
|
43
|
+
msg: `Found ${migrationFiles.length} migration files.`
|
44
|
+
});
|
45
|
+
let transactionID;
|
46
|
+
// Run all migrate up
|
47
|
+
for (const migration of migrationFiles){
|
48
|
+
payload.logger.info({
|
49
|
+
msg: `Migrating: ${migration.name}`
|
50
|
+
});
|
51
|
+
try {
|
52
|
+
const start = Date.now();
|
53
|
+
transactionID = await this.beginTransaction();
|
54
|
+
await migration.up({
|
55
|
+
payload
|
56
|
+
});
|
57
|
+
await payload.create({
|
58
|
+
collection: 'payload-migrations',
|
59
|
+
data: {
|
60
|
+
name: migration.name,
|
61
|
+
batch: 1
|
62
|
+
},
|
63
|
+
req: {
|
64
|
+
transactionID
|
65
|
+
}
|
66
|
+
});
|
67
|
+
await this.commitTransaction(transactionID);
|
68
|
+
payload.logger.info({
|
69
|
+
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
|
70
|
+
});
|
71
|
+
} catch (err) {
|
72
|
+
await this.rollbackTransaction(transactionID);
|
73
|
+
payload.logger.error({
|
74
|
+
err,
|
75
|
+
msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}. Rolling back`)
|
76
|
+
});
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlRnJlc2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJ1xuaW1wb3J0IHsgcmVhZE1pZ3JhdGlvbkZpbGVzIH0gZnJvbSAncGF5bG9hZC9kYXRhYmFzZSdcbmltcG9ydCBwcm9tcHRzIGZyb20gJ3Byb21wdHMnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgcGFyc2VFcnJvciB9IGZyb20gJy4vdXRpbGl0aWVzL3BhcnNlRXJyb3InXG5cbi8qKlxuICogRHJvcCB0aGUgY3VycmVudCBkYXRhYmFzZSBhbmQgcnVuIGFsbCBtaWdyYXRlIHVwIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWlncmF0ZUZyZXNoKHRoaXM6IFBvc3RncmVzQWRhcHRlcik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBheWxvYWQgfSA9IHRoaXNcblxuICBjb25zdCB7IGNvbmZpcm06IGFjY2VwdFdhcm5pbmcgfSA9IGF3YWl0IHByb21wdHMoXG4gICAge1xuICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgaW5pdGlhbDogZmFsc2UsXG4gICAgICBtZXNzYWdlOiBgV0FSTklORzogVGhpcyB3aWxsIGRyb3AgeW91ciBkYXRhYmFzZSBhbmQgcnVuIGFsbCBtaWdyYXRpb25zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcHJvY2VlZD9gLFxuICAgICAgdHlwZTogJ2NvbmZpcm0nLFxuICAgIH0sXG4gICAge1xuICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApXG4gICAgICB9LFxuICAgIH0sXG4gIClcblxuICBpZiAoIWFjY2VwdFdhcm5pbmcpIHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfVxuXG4gIHBheWxvYWQubG9nZ2VyLmluZm8oe1xuICAgIG1zZzogYERyb3BwaW5nIGRhdGFiYXNlLmAsXG4gIH0pXG5cbiAgYXdhaXQgdGhpcy5kcml6emxlLmV4ZWN1dGUoc3FsYGRyb3Agc2NoZW1hIHB1YmxpYyBjYXNjYWRlO1xcbmNyZWF0ZSBzY2hlbWEgcHVibGljO2ApXG5cbiAgY29uc3QgbWlncmF0aW9uRmlsZXMgPSBhd2FpdCByZWFkTWlncmF0aW9uRmlsZXMoeyBwYXlsb2FkIH0pXG4gIHBheWxvYWQubG9nZ2VyLmRlYnVnKHtcbiAgICBtc2c6IGBGb3VuZCAke21pZ3JhdGlvbkZpbGVzLmxlbmd0aH0gbWlncmF0aW9uIGZpbGVzLmAsXG4gIH0pXG5cbiAgbGV0IHRyYW5zYWN0aW9uSURcbiAgLy8gUnVuIGFsbCBtaWdyYXRlIHVwXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIG1pZ3JhdGlvbkZpbGVzKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZzogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgdHJhbnNhY3Rpb25JRCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgYmF0Y2g6IDEsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcToge1xuICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0ZWQ6ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCB9KVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2tgKSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsibWlncmF0ZUZyZXNoIiwicGF5bG9hZCIsImNvbmZpcm0iLCJhY2NlcHRXYXJuaW5nIiwicHJvbXB0cyIsIm5hbWUiLCJpbml0aWFsIiwibWVzc2FnZSIsInR5cGUiLCJvbkNhbmNlbCIsInByb2Nlc3MiLCJleGl0IiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsImRyaXp6bGUiLCJleGVjdXRlIiwic3FsIiwibWlncmF0aW9uRmlsZXMiLCJyZWFkTWlncmF0aW9uRmlsZXMiLCJkZWJ1ZyIsImxlbmd0aCIsInRyYW5zYWN0aW9uSUQiLCJtaWdyYXRpb24iLCJzdGFydCIsIkRhdGUiLCJub3ciLCJiZWdpblRyYW5zYWN0aW9uIiwidXAiLCJjcmVhdGUiLCJjb2xsZWN0aW9uIiwiZGF0YSIsImJhdGNoIiwicmVxIiwiY29tbWl0VHJhbnNhY3Rpb24iLCJlcnIiLCJyb2xsYmFja1RyYW5zYWN0aW9uIiwiZXJyb3IiLCJwYXJzZUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQWFzQkE7OztlQUFBQTs7OzRCQVhGOzBCQUNlO2dFQUNmOzRCQUlPOzs7Ozs7QUFLcEIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBRXhCLE1BQU0sRUFBRUMsU0FBU0MsYUFBYSxFQUFFLEdBQUcsTUFBTUMsSUFBQUEsZ0JBQU8sRUFDOUM7UUFDRUMsTUFBTTtRQUNOQyxTQUFTO1FBQ1RDLFNBQVMsQ0FBQywrRkFBK0YsQ0FBQztRQUMxR0MsTUFBTTtJQUNSLEdBQ0E7UUFDRUMsVUFBVTtZQUNSQyxRQUFRQyxJQUFJLENBQUM7UUFDZjtJQUNGO0lBR0YsSUFBSSxDQUFDUixlQUFlO1FBQ2xCTyxRQUFRQyxJQUFJLENBQUM7SUFDZjtJQUVBVixRQUFRVyxNQUFNLENBQUNDLElBQUksQ0FBQztRQUNsQkMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0lBQzNCO0lBRUEsTUFBTSxJQUFJLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDQyxJQUFBQSxlQUFHLENBQUEsQ0FBQyxrREFBa0QsQ0FBQztJQUVsRixNQUFNQyxpQkFBaUIsTUFBTUMsSUFBQUEsNEJBQWtCLEVBQUM7UUFBRWxCO0lBQVE7SUFDMURBLFFBQVFXLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDO1FBQ25CTixLQUFLLENBQUMsTUFBTSxFQUFFSSxlQUFlRyxNQUFNLENBQUMsaUJBQWlCLENBQUM7SUFDeEQ7SUFFQSxJQUFJQztJQUNKLHFCQUFxQjtJQUNyQixLQUFLLE1BQU1DLGFBQWFMLGVBQWdCO1FBQ3RDakIsUUFBUVcsTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRVMsVUFBVWxCLElBQUksQ0FBQyxDQUFDO1FBQUM7UUFDMUQsSUFBSTtZQUNGLE1BQU1tQixRQUFRQyxLQUFLQyxHQUFHO1lBQ3RCSixnQkFBZ0IsTUFBTSxJQUFJLENBQUNLLGdCQUFnQjtZQUMzQyxNQUFNSixVQUFVSyxFQUFFLENBQUM7Z0JBQUUzQjtZQUFRO1lBQzdCLE1BQU1BLFFBQVE0QixNQUFNLENBQUM7Z0JBQ25CQyxZQUFZO2dCQUNaQyxNQUFNO29CQUNKMUIsTUFBTWtCLFVBQVVsQixJQUFJO29CQUNwQjJCLE9BQU87Z0JBQ1Q7Z0JBQ0FDLEtBQUs7b0JBQ0hYO2dCQUNGO1lBQ0Y7WUFDQSxNQUFNLElBQUksQ0FBQ1ksaUJBQWlCLENBQUNaO1lBRTdCckIsUUFBUVcsTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQUVDLEtBQUssQ0FBQyxXQUFXLEVBQUVTLFVBQVVsQixJQUFJLENBQUMsRUFBRSxFQUFFb0IsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUFDO1FBQ3RGLEVBQUUsT0FBT1csS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUNkO1lBQy9CckIsUUFBUVcsTUFBTSxDQUFDeUIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0FyQixLQUFLd0IsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHdCQUF3QixFQUFFWixVQUFVbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUNoRjtRQUNGO0lBQ0Y7QUFDRiJ9
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"migrateRefresh.d.ts","sourceRoot":"","sources":["../src/migrateRefresh.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,iBAyFzD"}
|
@@ -0,0 +1,109 @@
|
|
1
|
+
/* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "migrateRefresh", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return migrateRefresh;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _database = require("payload/database");
|
12
|
+
const _migrationTableExists = require("./utilities/migrationTableExists");
|
13
|
+
const _parseError = require("./utilities/parseError");
|
14
|
+
async function migrateRefresh() {
|
15
|
+
const { payload } = this;
|
16
|
+
const migrationFiles = await (0, _database.readMigrationFiles)({
|
17
|
+
payload
|
18
|
+
});
|
19
|
+
const { existingMigrations, latestBatch } = await (0, _database.getMigrations)({
|
20
|
+
payload
|
21
|
+
});
|
22
|
+
if (!existingMigrations?.length) {
|
23
|
+
payload.logger.info({
|
24
|
+
msg: 'No migrations to rollback.'
|
25
|
+
});
|
26
|
+
return;
|
27
|
+
}
|
28
|
+
payload.logger.info({
|
29
|
+
msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
|
30
|
+
});
|
31
|
+
let transactionID;
|
32
|
+
// Reverse order of migrations to rollback
|
33
|
+
existingMigrations.reverse();
|
34
|
+
for (const migration of existingMigrations){
|
35
|
+
try {
|
36
|
+
const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
|
37
|
+
if (!migrationFile) {
|
38
|
+
throw new Error(`Migration ${migration.name} not found locally.`);
|
39
|
+
}
|
40
|
+
payload.logger.info({
|
41
|
+
msg: `Migrating down: ${migration.name}`
|
42
|
+
});
|
43
|
+
const start = Date.now();
|
44
|
+
transactionID = await this.beginTransaction();
|
45
|
+
await migrationFile.down({
|
46
|
+
payload
|
47
|
+
});
|
48
|
+
payload.logger.info({
|
49
|
+
msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`
|
50
|
+
});
|
51
|
+
const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
|
52
|
+
if (tableExists) {
|
53
|
+
await payload.delete({
|
54
|
+
collection: 'payload-migrations',
|
55
|
+
req: {
|
56
|
+
transactionID
|
57
|
+
},
|
58
|
+
where: {
|
59
|
+
name: {
|
60
|
+
equals: migration.name
|
61
|
+
}
|
62
|
+
}
|
63
|
+
});
|
64
|
+
}
|
65
|
+
} catch (err) {
|
66
|
+
await this.rollbackTransaction(transactionID);
|
67
|
+
payload.logger.error({
|
68
|
+
err,
|
69
|
+
msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}. Rolling back.`)
|
70
|
+
});
|
71
|
+
process.exit(1);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
// Run all migrate up
|
75
|
+
for (const migration of migrationFiles){
|
76
|
+
payload.logger.info({
|
77
|
+
msg: `Migrating: ${migration.name}`
|
78
|
+
});
|
79
|
+
try {
|
80
|
+
const start = Date.now();
|
81
|
+
transactionID = await this.beginTransaction();
|
82
|
+
await migration.up({
|
83
|
+
payload
|
84
|
+
});
|
85
|
+
await payload.create({
|
86
|
+
collection: 'payload-migrations',
|
87
|
+
data: {
|
88
|
+
name: migration.name,
|
89
|
+
executed: true
|
90
|
+
},
|
91
|
+
req: {
|
92
|
+
transactionID
|
93
|
+
}
|
94
|
+
});
|
95
|
+
await this.commitTransaction(transactionID);
|
96
|
+
payload.logger.info({
|
97
|
+
msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
|
98
|
+
});
|
99
|
+
} catch (err) {
|
100
|
+
await this.rollbackTransaction(transactionID);
|
101
|
+
payload.logger.error({
|
102
|
+
err,
|
103
|
+
msg: (0, _parseError.parseError)(err, `Error running migration ${migration.name}. Rolling back.`)
|
104
|
+
});
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlUmVmcmVzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tYXdhaXQtaW4tbG9vcCAqL1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGdldE1pZ3JhdGlvbnMsIHJlYWRNaWdyYXRpb25GaWxlcyB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5pbXBvcnQgeyBEYXRhYmFzZUVycm9yIH0gZnJvbSAncGcnXG5cbmltcG9ydCB0eXBlIHsgUG9zdGdyZXNBZGFwdGVyIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgbWlncmF0aW9uVGFibGVFeGlzdHMgfSBmcm9tICcuL3V0aWxpdGllcy9taWdyYXRpb25UYWJsZUV4aXN0cydcbmltcG9ydCB7IHBhcnNlRXJyb3IgfSBmcm9tICcuL3V0aWxpdGllcy9wYXJzZUVycm9yJ1xuXG4vKipcbiAqIFJ1biBhbGwgbWlncmF0aW9uIGRvd24gZnVuY3Rpb25zIGJlZm9yZSBydW5uaW5nIHVwXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlUmVmcmVzaCh0aGlzOiBQb3N0Z3Jlc0FkYXB0ZXIpIHtcbiAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzXG4gIGNvbnN0IG1pZ3JhdGlvbkZpbGVzID0gYXdhaXQgcmVhZE1pZ3JhdGlvbkZpbGVzKHsgcGF5bG9hZCB9KVxuXG4gIGNvbnN0IHsgZXhpc3RpbmdNaWdyYXRpb25zLCBsYXRlc3RCYXRjaCB9ID0gYXdhaXQgZ2V0TWlncmF0aW9ucyh7XG4gICAgcGF5bG9hZCxcbiAgfSlcblxuICBpZiAoIWV4aXN0aW5nTWlncmF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcm9sbGJhY2suJyB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgbXNnOiBgUm9sbGluZyBiYWNrIGJhdGNoICR7bGF0ZXN0QmF0Y2h9IGNvbnNpc3Rpbmcgb2YgJHtleGlzdGluZ01pZ3JhdGlvbnMubGVuZ3RofSBtaWdyYXRpb24ocykuYCxcbiAgfSlcblxuICBsZXQgdHJhbnNhY3Rpb25JRFxuXG4gIC8vIFJldmVyc2Ugb3JkZXIgb2YgbWlncmF0aW9ucyB0byByb2xsYmFja1xuICBleGlzdGluZ01pZ3JhdGlvbnMucmV2ZXJzZSgpXG5cbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgZXhpc3RpbmdNaWdyYXRpb25zKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbkZpbGUgPSBtaWdyYXRpb25GaWxlcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuICAgICAgaWYgKCFtaWdyYXRpb25GaWxlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9IG5vdCBmb3VuZCBsb2NhbGx5LmApXG4gICAgICB9XG5cbiAgICAgIHBheWxvYWQubG9nZ2VyLmluZm8oeyBtc2c6IGBNaWdyYXRpbmcgZG93bjogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KClcbiAgICAgIHRyYW5zYWN0aW9uSUQgPSBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKVxuICAgICAgYXdhaXQgbWlncmF0aW9uRmlsZS5kb3duKHsgcGF5bG9hZCB9KVxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgICAgIG1zZzogYE1pZ3JhdGVkIGRvd246ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHRhYmxlRXhpc3RzID0gYXdhaXQgbWlncmF0aW9uVGFibGVFeGlzdHModGhpcy5kcml6emxlKVxuICAgICAgaWYgKHRhYmxlRXhpc3RzKSB7XG4gICAgICAgIGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgfSBhcyBQYXlsb2FkUmVxdWVzdCxcbiAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgbmFtZToge1xuICAgICAgICAgICAgICBlcXVhbHM6IG1pZ3JhdGlvbi5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2suYCksXG4gICAgICB9KVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICB9XG5cbiAgLy8gUnVuIGFsbCBtaWdyYXRlIHVwXG4gIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIG1pZ3JhdGlvbkZpbGVzKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogYE1pZ3JhdGluZzogJHttaWdyYXRpb24ubmFtZX1gIH0pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKVxuICAgICAgdHJhbnNhY3Rpb25JRCA9IGF3YWl0IHRoaXMuYmVnaW5UcmFuc2FjdGlvbigpXG4gICAgICBhd2FpdCBtaWdyYXRpb24udXAoeyBwYXlsb2FkIH0pXG4gICAgICBhd2FpdCBwYXlsb2FkLmNyZWF0ZSh7XG4gICAgICAgIGNvbGxlY3Rpb246ICdwYXlsb2FkLW1pZ3JhdGlvbnMnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgbmFtZTogbWlncmF0aW9uLm5hbWUsXG4gICAgICAgICAgZXhlY3V0ZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlcToge1xuICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgIH0gYXMgUGF5bG9hZFJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0ZWQ6ICAke21pZ3JhdGlvbi5uYW1lfSAoJHtEYXRlLm5vdygpIC0gc3RhcnR9bXMpYCB9KVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhpcy5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSUQpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7XG4gICAgICAgIGVycixcbiAgICAgICAgbXNnOiBwYXJzZUVycm9yKGVyciwgYEVycm9yIHJ1bm5pbmcgbWlncmF0aW9uICR7bWlncmF0aW9uLm5hbWV9LiBSb2xsaW5nIGJhY2suYCksXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbIm1pZ3JhdGVSZWZyZXNoIiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZXhpc3RpbmdNaWdyYXRpb25zIiwibGF0ZXN0QmF0Y2giLCJnZXRNaWdyYXRpb25zIiwibGVuZ3RoIiwibG9nZ2VyIiwiaW5mbyIsIm1zZyIsInRyYW5zYWN0aW9uSUQiLCJyZXZlcnNlIiwibWlncmF0aW9uIiwibWlncmF0aW9uRmlsZSIsImZpbmQiLCJtIiwibmFtZSIsIkVycm9yIiwic3RhcnQiLCJEYXRlIiwibm93IiwiYmVnaW5UcmFuc2FjdGlvbiIsImRvd24iLCJ0YWJsZUV4aXN0cyIsIm1pZ3JhdGlvblRhYmxlRXhpc3RzIiwiZHJpenpsZSIsImRlbGV0ZSIsImNvbGxlY3Rpb24iLCJyZXEiLCJ3aGVyZSIsImVxdWFscyIsImVyciIsInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJlcnJvciIsInBhcnNlRXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsInVwIiwiY3JlYXRlIiwiZGF0YSIsImV4ZWN1dGVkIiwiY29tbWl0VHJhbnNhY3Rpb24iXSwibWFwcGluZ3MiOiJBQUFBLHlEQUF5RDs7OzsrQkFjbkNBOzs7ZUFBQUE7OzswQkFYNEI7c0NBS2I7NEJBQ1Y7QUFLcEIsZUFBZUE7SUFDcEIsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBRyxJQUFJO0lBQ3hCLE1BQU1DLGlCQUFpQixNQUFNQyxJQUFBQSw0QkFBa0IsRUFBQztRQUFFRjtJQUFRO0lBRTFELE1BQU0sRUFBRUcsa0JBQWtCLEVBQUVDLFdBQVcsRUFBRSxHQUFHLE1BQU1DLElBQUFBLHVCQUFhLEVBQUM7UUFDOURMO0lBQ0Y7SUFFQSxJQUFJLENBQUNHLG9CQUFvQkcsUUFBUTtRQUMvQk4sUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSztRQUE2QjtRQUN4RDtJQUNGO0lBRUFULFFBQVFPLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO1FBQ2xCQyxLQUFLLENBQUMsbUJBQW1CLEVBQUVMLFlBQVksZUFBZSxFQUFFRCxtQkFBbUJHLE1BQU0sQ0FBQyxjQUFjLENBQUM7SUFDbkc7SUFFQSxJQUFJSTtJQUVKLDBDQUEwQztJQUMxQ1AsbUJBQW1CUSxPQUFPO0lBRTFCLEtBQUssTUFBTUMsYUFBYVQsbUJBQW9CO1FBQzFDLElBQUk7WUFDRixNQUFNVSxnQkFBZ0JaLGVBQWVhLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxJQUFJLEtBQUtKLFVBQVVJLElBQUk7WUFDMUUsSUFBSSxDQUFDSCxlQUFlO2dCQUNsQixNQUFNLElBQUlJLE1BQU0sQ0FBQyxVQUFVLEVBQUVMLFVBQVVJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRTtZQUVBaEIsUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7Z0JBQUVDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLENBQUM7WUFBQztZQUMvRCxNQUFNRSxRQUFRQyxLQUFLQyxHQUFHO1lBQ3RCVixnQkFBZ0IsTUFBTSxJQUFJLENBQUNXLGdCQUFnQjtZQUMzQyxNQUFNUixjQUFjUyxJQUFJLENBQUM7Z0JBQUV0QjtZQUFRO1lBQ25DQSxRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztnQkFDbEJDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRUcsVUFBVUksSUFBSSxDQUFDLEVBQUUsRUFBRUcsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUNwRTtZQUVBLE1BQU1LLGNBQWMsTUFBTUMsSUFBQUEsMENBQW9CLEVBQUMsSUFBSSxDQUFDQyxPQUFPO1lBQzNELElBQUlGLGFBQWE7Z0JBQ2YsTUFBTXZCLFFBQVEwQixNQUFNLENBQUM7b0JBQ25CQyxZQUFZO29CQUNaQyxLQUFLO3dCQUNIbEI7b0JBQ0Y7b0JBQ0FtQixPQUFPO3dCQUNMYixNQUFNOzRCQUNKYyxRQUFRbEIsVUFBVUksSUFBSTt3QkFDeEI7b0JBQ0Y7Z0JBQ0Y7WUFDRjtRQUNGLEVBQUUsT0FBT2UsS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUN0QjtZQUMvQlYsUUFBUU8sTUFBTSxDQUFDMEIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0F0QixLQUFLeUIsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHdCQUF3QixFQUFFbkIsVUFBVUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNqRjtZQUNBbUIsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtJQUVBLHFCQUFxQjtJQUNyQixLQUFLLE1BQU14QixhQUFhWCxlQUFnQjtRQUN0Q0QsUUFBUU8sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRUcsVUFBVUksSUFBSSxDQUFDLENBQUM7UUFBQztRQUMxRCxJQUFJO1lBQ0YsTUFBTUUsUUFBUUMsS0FBS0MsR0FBRztZQUN0QlYsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDVyxnQkFBZ0I7WUFDM0MsTUFBTVQsVUFBVXlCLEVBQUUsQ0FBQztnQkFBRXJDO1lBQVE7WUFDN0IsTUFBTUEsUUFBUXNDLE1BQU0sQ0FBQztnQkFDbkJYLFlBQVk7Z0JBQ1pZLE1BQU07b0JBQ0p2QixNQUFNSixVQUFVSSxJQUFJO29CQUNwQndCLFVBQVU7Z0JBQ1o7Z0JBQ0FaLEtBQUs7b0JBQ0hsQjtnQkFDRjtZQUNGO1lBQ0EsTUFBTSxJQUFJLENBQUMrQixpQkFBaUIsQ0FBQy9CO1lBRTdCVixRQUFRTyxNQUFNLENBQUNDLElBQUksQ0FBQztnQkFBRUMsS0FBSyxDQUFDLFdBQVcsRUFBRUcsVUFBVUksSUFBSSxDQUFDLEVBQUUsRUFBRUcsS0FBS0MsR0FBRyxLQUFLRixNQUFNLEdBQUcsQ0FBQztZQUFDO1FBQ3RGLEVBQUUsT0FBT2EsS0FBYztZQUNyQixNQUFNLElBQUksQ0FBQ0MsbUJBQW1CLENBQUN0QjtZQUMvQlYsUUFBUU8sTUFBTSxDQUFDMEIsS0FBSyxDQUFDO2dCQUNuQkY7Z0JBQ0F0QixLQUFLeUIsSUFBQUEsc0JBQVUsRUFBQ0gsS0FBSyxDQUFDLHdCQUF3QixFQUFFbkIsVUFBVUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNqRjtRQUNGO0lBQ0Y7QUFDRiJ9
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"migrateReset.d.ts","sourceRoot":"","sources":["../src/migrateReset.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAI9C;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEvE"}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
/* eslint-disable no-restricted-syntax, no-await-in-loop */ "use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "migrateReset", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return migrateReset;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _database = require("payload/database");
|
12
|
+
const _migrationTableExists = require("./utilities/migrationTableExists");
|
13
|
+
async function migrateReset() {
|
14
|
+
const { payload } = this;
|
15
|
+
const migrationFiles = await (0, _database.readMigrationFiles)({
|
16
|
+
payload
|
17
|
+
});
|
18
|
+
const { existingMigrations } = await (0, _database.getMigrations)({
|
19
|
+
payload
|
20
|
+
});
|
21
|
+
if (!existingMigrations?.length) {
|
22
|
+
payload.logger.info({
|
23
|
+
msg: 'No migrations to reset.'
|
24
|
+
});
|
25
|
+
return;
|
26
|
+
}
|
27
|
+
// Rollback all migrations in order
|
28
|
+
for (const migration of existingMigrations){
|
29
|
+
let transactionID;
|
30
|
+
const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
|
31
|
+
try {
|
32
|
+
if (!migrationFile) {
|
33
|
+
throw new Error(`Migration ${migration.name} not found locally.`);
|
34
|
+
}
|
35
|
+
const start = Date.now();
|
36
|
+
payload.logger.info({
|
37
|
+
msg: `Migrating down: ${migrationFile.name}`
|
38
|
+
});
|
39
|
+
transactionID = await this.beginTransaction();
|
40
|
+
await migrationFile.down({
|
41
|
+
payload
|
42
|
+
});
|
43
|
+
payload.logger.info({
|
44
|
+
msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`
|
45
|
+
});
|
46
|
+
const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
|
47
|
+
if (tableExists) {
|
48
|
+
await payload.delete({
|
49
|
+
id: migration.id,
|
50
|
+
collection: 'payload-migrations',
|
51
|
+
req: {
|
52
|
+
transactionID
|
53
|
+
}
|
54
|
+
});
|
55
|
+
}
|
56
|
+
await this.commitTransaction(transactionID);
|
57
|
+
} catch (err) {
|
58
|
+
let msg = `Error running migration ${migrationFile.name}.`;
|
59
|
+
if (err instanceof Error) msg += ` ${err.message}`;
|
60
|
+
await this.rollbackTransaction(transactionID);
|
61
|
+
payload.logger.error({
|
62
|
+
err,
|
63
|
+
msg
|
64
|
+
});
|
65
|
+
process.exit(1);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
// Delete dev migration
|
69
|
+
const tableExists = await (0, _migrationTableExists.migrationTableExists)(this.drizzle);
|
70
|
+
if (tableExists) {
|
71
|
+
try {
|
72
|
+
await payload.delete({
|
73
|
+
collection: 'payload-migrations',
|
74
|
+
where: {
|
75
|
+
batch: {
|
76
|
+
equals: -1
|
77
|
+
}
|
78
|
+
}
|
79
|
+
});
|
80
|
+
} catch (err) {
|
81
|
+
payload.logger.error({
|
82
|
+
error: err,
|
83
|
+
msg: 'Error deleting dev migration'
|
84
|
+
});
|
85
|
+
}
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9taWdyYXRlUmVzZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRNaWdyYXRpb25zLCByZWFkTWlncmF0aW9uRmlsZXMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IG1pZ3JhdGlvblRhYmxlRXhpc3RzIH0gZnJvbSAnLi91dGlsaXRpZXMvbWlncmF0aW9uVGFibGVFeGlzdHMnXG5cbi8qKlxuICogUnVuIGFsbCBtaWdyYXRlIGRvd24gZnVuY3Rpb25zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaWdyYXRlUmVzZXQodGhpczogUG9zdGdyZXNBZGFwdGVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCB9ID0gdGhpc1xuICBjb25zdCBtaWdyYXRpb25GaWxlcyA9IGF3YWl0IHJlYWRNaWdyYXRpb25GaWxlcyh7IHBheWxvYWQgfSlcblxuICBjb25zdCB7IGV4aXN0aW5nTWlncmF0aW9ucyB9ID0gYXdhaXQgZ2V0TWlncmF0aW9ucyh7IHBheWxvYWQgfSlcblxuICBpZiAoIWV4aXN0aW5nTWlncmF0aW9ucz8ubGVuZ3RoKSB7XG4gICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7IG1zZzogJ05vIG1pZ3JhdGlvbnMgdG8gcmVzZXQuJyB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gUm9sbGJhY2sgYWxsIG1pZ3JhdGlvbnMgaW4gb3JkZXJcbiAgZm9yIChjb25zdCBtaWdyYXRpb24gb2YgZXhpc3RpbmdNaWdyYXRpb25zKSB7XG4gICAgbGV0IHRyYW5zYWN0aW9uSURcblxuICAgIGNvbnN0IG1pZ3JhdGlvbkZpbGUgPSBtaWdyYXRpb25GaWxlcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG1pZ3JhdGlvbi5uYW1lKVxuICAgIHRyeSB7XG4gICAgICBpZiAoIW1pZ3JhdGlvbkZpbGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaWdyYXRpb24gJHttaWdyYXRpb24ubmFtZX0gbm90IGZvdW5kIGxvY2FsbHkuYClcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICBwYXlsb2FkLmxvZ2dlci5pbmZvKHsgbXNnOiBgTWlncmF0aW5nIGRvd246ICR7bWlncmF0aW9uRmlsZS5uYW1lfWAgfSlcbiAgICAgIHRyYW5zYWN0aW9uSUQgPSBhd2FpdCB0aGlzLmJlZ2luVHJhbnNhY3Rpb24oKVxuICAgICAgYXdhaXQgbWlncmF0aW9uRmlsZS5kb3duKHsgcGF5bG9hZCB9KVxuICAgICAgcGF5bG9hZC5sb2dnZXIuaW5mbyh7XG4gICAgICAgIG1zZzogYE1pZ3JhdGVkIGRvd246ICAke21pZ3JhdGlvbkZpbGUubmFtZX0gKCR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zKWAsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB0YWJsZUV4aXN0cyA9IGF3YWl0IG1pZ3JhdGlvblRhYmxlRXhpc3RzKHRoaXMuZHJpenpsZSlcbiAgICAgIGlmICh0YWJsZUV4aXN0cykge1xuICAgICAgICBhd2FpdCBwYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgICAgaWQ6IG1pZ3JhdGlvbi5pZCxcbiAgICAgICAgICBjb2xsZWN0aW9uOiAncGF5bG9hZC1taWdyYXRpb25zJyxcbiAgICAgICAgICByZXE6IHtcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uSUQsXG4gICAgICAgICAgfSBhcyBQYXlsb2FkUmVxdWVzdCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5jb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklEKVxuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgbGV0IG1zZyA9IGBFcnJvciBydW5uaW5nIG1pZ3JhdGlvbiAke21pZ3JhdGlvbkZpbGUubmFtZX0uYFxuXG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIG1zZyArPSBgICR7ZXJyLm1lc3NhZ2V9YFxuXG4gICAgICBhd2FpdCB0aGlzLnJvbGxiYWNrVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JRClcbiAgICAgIHBheWxvYWQubG9nZ2VyLmVycm9yKHtcbiAgICAgICAgZXJyLFxuICAgICAgICBtc2csXG4gICAgICB9KVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICB9XG5cbiAgLy8gRGVsZXRlIGRldiBtaWdyYXRpb25cblxuICBjb25zdCB0YWJsZUV4aXN0cyA9IGF3YWl0IG1pZ3JhdGlvblRhYmxlRXhpc3RzKHRoaXMuZHJpenpsZSlcbiAgaWYgKHRhYmxlRXhpc3RzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBheWxvYWQuZGVsZXRlKHtcbiAgICAgICAgY29sbGVjdGlvbjogJ3BheWxvYWQtbWlncmF0aW9ucycsXG4gICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgYmF0Y2g6IHtcbiAgICAgICAgICAgIGVxdWFsczogLTEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBwYXlsb2FkLmxvZ2dlci5lcnJvcih7IGVycm9yOiBlcnIsIG1zZzogJ0Vycm9yIGRlbGV0aW5nIGRldiBtaWdyYXRpb24nIH0pXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsibWlncmF0ZVJlc2V0IiwicGF5bG9hZCIsIm1pZ3JhdGlvbkZpbGVzIiwicmVhZE1pZ3JhdGlvbkZpbGVzIiwiZXhpc3RpbmdNaWdyYXRpb25zIiwiZ2V0TWlncmF0aW9ucyIsImxlbmd0aCIsImxvZ2dlciIsImluZm8iLCJtc2ciLCJtaWdyYXRpb24iLCJ0cmFuc2FjdGlvbklEIiwibWlncmF0aW9uRmlsZSIsImZpbmQiLCJtIiwibmFtZSIsIkVycm9yIiwic3RhcnQiLCJEYXRlIiwibm93IiwiYmVnaW5UcmFuc2FjdGlvbiIsImRvd24iLCJ0YWJsZUV4aXN0cyIsIm1pZ3JhdGlvblRhYmxlRXhpc3RzIiwiZHJpenpsZSIsImRlbGV0ZSIsImlkIiwiY29sbGVjdGlvbiIsInJlcSIsImNvbW1pdFRyYW5zYWN0aW9uIiwiZXJyIiwibWVzc2FnZSIsInJvbGxiYWNrVHJhbnNhY3Rpb24iLCJlcnJvciIsInByb2Nlc3MiLCJleGl0Iiwid2hlcmUiLCJiYXRjaCIsImVxdWFscyJdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEOzs7OytCQVluQ0E7OztlQUFBQTs7OzBCQVQ0QjtzQ0FJYjtBQUs5QixlQUFlQTtJQUNwQixNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHLElBQUk7SUFDeEIsTUFBTUMsaUJBQWlCLE1BQU1DLElBQUFBLDRCQUFrQixFQUFDO1FBQUVGO0lBQVE7SUFFMUQsTUFBTSxFQUFFRyxrQkFBa0IsRUFBRSxHQUFHLE1BQU1DLElBQUFBLHVCQUFhLEVBQUM7UUFBRUo7SUFBUTtJQUU3RCxJQUFJLENBQUNHLG9CQUFvQkUsUUFBUTtRQUMvQkwsUUFBUU0sTUFBTSxDQUFDQyxJQUFJLENBQUM7WUFBRUMsS0FBSztRQUEwQjtRQUNyRDtJQUNGO0lBRUEsbUNBQW1DO0lBQ25DLEtBQUssTUFBTUMsYUFBYU4sbUJBQW9CO1FBQzFDLElBQUlPO1FBRUosTUFBTUMsZ0JBQWdCVixlQUFlVyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsSUFBSSxLQUFLTCxVQUFVSyxJQUFJO1FBQzFFLElBQUk7WUFDRixJQUFJLENBQUNILGVBQWU7Z0JBQ2xCLE1BQU0sSUFBSUksTUFBTSxDQUFDLFVBQVUsRUFBRU4sVUFBVUssSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xFO1lBRUEsTUFBTUUsUUFBUUMsS0FBS0MsR0FBRztZQUN0QmxCLFFBQVFNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUFFQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUVHLGNBQWNHLElBQUksQ0FBQyxDQUFDO1lBQUM7WUFDbkVKLGdCQUFnQixNQUFNLElBQUksQ0FBQ1MsZ0JBQWdCO1lBQzNDLE1BQU1SLGNBQWNTLElBQUksQ0FBQztnQkFBRXBCO1lBQVE7WUFDbkNBLFFBQVFNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDO2dCQUNsQkMsS0FBSyxDQUFDLGdCQUFnQixFQUFFRyxjQUFjRyxJQUFJLENBQUMsRUFBRSxFQUFFRyxLQUFLQyxHQUFHLEtBQUtGLE1BQU0sR0FBRyxDQUFDO1lBQ3hFO1lBRUEsTUFBTUssY0FBYyxNQUFNQyxJQUFBQSwwQ0FBb0IsRUFBQyxJQUFJLENBQUNDLE9BQU87WUFDM0QsSUFBSUYsYUFBYTtnQkFDZixNQUFNckIsUUFBUXdCLE1BQU0sQ0FBQztvQkFDbkJDLElBQUloQixVQUFVZ0IsRUFBRTtvQkFDaEJDLFlBQVk7b0JBQ1pDLEtBQUs7d0JBQ0hqQjtvQkFDRjtnQkFDRjtZQUNGO1lBRUEsTUFBTSxJQUFJLENBQUNrQixpQkFBaUIsQ0FBQ2xCO1FBQy9CLEVBQUUsT0FBT21CLEtBQWM7WUFDckIsSUFBSXJCLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRUcsY0FBY0csSUFBSSxDQUFDLENBQUMsQ0FBQztZQUUxRCxJQUFJZSxlQUFlZCxPQUFPUCxPQUFPLENBQUMsQ0FBQyxFQUFFcUIsSUFBSUMsT0FBTyxDQUFDLENBQUM7WUFFbEQsTUFBTSxJQUFJLENBQUNDLG1CQUFtQixDQUFDckI7WUFDL0JWLFFBQVFNLE1BQU0sQ0FBQzBCLEtBQUssQ0FBQztnQkFDbkJIO2dCQUNBckI7WUFDRjtZQUNBeUIsUUFBUUMsSUFBSSxDQUFDO1FBQ2Y7SUFDRjtJQUVBLHVCQUF1QjtJQUV2QixNQUFNYixjQUFjLE1BQU1DLElBQUFBLDBDQUFvQixFQUFDLElBQUksQ0FBQ0MsT0FBTztJQUMzRCxJQUFJRixhQUFhO1FBQ2YsSUFBSTtZQUNGLE1BQU1yQixRQUFRd0IsTUFBTSxDQUFDO2dCQUNuQkUsWUFBWTtnQkFDWlMsT0FBTztvQkFDTEMsT0FBTzt3QkFDTEMsUUFBUSxDQUFDO29CQUNYO2dCQUNGO1lBQ0Y7UUFDRixFQUFFLE9BQU9SLEtBQWM7WUFDckI3QixRQUFRTSxNQUFNLENBQUMwQixLQUFLLENBQUM7Z0JBQUVBLE9BQU9IO2dCQUFLckIsS0FBSztZQUErQjtRQUN6RTtJQUNGO0FBQ0YifQ==
|