@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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../generated/test/index.ts"],"names":[],"mappings":"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"}
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;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,eAAO,MAAM,kBAAkB,uBACyE,CAAC;AAEzG;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mFAAmF;IACnF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gFAAgF;IAChF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,8FAA8F;IAC9F,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,eAAgB,YAAW,sBAAsB;IAC5D,OAAO,CAAC,MAAM,CAA+C;IACtD,eAAe,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAQhD;IAEF;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC;;;;;;;;;;;OAWG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAcxD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,0BAA0B,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,oBAAoB,IAAI,OAAO,CAAC,sBAAsB,CAAC;YA2E/C,YAAY;IA8B1B;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,QAAQ;CA4BjB"}
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, qb, ledger, summary, sourceRecordRepo, pending, _i, ledger_1, row, source, i, outcome;
229
- return __generator(this, function (_a) {
230
- switch (_a.label) {
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
- qb = new QueryBuilderFactory_1.QueryBuilderFactory().createQueryBuilder(migrationTable).sort([
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 = _a.sent();
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
- pending = [];
251
- _i = 0, ledger_1 = ledger;
252
- _a.label = 2;
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 < ledger_1.length)) return [3 /*break*/, 6];
255
- row = ledger_1[_i];
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: row.id, retired: true })];
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
- _a.sent();
271
- summary.unresolved.push(row.id);
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 6:
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 (row) { return row.id; }),
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
- _a.label = 7;
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 = _a.sent();
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 (row) { return row.id; });
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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"}
@@ -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;