@balena/pinejs 14.44.0-linear-runtime-migrator-e15bea04e85fb013aeed7d4770052b51747a619c → 15.0.0-delete-state-default-user-permissions-ba0732a0c5d0da9d1d5be818cb08cc898e86ebe3
Sign up to get free protection for your applications and to get access to all the features.
- package/.versionbot/CHANGELOG.yml +24 -45
- package/CHANGELOG.md +8 -6
- package/VERSION +1 -1
- package/docs/Migrations.md +1 -101
- package/out/config-loader/config-loader.d.ts +4 -2
- package/out/config-loader/config-loader.js +20 -35
- package/out/config-loader/config-loader.js.map +1 -1
- package/out/config-loader/env.d.ts +0 -3
- package/out/config-loader/env.js +0 -3
- package/out/config-loader/env.js.map +1 -1
- package/out/migrator/migrations.sbvr +0 -66
- package/out/migrator/migrator.d.ts +17 -0
- package/out/migrator/migrator.js +185 -0
- package/out/migrator/migrator.js.map +1 -0
- package/out/sbvr-api/sbvr-utils.d.ts +1 -3
- package/out/sbvr-api/sbvr-utils.js +4 -13
- package/out/sbvr-api/sbvr-utils.js.map +1 -1
- package/out/server-glue/module.d.ts +2 -2
- package/out/server-glue/module.js +1 -2
- package/out/server-glue/module.js.map +1 -1
- package/package.json +3 -3
- package/src/config-loader/config-loader.ts +26 -73
- package/src/config-loader/env.ts +0 -3
- package/src/migrator/migrations.sbvr +0 -66
- package/src/migrator/migrator.ts +278 -0
- package/src/sbvr-api/sbvr-utils.ts +3 -18
- package/src/server-glue/module.ts +2 -3
- package/out/migrator/async.d.ts +0 -6
- package/out/migrator/async.js +0 -160
- package/out/migrator/async.js.map +0 -1
- package/out/migrator/sync.d.ts +0 -9
- package/out/migrator/sync.js +0 -126
- package/out/migrator/sync.js.map +0 -1
- package/out/migrator/utils.d.ts +0 -56
- package/out/migrator/utils.js +0 -187
- package/out/migrator/utils.js.map +0 -1
- package/src/migrator/async.ts +0 -279
- package/src/migrator/sync.ts +0 -177
- package/src/migrator/utils.ts +0 -296
package/out/migrator/async.js
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.run = void 0;
|
4
|
-
const _ = require("lodash");
|
5
|
-
const sbvrUtils = require("../sbvr-api/sbvr-utils");
|
6
|
-
const utils_1 = require("./utils");
|
7
|
-
const run = async (model) => {
|
8
|
-
const { migrations } = model;
|
9
|
-
if (migrations == null ||
|
10
|
-
_.isEmpty(migrations) ||
|
11
|
-
migrations[utils_1.MigrationCategories.async] === undefined) {
|
12
|
-
return;
|
13
|
-
}
|
14
|
-
let runMigrations = {};
|
15
|
-
for (const [key, value] of Object.entries(migrations)) {
|
16
|
-
if (key === utils_1.MigrationCategories.async && value instanceof Object) {
|
17
|
-
runMigrations = { ...runMigrations, ...value };
|
18
|
-
}
|
19
|
-
}
|
20
|
-
await $run(model, runMigrations);
|
21
|
-
};
|
22
|
-
exports.run = run;
|
23
|
-
const $run = async (model, migrations) => {
|
24
|
-
var _a, _b, _c, _d;
|
25
|
-
const modelName = model.apiRoot;
|
26
|
-
let exists;
|
27
|
-
await sbvrUtils.db.transaction(async (tx) => {
|
28
|
-
var _a, _b;
|
29
|
-
exists = await (0, utils_1.checkModelAlreadyExists)(tx, modelName);
|
30
|
-
if (!exists) {
|
31
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.info) !== null && _b !== void 0 ? _b : console.info)('First time model has executed, skipping migrations');
|
32
|
-
return await (0, utils_1.setExecutedMigrations)(tx, modelName, Object.keys(migrations));
|
33
|
-
}
|
34
|
-
});
|
35
|
-
if (!exists) {
|
36
|
-
return;
|
37
|
-
}
|
38
|
-
let pendingMigrations = [];
|
39
|
-
await sbvrUtils.db.transaction(async (tx) => {
|
40
|
-
const executedMigrations = await (0, utils_1.getExecutedMigrations)(tx, modelName);
|
41
|
-
pendingMigrations = filterAndSortPendingAsyncMigrations(migrations, executedMigrations);
|
42
|
-
});
|
43
|
-
for (const [key, migration] of pendingMigrations) {
|
44
|
-
const initMigrationState = {
|
45
|
-
migration_key: key,
|
46
|
-
start_time: new Date(Date.now()),
|
47
|
-
last_run_time: new Date(Date.now()),
|
48
|
-
run_counter: 0,
|
49
|
-
migrated_rows: 0,
|
50
|
-
error_counter: 0,
|
51
|
-
error_threshold: utils_1.migratorEnv.asyncMigrationDefaultErrorThreshold,
|
52
|
-
delayMS: utils_1.migratorEnv.asyncMigrationDefaultDelayMS,
|
53
|
-
backoffDelayMS: utils_1.migratorEnv.asyncMigrationDefaultBackoffDelayMS,
|
54
|
-
converged_time: undefined,
|
55
|
-
last_error_message: undefined,
|
56
|
-
is_backoff: false,
|
57
|
-
should_stop: false,
|
58
|
-
};
|
59
|
-
let asyncRunnerMigratorFn;
|
60
|
-
if (typeof migration === 'object') {
|
61
|
-
if (migration.fn && typeof migration.fn === 'function') {
|
62
|
-
asyncRunnerMigratorFn = async (tx) => (await migration.fn(tx, sbvrUtils))
|
63
|
-
.rowsAffected;
|
64
|
-
}
|
65
|
-
else if (migration.sql && typeof migration.sql === 'string') {
|
66
|
-
asyncRunnerMigratorFn = async (tx) => (await tx.executeSql(migration.sql)).rowsAffected;
|
67
|
-
}
|
68
|
-
else {
|
69
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.error) !== null && _b !== void 0 ? _b : console.error)(`Invalid migration object: ${JSON.stringify(migration, null, 2)}`);
|
70
|
-
continue;
|
71
|
-
}
|
72
|
-
initMigrationState.backoffDelayMS =
|
73
|
-
migration.backoffDelayMS ||
|
74
|
-
utils_1.migratorEnv.asyncMigrationDefaultBackoffDelayMS;
|
75
|
-
initMigrationState.delayMS =
|
76
|
-
migration.delayMS || utils_1.migratorEnv.asyncMigrationDefaultDelayMS;
|
77
|
-
initMigrationState.error_threshold =
|
78
|
-
migration.errorThreshold ||
|
79
|
-
utils_1.migratorEnv.asyncMigrationDefaultErrorThreshold;
|
80
|
-
}
|
81
|
-
else if (typeof migration === 'string') {
|
82
|
-
asyncRunnerMigratorFn = async (tx) => (await tx.executeSql(migration)).rowsAffected;
|
83
|
-
}
|
84
|
-
else {
|
85
|
-
((_d = (_c = sbvrUtils.api.migrations) === null || _c === void 0 ? void 0 : _c.logger.error) !== null && _d !== void 0 ? _d : console.error)(`Invalid async migration object: ${JSON.stringify(migration, null, 2)}`);
|
86
|
-
continue;
|
87
|
-
}
|
88
|
-
await sbvrUtils.db.transaction(async (tx) => (0, utils_1.initMigrationStatus)(tx, initMigrationState));
|
89
|
-
const asyncRunner = async () => {
|
90
|
-
await sbvrUtils.db.transaction(async (tx) => {
|
91
|
-
await (0, utils_1.lockMigrations)(tx, modelName, async () => {
|
92
|
-
var _a, _b, _c, _d;
|
93
|
-
const migrationState = await (0, utils_1.readMigrationStatus)(tx, key);
|
94
|
-
if (!migrationState || migrationState.should_stop === true) {
|
95
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.info) !== null && _b !== void 0 ? _b : console.info)(`stopping async migration: ${key}`);
|
96
|
-
clearInterval(asyncScheduler);
|
97
|
-
return;
|
98
|
-
}
|
99
|
-
try {
|
100
|
-
clearInterval(asyncScheduler);
|
101
|
-
if (migrationState.last_run_time) {
|
102
|
-
const durationSinceLastRun = Date.now().valueOf() - migrationState.last_run_time.valueOf();
|
103
|
-
if ((migrationState.is_backoff &&
|
104
|
-
durationSinceLastRun < migrationState.backoffDelayMS) ||
|
105
|
-
(!migrationState.is_backoff &&
|
106
|
-
durationSinceLastRun < migrationState.delayMS)) {
|
107
|
-
return;
|
108
|
-
}
|
109
|
-
}
|
110
|
-
migrationState.last_run_time = new Date(Date.now());
|
111
|
-
migrationState.run_counter += 1;
|
112
|
-
let migratedRows = 0;
|
113
|
-
await sbvrUtils.db.transaction(async (migrationTx) => {
|
114
|
-
migratedRows = (await (asyncRunnerMigratorFn === null || asyncRunnerMigratorFn === void 0 ? void 0 : asyncRunnerMigratorFn(migrationTx))) || 0;
|
115
|
-
});
|
116
|
-
migrationState.migrated_rows += migratedRows;
|
117
|
-
if (migratedRows === 0) {
|
118
|
-
migrationState.is_backoff = true;
|
119
|
-
if (!migrationState.converged_time) {
|
120
|
-
migrationState.converged_time = new Date(Date.now());
|
121
|
-
}
|
122
|
-
}
|
123
|
-
else {
|
124
|
-
migrationState.is_backoff = false;
|
125
|
-
}
|
126
|
-
}
|
127
|
-
catch (err) {
|
128
|
-
migrationState.error_counter++;
|
129
|
-
if (migrationState.error_counter % migrationState.error_threshold ===
|
130
|
-
0) {
|
131
|
-
migrationState.last_error_message = `${err.name} ${err.message}`;
|
132
|
-
((_d = (_c = sbvrUtils.api.migrations) === null || _c === void 0 ? void 0 : _c.logger.error) !== null && _d !== void 0 ? _d : console.error)(`${key}: ${err.name} ${err.message}`);
|
133
|
-
migrationState.is_backoff = true;
|
134
|
-
}
|
135
|
-
}
|
136
|
-
finally {
|
137
|
-
if (migrationState.is_backoff) {
|
138
|
-
asyncScheduler = setInterval(asyncRunner, migrationState.backoffDelayMS);
|
139
|
-
}
|
140
|
-
else {
|
141
|
-
asyncScheduler = setInterval(asyncRunner, migrationState.delayMS);
|
142
|
-
}
|
143
|
-
await (0, utils_1.updateMigrationStatus)(tx, migrationState);
|
144
|
-
}
|
145
|
-
});
|
146
|
-
});
|
147
|
-
};
|
148
|
-
let asyncScheduler = setInterval(asyncRunner, initMigrationState.delayMS);
|
149
|
-
}
|
150
|
-
};
|
151
|
-
const filterAndSortPendingAsyncMigrations = (migrations, executedMigrations) => {
|
152
|
-
var _a;
|
153
|
-
const latestExecutedMigration = (_a = executedMigrations.sort().pop()) !== null && _a !== void 0 ? _a : '';
|
154
|
-
return _(migrations).omit(executedMigrations)
|
155
|
-
.toPairs()
|
156
|
-
.filter(([migrationKey]) => migrationKey > latestExecutedMigration)
|
157
|
-
.sortBy(([migrationKey]) => migrationKey)
|
158
|
-
.value();
|
159
|
-
};
|
160
|
-
//# sourceMappingURL=async.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/migrator/async.ts"],"names":[],"mappings":"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"}
|
package/out/migrator/sync.d.ts
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
import type { Tx } from '../database-layer/db';
|
2
|
-
import type { Config, Model } from '../config-loader/config-loader';
|
3
|
-
declare type ApiRootModel = Model & {
|
4
|
-
apiRoot: string;
|
5
|
-
};
|
6
|
-
export declare const postRun: (tx: Tx, model: ApiRootModel) => Promise<void>;
|
7
|
-
export declare const run: (tx: Tx, model: ApiRootModel) => Promise<void>;
|
8
|
-
export declare const config: Config;
|
9
|
-
export {};
|
package/out/migrator/sync.js
DELETED
@@ -1,126 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.config = exports.run = exports.postRun = void 0;
|
4
|
-
const utils_1 = require("./utils");
|
5
|
-
const _ = require("lodash");
|
6
|
-
const sbvrUtils = require("../sbvr-api/sbvr-utils");
|
7
|
-
const postRun = async (tx, model) => {
|
8
|
-
var _a, _b;
|
9
|
-
const { initSql } = model;
|
10
|
-
if (initSql == null) {
|
11
|
-
return;
|
12
|
-
}
|
13
|
-
const modelName = model.apiRoot;
|
14
|
-
const exists = await (0, utils_1.checkModelAlreadyExists)(tx, modelName);
|
15
|
-
if (!exists) {
|
16
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.info) !== null && _b !== void 0 ? _b : console.info)('First time executing, running init script');
|
17
|
-
await (0, utils_1.lockMigrations)(tx, modelName, async () => {
|
18
|
-
var _a, _b;
|
19
|
-
try {
|
20
|
-
await tx.executeSql(initSql);
|
21
|
-
}
|
22
|
-
catch (err) {
|
23
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.error) !== null && _b !== void 0 ? _b : console.error)(`postRun locked sql execution error ${err} `);
|
24
|
-
throw new utils_1.MigrationError(err);
|
25
|
-
}
|
26
|
-
});
|
27
|
-
}
|
28
|
-
};
|
29
|
-
exports.postRun = postRun;
|
30
|
-
const run = async (tx, model) => {
|
31
|
-
const { migrations } = model;
|
32
|
-
if (migrations == null ||
|
33
|
-
_.isEmpty(migrations) ||
|
34
|
-
migrations[utils_1.defaultMigrationCategory] === undefined) {
|
35
|
-
return;
|
36
|
-
}
|
37
|
-
let runMigrations = {};
|
38
|
-
for (const [key, value] of Object.entries(migrations)) {
|
39
|
-
if (key === utils_1.defaultMigrationCategory && value instanceof Object) {
|
40
|
-
runMigrations = { ...runMigrations, ...value };
|
41
|
-
}
|
42
|
-
else if (!(key in utils_1.MigrationCategories)) {
|
43
|
-
runMigrations = { ...runMigrations, ...{ [key]: value } };
|
44
|
-
}
|
45
|
-
}
|
46
|
-
return $run(tx, model, runMigrations);
|
47
|
-
};
|
48
|
-
exports.run = run;
|
49
|
-
const $run = async (tx, model, migrations) => {
|
50
|
-
var _a, _b;
|
51
|
-
const modelName = model.apiRoot;
|
52
|
-
const exists = await (0, utils_1.checkModelAlreadyExists)(tx, modelName);
|
53
|
-
if (!exists) {
|
54
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.info) !== null && _b !== void 0 ? _b : console.info)('First time model has executed, skipping migrations');
|
55
|
-
return await (0, utils_1.setExecutedMigrations)(tx, modelName, Object.keys(migrations));
|
56
|
-
}
|
57
|
-
await (0, utils_1.lockMigrations)(tx, modelName, async () => {
|
58
|
-
var _a, _b;
|
59
|
-
try {
|
60
|
-
const executedMigrations = await (0, utils_1.getExecutedMigrations)(tx, modelName);
|
61
|
-
const pendingMigrations = filterAndSortPendingMigrations(migrations, executedMigrations);
|
62
|
-
if (pendingMigrations.length === 0) {
|
63
|
-
return;
|
64
|
-
}
|
65
|
-
const newlyExecutedMigrations = await executeMigrations(tx, pendingMigrations);
|
66
|
-
await (0, utils_1.setExecutedMigrations)(tx, modelName, [
|
67
|
-
...executedMigrations,
|
68
|
-
...newlyExecutedMigrations,
|
69
|
-
]);
|
70
|
-
}
|
71
|
-
catch (err) {
|
72
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.error) !== null && _b !== void 0 ? _b : console.error)(`$run executedMigrations error ${err}`);
|
73
|
-
throw new utils_1.MigrationError(err);
|
74
|
-
}
|
75
|
-
});
|
76
|
-
};
|
77
|
-
const filterAndSortPendingMigrations = (migrations, executedMigrations) => _(migrations).omit(executedMigrations)
|
78
|
-
.toPairs()
|
79
|
-
.sortBy(([migrationKey]) => migrationKey)
|
80
|
-
.value();
|
81
|
-
const executeMigrations = async (tx, migrations = []) => {
|
82
|
-
var _a, _b;
|
83
|
-
try {
|
84
|
-
for (const migration of migrations) {
|
85
|
-
await executeMigration(tx, migration);
|
86
|
-
}
|
87
|
-
}
|
88
|
-
catch (err) {
|
89
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.error) !== null && _b !== void 0 ? _b : console.error)('Error while executing migrations, rolled back');
|
90
|
-
throw new utils_1.MigrationError(err);
|
91
|
-
}
|
92
|
-
return migrations.map(([migrationKey]) => migrationKey);
|
93
|
-
};
|
94
|
-
const executeMigration = async (tx, [key, migration]) => {
|
95
|
-
var _a, _b;
|
96
|
-
((_b = (_a = sbvrUtils.api.migrations) === null || _a === void 0 ? void 0 : _a.logger.info) !== null && _b !== void 0 ? _b : console.info)(`Running migration ${JSON.stringify(key)}`);
|
97
|
-
if (typeof migration === 'function') {
|
98
|
-
await migration(tx, sbvrUtils);
|
99
|
-
}
|
100
|
-
else if (typeof migration === 'string') {
|
101
|
-
await tx.executeSql(migration);
|
102
|
-
}
|
103
|
-
else {
|
104
|
-
throw new utils_1.MigrationError(`Invalid migration type: ${typeof migration}`);
|
105
|
-
}
|
106
|
-
};
|
107
|
-
exports.config = {
|
108
|
-
models: [
|
109
|
-
{
|
110
|
-
modelName: 'migrations',
|
111
|
-
apiRoot: 'migrations',
|
112
|
-
modelText: utils_1.modelText,
|
113
|
-
migrations: {
|
114
|
-
'11.0.0-modified-at': `
|
115
|
-
ALTER TABLE "migration"
|
116
|
-
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
117
|
-
`,
|
118
|
-
'11.0.1-modified-at': `
|
119
|
-
ALTER TABLE "migration lock"
|
120
|
-
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
|
121
|
-
`,
|
122
|
-
},
|
123
|
-
},
|
124
|
-
],
|
125
|
-
};
|
126
|
-
//# sourceMappingURL=sync.js.map
|
package/out/migrator/sync.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/migrator/sync.ts"],"names":[],"mappings":"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"}
|
package/out/migrator/utils.d.ts
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
import type { Result, Tx } from '../database-layer/db';
|
2
|
-
import type { Resolvable } from '../sbvr-api/common-types';
|
3
|
-
import { TypedError } from 'typed-error';
|
4
|
-
export { migrator as migratorEnv } from '../config-loader/env';
|
5
|
-
export declare const modelText: any;
|
6
|
-
import * as sbvrUtils from '../sbvr-api/sbvr-utils';
|
7
|
-
export declare const defaultMigrationCategory: MigrationCategory;
|
8
|
-
export declare enum MigrationCategories {
|
9
|
-
'sync' = "sync",
|
10
|
-
'async' = "async"
|
11
|
-
}
|
12
|
-
export declare type MigrationCategory = 'sync';
|
13
|
-
export declare type CategorizedMigrations = {
|
14
|
-
[key in MigrationCategories]: Migrations;
|
15
|
-
};
|
16
|
-
declare type SbvrUtils = typeof sbvrUtils;
|
17
|
-
export declare type MigrationTuple = [string, Migration];
|
18
|
-
export declare type MigrationFn = (tx: Tx, sbvrUtils: SbvrUtils) => Resolvable<void>;
|
19
|
-
export declare type RunnableMigrations = {
|
20
|
-
[key: string]: Migration;
|
21
|
-
};
|
22
|
-
export declare type Migrations = CategorizedMigrations | RunnableMigrations;
|
23
|
-
export declare type AsyncMigrationFn = (tx: Tx, sbvrUtils: SbvrUtils) => Resolvable<Result>;
|
24
|
-
export declare type AsyncMigration = {
|
25
|
-
fn?: AsyncMigrationFn | undefined;
|
26
|
-
sql?: string | undefined;
|
27
|
-
delayMS?: number | undefined;
|
28
|
-
backoffDelayMS?: number | undefined;
|
29
|
-
errorThreshold?: number | undefined;
|
30
|
-
};
|
31
|
-
export declare type Migration = string | MigrationFn | AsyncMigration;
|
32
|
-
export declare class MigrationError extends TypedError {
|
33
|
-
}
|
34
|
-
export declare type MigrationStatus = {
|
35
|
-
migration_key: string;
|
36
|
-
start_time: Date;
|
37
|
-
last_run_time: Date;
|
38
|
-
run_counter: number;
|
39
|
-
migrated_rows: number;
|
40
|
-
error_counter: number;
|
41
|
-
error_threshold: number;
|
42
|
-
delayMS: number;
|
43
|
-
backoffDelayMS: number;
|
44
|
-
converged_time: Date | undefined;
|
45
|
-
last_error_message: string | undefined;
|
46
|
-
is_backoff: boolean;
|
47
|
-
should_stop: boolean;
|
48
|
-
};
|
49
|
-
export declare const binds: (strings: TemplateStringsArray, ...bindNums: number[]) => string;
|
50
|
-
export declare const lockMigrations: <T>(tx: Tx, modelName: string, fn: () => Promise<T>) => Promise<T>;
|
51
|
-
export declare const checkModelAlreadyExists: (tx: Tx, modelName: string) => Promise<boolean>;
|
52
|
-
export declare const setExecutedMigrations: (tx: Tx, modelName: string, executedMigrations: string[]) => Promise<void>;
|
53
|
-
export declare const getExecutedMigrations: (tx: Tx, modelName: string) => Promise<string[]>;
|
54
|
-
export declare const initMigrationStatus: (tx: Tx, migrationStatus: MigrationStatus) => Promise<Result | undefined>;
|
55
|
-
export declare const updateMigrationStatus: (tx: Tx, migrationStatus: MigrationStatus) => Promise<Result | undefined>;
|
56
|
-
export declare const readMigrationStatus: (tx: Tx, migrationKey: string) => Promise<MigrationStatus | undefined>;
|
package/out/migrator/utils.js
DELETED
@@ -1,187 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.readMigrationStatus = exports.updateMigrationStatus = exports.initMigrationStatus = exports.getExecutedMigrations = exports.setExecutedMigrations = exports.checkModelAlreadyExists = exports.lockMigrations = exports.binds = exports.MigrationError = exports.MigrationCategories = exports.defaultMigrationCategory = exports.modelText = exports.migratorEnv = void 0;
|
4
|
-
const typed_error_1 = require("typed-error");
|
5
|
-
const env_1 = require("../config-loader/env");
|
6
|
-
var env_2 = require("../config-loader/env");
|
7
|
-
Object.defineProperty(exports, "migratorEnv", { enumerable: true, get: function () { return env_2.migrator; } });
|
8
|
-
const control_flow_1 = require("../sbvr-api/control-flow");
|
9
|
-
exports.modelText = require('./migrations.sbvr');
|
10
|
-
const sbvrUtils = require("../sbvr-api/sbvr-utils");
|
11
|
-
exports.defaultMigrationCategory = 'sync';
|
12
|
-
var MigrationCategories;
|
13
|
-
(function (MigrationCategories) {
|
14
|
-
MigrationCategories["sync"] = "sync";
|
15
|
-
MigrationCategories["async"] = "async";
|
16
|
-
})(MigrationCategories = exports.MigrationCategories || (exports.MigrationCategories = {}));
|
17
|
-
class MigrationError extends typed_error_1.TypedError {
|
18
|
-
}
|
19
|
-
exports.MigrationError = MigrationError;
|
20
|
-
const binds = (strings, ...bindNums) => strings
|
21
|
-
.map((str, i) => {
|
22
|
-
if (i === bindNums.length) {
|
23
|
-
return str;
|
24
|
-
}
|
25
|
-
if (i + 1 !== bindNums[i]) {
|
26
|
-
throw new SyntaxError('Migration sql binds must be sequential');
|
27
|
-
}
|
28
|
-
if (sbvrUtils.db.engine === "postgres") {
|
29
|
-
return str + `$${bindNums[i]}`;
|
30
|
-
}
|
31
|
-
return str + `?`;
|
32
|
-
})
|
33
|
-
.join('');
|
34
|
-
exports.binds = binds;
|
35
|
-
const lockMigrations = async (tx, modelName, fn) => {
|
36
|
-
try {
|
37
|
-
await tx.executeSql((0, exports.binds) `
|
38
|
-
DELETE FROM "migration lock"
|
39
|
-
WHERE "model name" = ${1}
|
40
|
-
AND "created at" < ${2}`, [modelName, new Date(Date.now() - env_1.migrator.lockTimeout)]);
|
41
|
-
await tx.executeSql((0, exports.binds) `
|
42
|
-
INSERT INTO "migration lock" ("model name")
|
43
|
-
VALUES (${1})`, [modelName]);
|
44
|
-
}
|
45
|
-
catch (err) {
|
46
|
-
await (0, control_flow_1.delay)(env_1.migrator.lockFailDelay);
|
47
|
-
throw err;
|
48
|
-
}
|
49
|
-
try {
|
50
|
-
return await fn();
|
51
|
-
}
|
52
|
-
finally {
|
53
|
-
try {
|
54
|
-
await tx.executeSql((0, exports.binds) `
|
55
|
-
DELETE FROM "migration lock"
|
56
|
-
WHERE "model name" = ${1}`, [modelName]);
|
57
|
-
}
|
58
|
-
catch (_a) {
|
59
|
-
}
|
60
|
-
}
|
61
|
-
};
|
62
|
-
exports.lockMigrations = lockMigrations;
|
63
|
-
const checkModelAlreadyExists = async (tx, modelName) => {
|
64
|
-
const result = await tx.tableList("name = 'migration'");
|
65
|
-
if (result.rows.length === 0) {
|
66
|
-
return false;
|
67
|
-
}
|
68
|
-
const { rows } = await tx.executeSql((0, exports.binds) `
|
69
|
-
SELECT 1
|
70
|
-
FROM "model"
|
71
|
-
WHERE "model"."is of-vocabulary" = ${1}
|
72
|
-
LIMIT 1`, [modelName]);
|
73
|
-
return rows.length > 0;
|
74
|
-
};
|
75
|
-
exports.checkModelAlreadyExists = checkModelAlreadyExists;
|
76
|
-
const setExecutedMigrations = async (tx, modelName, executedMigrations) => {
|
77
|
-
const stringifiedMigrations = JSON.stringify(executedMigrations);
|
78
|
-
const result = await tx.tableList("name = 'migration'");
|
79
|
-
if (result.rows.length === 0) {
|
80
|
-
return;
|
81
|
-
}
|
82
|
-
const { rowsAffected } = await tx.executeSql((0, exports.binds) `
|
83
|
-
UPDATE "migration"
|
84
|
-
SET "model name" = ${1},
|
85
|
-
"executed migrations" = ${2}
|
86
|
-
WHERE "migration"."model name" = ${3}`, [modelName, stringifiedMigrations, modelName]);
|
87
|
-
if (rowsAffected === 0) {
|
88
|
-
await tx.executeSql((0, exports.binds) `
|
89
|
-
INSERT INTO "migration" ("model name", "executed migrations")
|
90
|
-
VALUES (${1}, ${2})`, [modelName, stringifiedMigrations]);
|
91
|
-
}
|
92
|
-
};
|
93
|
-
exports.setExecutedMigrations = setExecutedMigrations;
|
94
|
-
const getExecutedMigrations = async (tx, modelName) => {
|
95
|
-
const { rows } = await tx.executeSql((0, exports.binds) `
|
96
|
-
SELECT "migration"."executed migrations" AS "executed_migrations"
|
97
|
-
FROM "migration"
|
98
|
-
WHERE "migration"."model name" = ${1}`, [modelName]);
|
99
|
-
const data = rows[0];
|
100
|
-
if (data == null) {
|
101
|
-
return [];
|
102
|
-
}
|
103
|
-
return JSON.parse(data.executed_migrations);
|
104
|
-
};
|
105
|
-
exports.getExecutedMigrations = getExecutedMigrations;
|
106
|
-
const initMigrationStatus = async (tx, migrationStatus) => {
|
107
|
-
try {
|
108
|
-
const result = await tx.executeSql((0, exports.binds) `
|
109
|
-
INSERT INTO "migration status" ("migration key", "start time", "delayMS", "backoffDelayMS", "is backoff", "error threshold", "should stop")
|
110
|
-
VALUES (${1}, ${2}, ${3}, ${4}, ${5}, ${6}, ${7});
|
111
|
-
`, [
|
112
|
-
migrationStatus['migration_key'],
|
113
|
-
migrationStatus['start_time'],
|
114
|
-
migrationStatus['delayMS'],
|
115
|
-
migrationStatus['backoffDelayMS'],
|
116
|
-
migrationStatus['is_backoff'] === true ? 1 : 0,
|
117
|
-
migrationStatus['error_threshold'],
|
118
|
-
migrationStatus['should_stop'] === true ? 1 : 0,
|
119
|
-
]);
|
120
|
-
return result;
|
121
|
-
}
|
122
|
-
catch (err) {
|
123
|
-
}
|
124
|
-
};
|
125
|
-
exports.initMigrationStatus = initMigrationStatus;
|
126
|
-
const updateMigrationStatus = async (tx, migrationStatus) => {
|
127
|
-
try {
|
128
|
-
return await tx.executeSql((0, exports.binds) `
|
129
|
-
UPDATE "migration status"
|
130
|
-
SET
|
131
|
-
"run counter" = ${1},
|
132
|
-
"last run time" = ${2},
|
133
|
-
"migrated rows" = ${3},
|
134
|
-
"error counter" = ${4},
|
135
|
-
"converged time" = ${5},
|
136
|
-
"last error message" = ${6},
|
137
|
-
"is backoff" = ${7},
|
138
|
-
"should stop" = ${8}
|
139
|
-
WHERE "migration status"."migration key" = ${9};`, [
|
140
|
-
migrationStatus['run_counter'],
|
141
|
-
migrationStatus['last_run_time'],
|
142
|
-
migrationStatus['migrated_rows'],
|
143
|
-
migrationStatus['error_counter'],
|
144
|
-
migrationStatus['converged_time'],
|
145
|
-
migrationStatus['last_error_message'],
|
146
|
-
migrationStatus['is_backoff'] === true ? 1 : 0,
|
147
|
-
migrationStatus['should_stop'] === true ? 1 : 0,
|
148
|
-
migrationStatus['migration_key'],
|
149
|
-
]);
|
150
|
-
}
|
151
|
-
catch (err) {
|
152
|
-
}
|
153
|
-
};
|
154
|
-
exports.updateMigrationStatus = updateMigrationStatus;
|
155
|
-
const readMigrationStatus = async (tx, migrationKey) => {
|
156
|
-
try {
|
157
|
-
const { rows } = await tx.executeSql((0, exports.binds) `
|
158
|
-
SELECT *
|
159
|
-
FROM "migration status"
|
160
|
-
WHERE "migration status"."migration key" = ${1}
|
161
|
-
LIMIT 1;`, [migrationKey]);
|
162
|
-
const data = rows[0];
|
163
|
-
if (data == null) {
|
164
|
-
return undefined;
|
165
|
-
}
|
166
|
-
return {
|
167
|
-
migration_key: data['migration key'],
|
168
|
-
start_time: data['start time'],
|
169
|
-
last_run_time: data['last run time'],
|
170
|
-
run_counter: data['run counter'],
|
171
|
-
migrated_rows: data['migrated rows'],
|
172
|
-
error_counter: data['error counter'],
|
173
|
-
error_threshold: data['error threshold'],
|
174
|
-
delayMS: data['delayMS'],
|
175
|
-
backoffDelayMS: data['backoffDelayMS'],
|
176
|
-
converged_time: data['converged_time'],
|
177
|
-
last_error_message: data['last error message'],
|
178
|
-
is_backoff: data['is backoff'] === 1 ? true : false,
|
179
|
-
should_stop: data['should stop'] === 1 ? true : false,
|
180
|
-
};
|
181
|
-
}
|
182
|
-
catch (err) {
|
183
|
-
return undefined;
|
184
|
-
}
|
185
|
-
};
|
186
|
-
exports.readMigrationStatus = readMigrationStatus;
|
187
|
-
//# sourceMappingURL=utils.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/migrator/utils.ts"],"names":[],"mappings":"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"}
|