@proteinjs/db 1.49.1 → 1.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/generated/index.js +1 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/generated/test/index.js +1 -1
- package/dist/generated/test/index.js.map +1 -1
- package/dist/src/MigrationRunner.d.ts +96 -1
- package/dist/src/MigrationRunner.d.ts.map +1 -1
- package/dist/src/MigrationRunner.js +285 -48
- package/dist/src/MigrationRunner.js.map +1 -1
- package/dist/src/Table.d.ts +5 -1
- package/dist/src/Table.d.ts.map +1 -1
- package/dist/src/tables/MigrationTable.d.ts +26 -0
- package/dist/src/tables/MigrationTable.d.ts.map +1 -1
- package/dist/src/tables/MigrationTable.js.map +1 -1
- package/dist/test/MigrationPlan.test.d.ts +2 -0
- package/dist/test/MigrationPlan.test.d.ts.map +1 -0
- package/dist/test/MigrationPlan.test.js +448 -0
- package/dist/test/MigrationPlan.test.js.map +1 -0
- package/generated/index.ts +1 -1
- package/generated/test/index.ts +1 -1
- package/package.json +2 -2
- package/src/MigrationRunner.ts +276 -39
- package/src/Table.ts +5 -1
- package/src/tables/MigrationTable.ts +27 -0
- package/test/MigrationPlan.test.ts +337 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../generated/test/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;;;;;;;;;;;;;;AAEpC,+BAA6B;AAC7B,6BAA2B;AAC3B,iCAA+B;AAC/B,iCAA+B;AAC/B,8BAA4B;AAC5B,gCAA8B;AAG9B,4BAA4B;AAE5B,IAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../generated/test/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MigrationRunnerService } from './services/MigrationRunnerService';
|
|
2
|
-
import { Migration } from './tables/MigrationTable';
|
|
2
|
+
import { Migration, MigrationEstimate } from './tables/MigrationTable';
|
|
3
3
|
import { TableManager } from './schema/TableManager';
|
|
4
4
|
import { Service } from '@proteinjs/service';
|
|
5
5
|
export declare const getMigrationRunner: () => MigrationRunner;
|
|
@@ -35,6 +35,50 @@ export interface MigrationSeriesSummary {
|
|
|
35
35
|
/** Ordered after the failure — never started (later migrations may build on earlier ones). */
|
|
36
36
|
notAttempted: string[];
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* The plan for the pending series, read BEFORE anything runs: each pending migration's estimate
|
|
40
|
+
* ({@link Migration.estimate}) and the projection over the ones that declared seconds per unit.
|
|
41
|
+
* {@link MigrationRunner.planPendingMigrations} returns it without applying anything (the dry
|
|
42
|
+
* run); {@link MigrationRunner.runPendingMigrations} logs it before its first run. Ids appear in
|
|
43
|
+
* the order the series would run them.
|
|
44
|
+
*/
|
|
45
|
+
export interface MigrationPlan {
|
|
46
|
+
/** The migrations the series would run, in order, each with its estimate when declared. */
|
|
47
|
+
pending: MigrationPlanEntry[];
|
|
48
|
+
/** Seconds projected over the entries that declared `secondsPerUnit` — the deadline's input. */
|
|
49
|
+
projectedSeconds: number;
|
|
50
|
+
/** How many entries the projection covers. */
|
|
51
|
+
projected: number;
|
|
52
|
+
/** Ids the projection does NOT cover: no estimate declared, or no seconds per unit. */
|
|
53
|
+
unprojected: string[];
|
|
54
|
+
/** Excluded by the explicit `manual` flag. */
|
|
55
|
+
skippedManual: string[];
|
|
56
|
+
/** Already in 'success' status. */
|
|
57
|
+
alreadyApplied: string[];
|
|
58
|
+
/** Ledger rows with no source record in this build (the run stamps these retired; the plan only reports). */
|
|
59
|
+
unresolved: string[];
|
|
60
|
+
/** Rows carrying `retired: true`. */
|
|
61
|
+
retired: string[];
|
|
62
|
+
/**
|
|
63
|
+
* True when the ledger table does not exist: a database no schema sync has touched, so every
|
|
64
|
+
* declared migration runs over empty tables — the estimates are not read (nothing to count).
|
|
65
|
+
*/
|
|
66
|
+
freshDatabase: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface MigrationPlanEntry {
|
|
69
|
+
id: string;
|
|
70
|
+
description: string;
|
|
71
|
+
/**
|
|
72
|
+
* Runs during `Db.init()` before schema sync rather than in the series
|
|
73
|
+
* ({@link Migration.preSchemaSync}) — planned all the same: a deploy's deadline covers init.
|
|
74
|
+
*/
|
|
75
|
+
preSchemaSync?: boolean;
|
|
76
|
+
estimate?: MigrationEstimate;
|
|
77
|
+
/** `ceil(units × secondsPerUnit)` when the estimate declares seconds per unit. */
|
|
78
|
+
projectedSeconds?: number;
|
|
79
|
+
/** Why the entry carries no projection, in the words the plan line uses. */
|
|
80
|
+
unprojectedReason?: string;
|
|
81
|
+
}
|
|
38
82
|
export declare class MigrationRunner implements MigrationRunnerService {
|
|
39
83
|
private logger;
|
|
40
84
|
serviceMetadata: Service['serviceMetadata'];
|
|
@@ -107,6 +151,9 @@ export declare class MigrationRunner implements MigrationRunnerService {
|
|
|
107
151
|
* build — until un-retired on the Migrations page; skipped, reported as `retired`.
|
|
108
152
|
* - the FIRST failure STOPS the series (later migrations may build on earlier ones). The
|
|
109
153
|
* caller exits non-zero, the Job fails, the rollout does not advance.
|
|
154
|
+
* - the PLAN comes first: before the first run, every pending migration's estimate
|
|
155
|
+
* ({@link Migration.estimate}) is logged as one line and the series' total as another — the
|
|
156
|
+
* same lines {@link planPendingMigrations} produces on its own for a dry run.
|
|
110
157
|
*
|
|
111
158
|
* EXPAND-CONTRACT INVARIANT (documented at this seam on purpose): every automated migration —
|
|
112
159
|
* and the schema sync that fronts it — must be backward-compatible with the STILL-RUNNING old
|
|
@@ -117,6 +164,29 @@ export declare class MigrationRunner implements MigrationRunnerService {
|
|
|
117
164
|
* shape is gone.
|
|
118
165
|
*/
|
|
119
166
|
runPendingMigrations(): Promise<MigrationSeriesSummary>;
|
|
167
|
+
/**
|
|
168
|
+
* The DRY RUN — the plan and nothing else: what {@link runPendingMigrations} would run, with
|
|
169
|
+
* each migration's estimate ({@link Migration.estimate}, read-only by contract) and the
|
|
170
|
+
* projection over the ones that declared seconds per unit. Applies NOTHING: no `Db.init()`
|
|
171
|
+
* (the deploy entrypoint calls this INSTEAD of init — init would create the database, run the
|
|
172
|
+
* pre-schema-sync migrations, sync the schema and sync the source records), no run, no ledger
|
|
173
|
+
* write — an unresolved row is reported, not stamped.
|
|
174
|
+
*
|
|
175
|
+
* Runs before init by construction, so the declarations come from the BUILD (the reflection
|
|
176
|
+
* source-record loaders for the migration table) joined to the ledger as it stands: a row's
|
|
177
|
+
* status says whether its migration is pending; a declaration with no row yet is what this
|
|
178
|
+
* release's source sync will insert as 'proposed' — pending, planned after the ledger's own
|
|
179
|
+
* pending rows (their `created` is older than a row born at the next init), in id order among
|
|
180
|
+
* themselves. Source records already registered in this process (init has run, or a test
|
|
181
|
+
* planted them) take precedence over the build's declaration of the same id — the same object
|
|
182
|
+
* after init.
|
|
183
|
+
*
|
|
184
|
+
* A database the schema sync has never touched has no ledger table: every declared migration
|
|
185
|
+
* is listed, no estimate is read (their tables do not exist either — nothing to count), and
|
|
186
|
+
* the plan says `freshDatabase`. An estimate that throws fails the plan loudly — a plan that
|
|
187
|
+
* cannot count is not a plan.
|
|
188
|
+
*/
|
|
189
|
+
planPendingMigrations(): Promise<MigrationPlan>;
|
|
120
190
|
private runAndRecord;
|
|
121
191
|
/**
|
|
122
192
|
* The run-state payload with `undefined`-valued fields OMITTED. Several of the record's fields
|
|
@@ -130,5 +200,30 @@ export declare class MigrationRunner implements MigrationRunnerService {
|
|
|
130
200
|
private definedFields;
|
|
131
201
|
private resolveMigration;
|
|
132
202
|
private duration;
|
|
203
|
+
/** The ledger in SERIES order: oldest-first by the row's `created`, id tiebreak. */
|
|
204
|
+
private ledgerInSeriesOrder;
|
|
205
|
+
/**
|
|
206
|
+
* One owner of "what does a ledger row mean for the series": retired rows are skipped; rows
|
|
207
|
+
* with no source record are unresolved (the RUN stamps them retired; the plan reports them);
|
|
208
|
+
* `manual` declarations are excluded; 'success' rows are already applied; anything else is
|
|
209
|
+
* pending — including 'running' (a crashed earlier run). Pure over the rows: no writes.
|
|
210
|
+
*/
|
|
211
|
+
private classifyLedger;
|
|
212
|
+
/** This build's migration declarations by id — the reflection source-record loaders for the migration table. */
|
|
213
|
+
private declaredMigrations;
|
|
214
|
+
/**
|
|
215
|
+
* The plan's lines: each pending migration's estimate (read here — the one call of
|
|
216
|
+
* {@link Migration.estimate}), logged as one line, then the total. Read-only by the door's
|
|
217
|
+
* contract; nothing here writes.
|
|
218
|
+
*/
|
|
219
|
+
private estimateSeries;
|
|
220
|
+
/**
|
|
221
|
+
* The one call of {@link Migration.estimate}. A throw fails the plan loudly, NAMING the migration:
|
|
222
|
+
* the reader of a plan that could not count must know which count failed, and the estimate's own
|
|
223
|
+
* message ("count query failed") does not say.
|
|
224
|
+
*/
|
|
225
|
+
private readEstimate;
|
|
226
|
+
/** One line per pending migration: the count, the unit, the projection when there is one, the note. */
|
|
227
|
+
private planLine;
|
|
133
228
|
}
|
|
134
229
|
//# sourceMappingURL=MigrationRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../src/MigrationRunner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAA6B,MAAM,mCAAmC,CAAC;AACtG,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../src/MigrationRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -214,6 +225,9 @@ var MigrationRunner = /** @class */ (function () {
|
|
|
214
225
|
* build — until un-retired on the Migrations page; skipped, reported as `retired`.
|
|
215
226
|
* - the FIRST failure STOPS the series (later migrations may build on earlier ones). The
|
|
216
227
|
* caller exits non-zero, the Job fails, the rollout does not advance.
|
|
228
|
+
* - the PLAN comes first: before the first run, every pending migration's estimate
|
|
229
|
+
* ({@link Migration.estimate}) is logged as one line and the series' total as another — the
|
|
230
|
+
* same lines {@link planPendingMigrations} produces on its own for a dry run.
|
|
217
231
|
*
|
|
218
232
|
* EXPAND-CONTRACT INVARIANT (documented at this seam on purpose): every automated migration —
|
|
219
233
|
* and the schema sync that fronts it — must be backward-compatible with the STILL-RUNNING old
|
|
@@ -225,82 +239,72 @@ var MigrationRunner = /** @class */ (function () {
|
|
|
225
239
|
*/
|
|
226
240
|
MigrationRunner.prototype.runPendingMigrations = function () {
|
|
227
241
|
return __awaiter(this, void 0, void 0, function () {
|
|
228
|
-
var migrationTable, db,
|
|
229
|
-
return __generator(this, function (
|
|
230
|
-
switch (
|
|
242
|
+
var migrationTable, db, ledger, sourceRecordRepo, classified, _i, _a, id, summary, pending, i, outcome;
|
|
243
|
+
return __generator(this, function (_b) {
|
|
244
|
+
switch (_b.label) {
|
|
231
245
|
case 0:
|
|
232
246
|
migrationTable = new MigrationTable_1.MigrationTable();
|
|
233
247
|
db = (0, Db_1.getDbAsSystem)();
|
|
234
|
-
|
|
235
|
-
{ field: 'created', desc: false },
|
|
236
|
-
{ field: 'id', desc: false },
|
|
237
|
-
]);
|
|
238
|
-
return [4 /*yield*/, db.query(migrationTable, qb)];
|
|
248
|
+
return [4 /*yield*/, db.query(migrationTable, this.ledgerInSeriesOrder(migrationTable))];
|
|
239
249
|
case 1:
|
|
240
|
-
ledger =
|
|
241
|
-
summary = {
|
|
242
|
-
applied: [],
|
|
243
|
-
skippedManual: [],
|
|
244
|
-
alreadyApplied: [],
|
|
245
|
-
unresolved: [],
|
|
246
|
-
retired: [],
|
|
247
|
-
notAttempted: [],
|
|
248
|
-
};
|
|
250
|
+
ledger = _b.sent();
|
|
249
251
|
sourceRecordRepo = new SourceRecordRepo_1.SourceRecordRepo();
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
252
|
+
classified = this.classifyLedger(ledger, function (id) {
|
|
253
|
+
return sourceRecordRepo.getSourceRecord(migrationTable.name, id);
|
|
254
|
+
});
|
|
255
|
+
_i = 0, _a = classified.unresolved;
|
|
256
|
+
_b.label = 2;
|
|
253
257
|
case 2:
|
|
254
|
-
if (!(_i <
|
|
255
|
-
|
|
256
|
-
if (row.retired) {
|
|
257
|
-
summary.retired.push(row.id);
|
|
258
|
-
return [3 /*break*/, 5];
|
|
259
|
-
}
|
|
260
|
-
source = sourceRecordRepo.getSourceRecord(migrationTable.name, row.id);
|
|
261
|
-
if (!!source) return [3 /*break*/, 4];
|
|
258
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
259
|
+
id = _a[_i];
|
|
262
260
|
// Stamp, don't just skip: the ledger must remember the source class was gone. If the
|
|
263
261
|
// class ships again in a later build, the row stays excluded until a human un-retires it
|
|
264
262
|
// on the Migrations page — a returned loader id is not consent to auto-run.
|
|
265
|
-
return [4 /*yield*/, db.update(migrationTable, { id:
|
|
263
|
+
return [4 /*yield*/, db.update(migrationTable, { id: id, retired: true })];
|
|
266
264
|
case 3:
|
|
267
265
|
// Stamp, don't just skip: the ledger must remember the source class was gone. If the
|
|
268
266
|
// class ships again in a later build, the row stays excluded until a human un-retires it
|
|
269
267
|
// on the Migrations page — a returned loader id is not consent to auto-run.
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
return [3 /*break*/, 5];
|
|
268
|
+
_b.sent();
|
|
269
|
+
_b.label = 4;
|
|
273
270
|
case 4:
|
|
274
|
-
if (source.manual) {
|
|
275
|
-
summary.skippedManual.push(row.id);
|
|
276
|
-
return [3 /*break*/, 5];
|
|
277
|
-
}
|
|
278
|
-
if (row.status === 'success') {
|
|
279
|
-
summary.alreadyApplied.push(row.id);
|
|
280
|
-
return [3 /*break*/, 5];
|
|
281
|
-
}
|
|
282
|
-
pending.push(row);
|
|
283
|
-
_a.label = 5;
|
|
284
|
-
case 5:
|
|
285
271
|
_i++;
|
|
286
272
|
return [3 /*break*/, 2];
|
|
287
|
-
case
|
|
273
|
+
case 5:
|
|
274
|
+
summary = {
|
|
275
|
+
applied: [],
|
|
276
|
+
skippedManual: classified.skippedManual,
|
|
277
|
+
alreadyApplied: classified.alreadyApplied,
|
|
278
|
+
unresolved: classified.unresolved,
|
|
279
|
+
retired: classified.retired,
|
|
280
|
+
notAttempted: [],
|
|
281
|
+
};
|
|
282
|
+
pending = classified.pending;
|
|
288
283
|
this.logger.info({
|
|
289
284
|
message: "Running ".concat(pending.length, " pending migration").concat(pending.length === 1 ? '' : 's', " in series, oldest-first"),
|
|
290
285
|
obj: {
|
|
291
|
-
pending: pending.map(function (
|
|
286
|
+
pending: pending.map(function (migration) { return migration.id; }),
|
|
292
287
|
skippedManual: summary.skippedManual,
|
|
293
288
|
skippedRetired: summary.retired,
|
|
294
289
|
stampedRetired: summary.unresolved,
|
|
295
290
|
},
|
|
296
291
|
});
|
|
292
|
+
// The plan, BEFORE the first run: every pending migration's estimate as one line, then the
|
|
293
|
+
// total — the reader of the Job's log knows what the series is about to do and how long the
|
|
294
|
+
// projection says it takes, before a row changes.
|
|
295
|
+
return [4 /*yield*/, this.estimateSeries(pending, __assign(__assign({}, classified), { freshDatabase: false }))];
|
|
296
|
+
case 6:
|
|
297
|
+
// The plan, BEFORE the first run: every pending migration's estimate as one line, then the
|
|
298
|
+
// total — the reader of the Job's log knows what the series is about to do and how long the
|
|
299
|
+
// projection says it takes, before a row changes.
|
|
300
|
+
_b.sent();
|
|
297
301
|
i = 0;
|
|
298
|
-
|
|
302
|
+
_b.label = 7;
|
|
299
303
|
case 7:
|
|
300
304
|
if (!(i < pending.length)) return [3 /*break*/, 10];
|
|
301
305
|
return [4 /*yield*/, this.ensureMigrationRun(pending[i].id)];
|
|
302
306
|
case 8:
|
|
303
|
-
outcome =
|
|
307
|
+
outcome = _b.sent();
|
|
304
308
|
if (outcome.status === 'success') {
|
|
305
309
|
summary.applied.push(outcome.id);
|
|
306
310
|
return [3 /*break*/, 9];
|
|
@@ -310,7 +314,7 @@ var MigrationRunner = /** @class */ (function () {
|
|
|
310
314
|
description: outcome.description,
|
|
311
315
|
failureMessage: outcome.failureMessage,
|
|
312
316
|
};
|
|
313
|
-
summary.notAttempted = pending.slice(i + 1).map(function (
|
|
317
|
+
summary.notAttempted = pending.slice(i + 1).map(function (migration) { return migration.id; });
|
|
314
318
|
return [3 /*break*/, 10];
|
|
315
319
|
case 9:
|
|
316
320
|
i++;
|
|
@@ -322,6 +326,71 @@ var MigrationRunner = /** @class */ (function () {
|
|
|
322
326
|
});
|
|
323
327
|
});
|
|
324
328
|
};
|
|
329
|
+
/**
|
|
330
|
+
* The DRY RUN — the plan and nothing else: what {@link runPendingMigrations} would run, with
|
|
331
|
+
* each migration's estimate ({@link Migration.estimate}, read-only by contract) and the
|
|
332
|
+
* projection over the ones that declared seconds per unit. Applies NOTHING: no `Db.init()`
|
|
333
|
+
* (the deploy entrypoint calls this INSTEAD of init — init would create the database, run the
|
|
334
|
+
* pre-schema-sync migrations, sync the schema and sync the source records), no run, no ledger
|
|
335
|
+
* write — an unresolved row is reported, not stamped.
|
|
336
|
+
*
|
|
337
|
+
* Runs before init by construction, so the declarations come from the BUILD (the reflection
|
|
338
|
+
* source-record loaders for the migration table) joined to the ledger as it stands: a row's
|
|
339
|
+
* status says whether its migration is pending; a declaration with no row yet is what this
|
|
340
|
+
* release's source sync will insert as 'proposed' — pending, planned after the ledger's own
|
|
341
|
+
* pending rows (their `created` is older than a row born at the next init), in id order among
|
|
342
|
+
* themselves. Source records already registered in this process (init has run, or a test
|
|
343
|
+
* planted them) take precedence over the build's declaration of the same id — the same object
|
|
344
|
+
* after init.
|
|
345
|
+
*
|
|
346
|
+
* A database the schema sync has never touched has no ledger table: every declared migration
|
|
347
|
+
* is listed, no estimate is read (their tables do not exist either — nothing to count), and
|
|
348
|
+
* the plan says `freshDatabase`. An estimate that throws fails the plan loudly — a plan that
|
|
349
|
+
* cannot count is not a plan.
|
|
350
|
+
*/
|
|
351
|
+
MigrationRunner.prototype.planPendingMigrations = function () {
|
|
352
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
353
|
+
var migrationTable, db, declared, sourceRecordRepo, sourceOf, freshDatabase, ledger, _a, classified, inLedger, unsynced, _i, unsynced_1, migration;
|
|
354
|
+
return __generator(this, function (_b) {
|
|
355
|
+
switch (_b.label) {
|
|
356
|
+
case 0:
|
|
357
|
+
migrationTable = new MigrationTable_1.MigrationTable();
|
|
358
|
+
db = (0, Db_1.getDbAsSystem)();
|
|
359
|
+
declared = this.declaredMigrations(migrationTable);
|
|
360
|
+
sourceRecordRepo = new SourceRecordRepo_1.SourceRecordRepo();
|
|
361
|
+
sourceOf = function (id) { var _a; return (_a = sourceRecordRepo.getSourceRecord(migrationTable.name, id)) !== null && _a !== void 0 ? _a : declared.get(id); };
|
|
362
|
+
return [4 /*yield*/, db.tableExists(migrationTable)];
|
|
363
|
+
case 1:
|
|
364
|
+
freshDatabase = !(_b.sent());
|
|
365
|
+
if (!freshDatabase) return [3 /*break*/, 2];
|
|
366
|
+
_a = [];
|
|
367
|
+
return [3 /*break*/, 4];
|
|
368
|
+
case 2: return [4 /*yield*/, db.query(migrationTable, this.ledgerInSeriesOrder(migrationTable))];
|
|
369
|
+
case 3:
|
|
370
|
+
_a = _b.sent();
|
|
371
|
+
_b.label = 4;
|
|
372
|
+
case 4:
|
|
373
|
+
ledger = _a;
|
|
374
|
+
classified = this.classifyLedger(ledger, sourceOf);
|
|
375
|
+
inLedger = new Set(ledger.map(function (row) { return row.id; }));
|
|
376
|
+
unsynced = Array.from(declared.values())
|
|
377
|
+
.filter(function (migration) { return !inLedger.has(migration.id); })
|
|
378
|
+
.sort(function (a, b) { return a.id.localeCompare(b.id); });
|
|
379
|
+
for (_i = 0, unsynced_1 = unsynced; _i < unsynced_1.length; _i++) {
|
|
380
|
+
migration = unsynced_1[_i];
|
|
381
|
+
if (migration.manual) {
|
|
382
|
+
classified.skippedManual.push(migration.id);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
classified.pending.push(migration);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return [4 /*yield*/, this.estimateSeries(classified.pending, __assign(__assign({}, classified), { freshDatabase: freshDatabase }))];
|
|
389
|
+
case 5: return [2 /*return*/, _b.sent()];
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
};
|
|
325
394
|
// The db is taken as a provider, resolved inside this async body: on the service path,
|
|
326
395
|
// constructing the Db is itself run infrastructure — its failure must REJECT the detached
|
|
327
396
|
// promise, not throw synchronously from runMigration (only a bogus id may reach the client).
|
|
@@ -423,6 +492,174 @@ var MigrationRunner = /** @class */ (function () {
|
|
|
423
492
|
}
|
|
424
493
|
return parts.join(' ');
|
|
425
494
|
};
|
|
495
|
+
/** The ledger in SERIES order: oldest-first by the row's `created`, id tiebreak. */
|
|
496
|
+
MigrationRunner.prototype.ledgerInSeriesOrder = function (migrationTable) {
|
|
497
|
+
return new QueryBuilderFactory_1.QueryBuilderFactory().createQueryBuilder(migrationTable).sort([
|
|
498
|
+
{ field: 'created', desc: false },
|
|
499
|
+
{ field: 'id', desc: false },
|
|
500
|
+
]);
|
|
501
|
+
};
|
|
502
|
+
/**
|
|
503
|
+
* One owner of "what does a ledger row mean for the series": retired rows are skipped; rows
|
|
504
|
+
* with no source record are unresolved (the RUN stamps them retired; the plan reports them);
|
|
505
|
+
* `manual` declarations are excluded; 'success' rows are already applied; anything else is
|
|
506
|
+
* pending — including 'running' (a crashed earlier run). Pure over the rows: no writes.
|
|
507
|
+
*/
|
|
508
|
+
MigrationRunner.prototype.classifyLedger = function (ledger, sourceOf) {
|
|
509
|
+
var classified = {
|
|
510
|
+
pending: [],
|
|
511
|
+
skippedManual: [],
|
|
512
|
+
alreadyApplied: [],
|
|
513
|
+
unresolved: [],
|
|
514
|
+
retired: [],
|
|
515
|
+
};
|
|
516
|
+
for (var _i = 0, ledger_1 = ledger; _i < ledger_1.length; _i++) {
|
|
517
|
+
var row = ledger_1[_i];
|
|
518
|
+
if (row.retired) {
|
|
519
|
+
classified.retired.push(row.id);
|
|
520
|
+
continue;
|
|
521
|
+
}
|
|
522
|
+
var source = sourceOf(row.id);
|
|
523
|
+
if (!source) {
|
|
524
|
+
classified.unresolved.push(row.id);
|
|
525
|
+
continue;
|
|
526
|
+
}
|
|
527
|
+
if (source.manual) {
|
|
528
|
+
classified.skippedManual.push(row.id);
|
|
529
|
+
continue;
|
|
530
|
+
}
|
|
531
|
+
if (row.status === 'success') {
|
|
532
|
+
classified.alreadyApplied.push(row.id);
|
|
533
|
+
continue;
|
|
534
|
+
}
|
|
535
|
+
classified.pending.push(source);
|
|
536
|
+
}
|
|
537
|
+
return classified;
|
|
538
|
+
};
|
|
539
|
+
/** This build's migration declarations by id — the reflection source-record loaders for the migration table. */
|
|
540
|
+
MigrationRunner.prototype.declaredMigrations = function (migrationTable) {
|
|
541
|
+
var declared = new Map();
|
|
542
|
+
for (var _i = 0, _a = (0, SourceRecord_1.getSourceRecordLoaders)(); _i < _a.length; _i++) {
|
|
543
|
+
var loader = _a[_i].loader;
|
|
544
|
+
if (loader.table.name === migrationTable.name) {
|
|
545
|
+
var migration = loader.record;
|
|
546
|
+
declared.set(migration.id, migration);
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
return declared;
|
|
550
|
+
};
|
|
551
|
+
/**
|
|
552
|
+
* The plan's lines: each pending migration's estimate (read here — the one call of
|
|
553
|
+
* {@link Migration.estimate}), logged as one line, then the total. Read-only by the door's
|
|
554
|
+
* contract; nothing here writes.
|
|
555
|
+
*/
|
|
556
|
+
MigrationRunner.prototype.estimateSeries = function (pending, context) {
|
|
557
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
558
|
+
var plan, _i, pending_1, migration, entry, _a, without;
|
|
559
|
+
return __generator(this, function (_b) {
|
|
560
|
+
switch (_b.label) {
|
|
561
|
+
case 0:
|
|
562
|
+
plan = {
|
|
563
|
+
pending: [],
|
|
564
|
+
projectedSeconds: 0,
|
|
565
|
+
projected: 0,
|
|
566
|
+
unprojected: [],
|
|
567
|
+
skippedManual: context.skippedManual,
|
|
568
|
+
alreadyApplied: context.alreadyApplied,
|
|
569
|
+
unresolved: context.unresolved,
|
|
570
|
+
retired: context.retired,
|
|
571
|
+
freshDatabase: context.freshDatabase,
|
|
572
|
+
};
|
|
573
|
+
_i = 0, pending_1 = pending;
|
|
574
|
+
_b.label = 1;
|
|
575
|
+
case 1:
|
|
576
|
+
if (!(_i < pending_1.length)) return [3 /*break*/, 7];
|
|
577
|
+
migration = pending_1[_i];
|
|
578
|
+
entry = __assign({ id: migration.id, description: migration.description }, (migration.preSchemaSync ? { preSchemaSync: true } : {}));
|
|
579
|
+
if (!context.freshDatabase) return [3 /*break*/, 2];
|
|
580
|
+
entry.unprojectedReason = 'fresh database, nothing to count';
|
|
581
|
+
return [3 /*break*/, 5];
|
|
582
|
+
case 2:
|
|
583
|
+
if (!!migration.estimate) return [3 /*break*/, 3];
|
|
584
|
+
entry.unprojectedReason = 'no estimate declared';
|
|
585
|
+
return [3 /*break*/, 5];
|
|
586
|
+
case 3:
|
|
587
|
+
_a = entry;
|
|
588
|
+
return [4 /*yield*/, this.readEstimate(migration)];
|
|
589
|
+
case 4:
|
|
590
|
+
_a.estimate = _b.sent();
|
|
591
|
+
if (entry.estimate.secondsPerUnit === undefined) {
|
|
592
|
+
entry.unprojectedReason = 'no seconds per unit declared';
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
entry.projectedSeconds = Math.ceil(entry.estimate.units * entry.estimate.secondsPerUnit);
|
|
596
|
+
}
|
|
597
|
+
_b.label = 5;
|
|
598
|
+
case 5:
|
|
599
|
+
if (entry.projectedSeconds === undefined) {
|
|
600
|
+
plan.unprojected.push(entry.id);
|
|
601
|
+
}
|
|
602
|
+
else {
|
|
603
|
+
plan.projected++;
|
|
604
|
+
plan.projectedSeconds += entry.projectedSeconds;
|
|
605
|
+
}
|
|
606
|
+
plan.pending.push(entry);
|
|
607
|
+
this.logger.info({ message: this.planLine(entry) });
|
|
608
|
+
_b.label = 6;
|
|
609
|
+
case 6:
|
|
610
|
+
_i++;
|
|
611
|
+
return [3 /*break*/, 1];
|
|
612
|
+
case 7:
|
|
613
|
+
without = plan.unprojected.length > 0
|
|
614
|
+
? ", ".concat(plan.unprojected.length, " without a projection (").concat(plan.unprojected.join(', '), ")")
|
|
615
|
+
: '';
|
|
616
|
+
this.logger.info({
|
|
617
|
+
message: "Migration plan total: ".concat(plan.pending.length, " pending, \u2248 ").concat(plan.projectedSeconds, " s projected over ") +
|
|
618
|
+
"".concat(plan.projected, " of them").concat(without),
|
|
619
|
+
obj: plan,
|
|
620
|
+
});
|
|
621
|
+
return [2 /*return*/, plan];
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
});
|
|
625
|
+
};
|
|
626
|
+
/**
|
|
627
|
+
* The one call of {@link Migration.estimate}. A throw fails the plan loudly, NAMING the migration:
|
|
628
|
+
* the reader of a plan that could not count must know which count failed, and the estimate's own
|
|
629
|
+
* message ("count query failed") does not say.
|
|
630
|
+
*/
|
|
631
|
+
MigrationRunner.prototype.readEstimate = function (migration) {
|
|
632
|
+
var _a;
|
|
633
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
634
|
+
var error_2, failure;
|
|
635
|
+
return __generator(this, function (_b) {
|
|
636
|
+
switch (_b.label) {
|
|
637
|
+
case 0:
|
|
638
|
+
_b.trys.push([0, 2, , 3]);
|
|
639
|
+
return [4 /*yield*/, migration.estimate()];
|
|
640
|
+
case 1: return [2 /*return*/, _b.sent()];
|
|
641
|
+
case 2:
|
|
642
|
+
error_2 = _b.sent();
|
|
643
|
+
failure = new Error("Migration plan: (".concat(migration.id, ") ").concat(migration.description, " \u2014 the estimate failed: ").concat((_a = error_2 === null || error_2 === void 0 ? void 0 : error_2.message) !== null && _a !== void 0 ? _a : error_2));
|
|
644
|
+
failure.cause = error_2;
|
|
645
|
+
throw failure;
|
|
646
|
+
case 3: return [2 /*return*/];
|
|
647
|
+
}
|
|
648
|
+
});
|
|
649
|
+
});
|
|
650
|
+
};
|
|
651
|
+
/** One line per pending migration: the count, the unit, the projection when there is one, the note. */
|
|
652
|
+
MigrationRunner.prototype.planLine = function (entry) {
|
|
653
|
+
var head = "Migration plan: (".concat(entry.id, ") ").concat(entry.description).concat(entry.preSchemaSync ? ' [runs at init, before schema sync]' : '', " \u2014 ");
|
|
654
|
+
if (!entry.estimate) {
|
|
655
|
+
return "".concat(head).concat(entry.unprojectedReason);
|
|
656
|
+
}
|
|
657
|
+
var _a = entry.estimate, units = _a.units, unit = _a.unit, secondsPerUnit = _a.secondsPerUnit, note = _a.note;
|
|
658
|
+
var projection = entry.projectedSeconds === undefined
|
|
659
|
+
? entry.unprojectedReason
|
|
660
|
+
: "\u2248 ".concat(entry.projectedSeconds, " s at ").concat(secondsPerUnit, " s per unit");
|
|
661
|
+
return "".concat(head).concat(units, " ").concat(unit, ", ").concat(projection).concat(note ? " (".concat(note, ")") : '');
|
|
662
|
+
};
|
|
426
663
|
return MigrationRunner;
|
|
427
664
|
}());
|
|
428
665
|
exports.MigrationRunner = MigrationRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../src/MigrationRunner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../src/MigrationRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Table.d.ts
CHANGED
|
@@ -135,8 +135,12 @@ export declare abstract class Table<T extends Record> implements Loadable, Custo
|
|
|
135
135
|
};
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* A record's data fields: its methods are not columns — a required one (`run`) and an OPTIONAL
|
|
140
|
+
* one (`estimate?`, whose type is the function or `undefined`) alike.
|
|
141
|
+
*/
|
|
138
142
|
type ExcludeFunctions<T> = {
|
|
139
|
-
[P in keyof T as T[P] extends Function ? never : P]: T[P];
|
|
143
|
+
[P in keyof T as NonNullable<T[P]> extends Function ? never : P]: T[P];
|
|
140
144
|
};
|
|
141
145
|
type RequiredProps<T> = {
|
|
142
146
|
[P in keyof ExcludeFunctions<T>]: ExcludeFunctions<T>[P] extends undefined ? never : P;
|