@decaf-ts/core 0.12.1 → 0.13.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.
Files changed (100) hide show
  1. package/README.md +140 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/index.d.ts +1 -0
  7. package/lib/esm/index.js +1 -1
  8. package/lib/esm/index.js.map +1 -1
  9. package/lib/esm/migrations/Migration.d.ts +1 -1
  10. package/lib/esm/migrations/MigrationService.d.ts +45 -2
  11. package/lib/esm/migrations/MigrationService.js +436 -97
  12. package/lib/esm/migrations/MigrationService.js.map +1 -1
  13. package/lib/esm/migrations/MigrationTaskBuilder.d.ts +10 -0
  14. package/lib/esm/migrations/MigrationTaskBuilder.js +21 -0
  15. package/lib/esm/migrations/MigrationTaskBuilder.js.map +1 -0
  16. package/lib/esm/migrations/MigrationTasks.js +10 -4
  17. package/lib/esm/migrations/MigrationTasks.js.map +1 -1
  18. package/lib/esm/migrations/MigrationVersioning.d.ts +7 -0
  19. package/lib/esm/migrations/MigrationVersioning.js +2 -0
  20. package/lib/esm/migrations/MigrationVersioning.js.map +1 -0
  21. package/lib/esm/migrations/SemverMigrationVersioning.d.ts +10 -0
  22. package/lib/esm/migrations/SemverMigrationVersioning.js +43 -0
  23. package/lib/esm/migrations/SemverMigrationVersioning.js.map +1 -0
  24. package/lib/esm/migrations/StandardMigrationVersioning.d.ts +12 -0
  25. package/lib/esm/migrations/StandardMigrationVersioning.js +27 -0
  26. package/lib/esm/migrations/StandardMigrationVersioning.js.map +1 -0
  27. package/lib/esm/migrations/decorators.d.ts +5 -0
  28. package/lib/esm/migrations/decorators.js +42 -11
  29. package/lib/esm/migrations/decorators.js.map +1 -1
  30. package/lib/esm/migrations/index.d.ts +3 -0
  31. package/lib/esm/migrations/index.js +3 -0
  32. package/lib/esm/migrations/index.js.map +1 -1
  33. package/lib/esm/migrations/types.d.ts +25 -2
  34. package/lib/esm/persistence/Adapter.d.ts +1 -1
  35. package/lib/esm/persistence/constants.js +6 -1
  36. package/lib/esm/persistence/constants.js.map +1 -1
  37. package/lib/esm/query/Paginator.js +16 -5
  38. package/lib/esm/query/Paginator.js.map +1 -1
  39. package/lib/esm/query/constants.d.ts +1 -0
  40. package/lib/esm/query/constants.js +1 -0
  41. package/lib/esm/query/constants.js.map +1 -1
  42. package/lib/esm/query/decorators.js +1 -1
  43. package/lib/esm/query/decorators.js.map +1 -1
  44. package/lib/esm/repository/Repository.d.ts +1 -0
  45. package/lib/esm/repository/Repository.js +51 -0
  46. package/lib/esm/repository/Repository.js.map +1 -1
  47. package/lib/esm/services/ModelService.d.ts +1 -0
  48. package/lib/esm/services/ModelService.js +4 -0
  49. package/lib/esm/services/ModelService.js.map +1 -1
  50. package/lib/esm/tasks/TaskService.d.ts +1 -0
  51. package/lib/esm/tasks/TaskService.js +4 -0
  52. package/lib/esm/tasks/TaskService.js.map +1 -1
  53. package/lib/index.cjs +1 -1
  54. package/lib/index.d.ts +1 -0
  55. package/lib/index.js.map +1 -1
  56. package/lib/migrations/Migration.d.ts +1 -1
  57. package/lib/migrations/MigrationService.cjs +436 -97
  58. package/lib/migrations/MigrationService.d.ts +45 -2
  59. package/lib/migrations/MigrationService.js.map +1 -1
  60. package/lib/migrations/MigrationTaskBuilder.cjs +25 -0
  61. package/lib/migrations/MigrationTaskBuilder.d.ts +10 -0
  62. package/lib/migrations/MigrationTaskBuilder.js.map +1 -0
  63. package/lib/migrations/MigrationTasks.cjs +10 -4
  64. package/lib/migrations/MigrationTasks.js.map +1 -1
  65. package/lib/migrations/MigrationVersioning.cjs +3 -0
  66. package/lib/migrations/MigrationVersioning.d.ts +7 -0
  67. package/lib/migrations/MigrationVersioning.js.map +1 -0
  68. package/lib/migrations/SemverMigrationVersioning.cjs +80 -0
  69. package/lib/migrations/SemverMigrationVersioning.d.ts +10 -0
  70. package/lib/migrations/SemverMigrationVersioning.js.map +1 -0
  71. package/lib/migrations/StandardMigrationVersioning.cjs +31 -0
  72. package/lib/migrations/StandardMigrationVersioning.d.ts +12 -0
  73. package/lib/migrations/StandardMigrationVersioning.js.map +1 -0
  74. package/lib/migrations/decorators.cjs +42 -11
  75. package/lib/migrations/decorators.d.ts +5 -0
  76. package/lib/migrations/decorators.js.map +1 -1
  77. package/lib/migrations/index.cjs +3 -0
  78. package/lib/migrations/index.d.ts +3 -0
  79. package/lib/migrations/index.js.map +1 -1
  80. package/lib/migrations/types.d.ts +25 -2
  81. package/lib/persistence/Adapter.d.ts +1 -1
  82. package/lib/persistence/constants.cjs +6 -1
  83. package/lib/persistence/constants.js.map +1 -1
  84. package/lib/query/Paginator.cjs +16 -5
  85. package/lib/query/Paginator.js.map +1 -1
  86. package/lib/query/constants.cjs +1 -0
  87. package/lib/query/constants.d.ts +1 -0
  88. package/lib/query/constants.js.map +1 -1
  89. package/lib/query/decorators.cjs +1 -1
  90. package/lib/query/decorators.js.map +1 -1
  91. package/lib/repository/Repository.cjs +51 -0
  92. package/lib/repository/Repository.d.ts +1 -0
  93. package/lib/repository/Repository.js.map +1 -1
  94. package/lib/services/ModelService.cjs +4 -0
  95. package/lib/services/ModelService.d.ts +1 -0
  96. package/lib/services/ModelService.js.map +1 -1
  97. package/lib/tasks/TaskService.cjs +4 -0
  98. package/lib/tasks/TaskService.d.ts +1 -0
  99. package/lib/tasks/TaskService.js.map +1 -1
  100. package/package.json +9 -1
@@ -6,12 +6,50 @@ import { MigrationError } from "./../persistence/errors.js";
6
6
  import { style } from "@decaf-ts/logging";
7
7
  import { DefaultFlavour, Metadata } from "@decaf-ts/decoration";
8
8
  import { InternalError } from "@decaf-ts/db-decorators";
9
+ import { MigrationTaskBuilder } from "./MigrationTaskBuilder.js";
10
+ import { TaskModel } from "./../tasks/models/TaskModel.js";
11
+ import { StandardMigrationVersioning } from "./StandardMigrationVersioning.js";
12
+ import { TaskStatus } from "./../tasks/constants.js";
9
13
  export class MigrationService extends ClientBasedService {
10
14
  constructor() {
11
15
  super();
16
+ this.versioning = new StandardMigrationVersioning();
17
+ this.queuedTaskChain = [];
12
18
  this.reference = MigrationService.name;
13
19
  this.precedence = null;
14
20
  }
21
+ static async migrateAdapters(adapters, cfg = {}, ...args) {
22
+ const flavours = cfg.flavours?.length ? new Set(cfg.flavours) : undefined;
23
+ const selected = adapters.filter((adapter) => !flavours || flavours.has(adapter.flavour));
24
+ const migratingAliases = new Set(adapters.map((adapter) => adapter.alias || adapter.flavour).filter(Boolean));
25
+ const taskEngineClient = cfg.taskService?.client;
26
+ const taskServiceAdapterAlias = taskEngineClient?.adapter?.alias || taskEngineClient?.adapter?.flavour;
27
+ if (taskServiceAdapterAlias &&
28
+ migratingAliases.has(taskServiceAdapterAlias)) {
29
+ throw new InternalError(`TaskEngine adapter alias "${taskServiceAdapterAlias}" cannot participate in the migration targets`);
30
+ }
31
+ const services = [];
32
+ for (const adapter of selected) {
33
+ const handlers = cfg.handlers?.[adapter.flavour] || {};
34
+ const migrationService = new MigrationService();
35
+ services.push(migrationService);
36
+ await migrationService.boot({
37
+ persistenceFlavour: adapter.flavour,
38
+ targetVersion: cfg.toVersion,
39
+ taskMode: !!cfg.taskMode,
40
+ // In multi-adapter task mode, run flavour-scoped migrations only.
41
+ includeGenericInTaskMode: !(cfg.taskMode && selected.length > 1),
42
+ retrieveLastVersion: handlers.retrieveLastVersion,
43
+ setCurrentVersion: handlers.setCurrentVersion,
44
+ taskService: cfg.taskService,
45
+ });
46
+ if (cfg.taskMode)
47
+ await migrationService.migrateViaTasks(undefined, undefined, ...args);
48
+ else
49
+ await migrationService.migrateNormally(undefined, undefined, ...args);
50
+ }
51
+ return services;
52
+ }
15
53
  async initialize(...args) {
16
54
  const { log, ctx } = (await this.logCtx(args, PersistenceKeys.INITIALIZATION, true)).for(this.initialize);
17
55
  try {
@@ -24,134 +62,435 @@ export class MigrationService extends ClientBasedService {
24
62
  log.warn(`Persistence service not available. this may indicate poor initialization of the persistence layer (or not)`);
25
63
  }
26
64
  const cfg = Object.assign({}, args.length ? args[0] : DefaultMigrationConfig, DefaultMigrationConfig);
65
+ this.versioning = cfg.versioning || new StandardMigrationVersioning();
27
66
  this.transaction = cfg.persistMigrationSteps;
28
67
  return {
29
68
  config: cfg,
30
- client: Adapter.get(cfg.persistenceFlavour),
69
+ client: (cfg.persistenceFlavour
70
+ ? Adapter.get(cfg.persistenceFlavour)
71
+ : undefined),
31
72
  };
32
73
  }
33
74
  async down(qr, adapter, ...args) {
34
75
  const { log } = this.logCtx(args, this.down);
35
76
  log.verbose(style("Cleaning up after all migrations").green.bold);
36
77
  }
78
+ normalizeVersion(raw, precedenceHint) {
79
+ return this.versioning.normalize(raw, precedenceHint);
80
+ }
81
+ extractPrecedenceTokens(migration) {
82
+ const precedence = migration.precedence;
83
+ if (!precedence)
84
+ return [];
85
+ const list = Array.isArray(precedence) ? precedence : [precedence];
86
+ return list
87
+ .map((entry) => {
88
+ if (!entry)
89
+ return undefined;
90
+ if (typeof entry === "string")
91
+ return undefined;
92
+ if (typeof entry === "function")
93
+ return entry.name;
94
+ if (typeof entry.reference === "string")
95
+ return entry.reference;
96
+ if (entry.constructor?.name)
97
+ return entry.constructor.name;
98
+ return undefined;
99
+ })
100
+ .filter((entry) => !!entry);
101
+ }
102
+ referencesMigration(candidate, target) {
103
+ const tokens = this.extractPrecedenceTokens(candidate);
104
+ if (!tokens.length)
105
+ return false;
106
+ return (tokens.includes(target.reference) ||
107
+ tokens.includes(target.migration?.constructor?.name));
108
+ }
109
+ precedenceHint(migration) {
110
+ return typeof migration.precedence === "string"
111
+ ? migration.precedence
112
+ : undefined;
113
+ }
114
+ compareByPrecedence(migration1, migration2) {
115
+ const m1 = migration1.migration;
116
+ const m2 = migration2.migration;
117
+ const m1ReferencesM2 = this.referencesMigration(m1, migration2);
118
+ const m2ReferencesM1 = this.referencesMigration(m2, migration1);
119
+ if (m1ReferencesM2 && !m2ReferencesM1)
120
+ return 1;
121
+ if (m2ReferencesM1 && !m1ReferencesM2)
122
+ return -1;
123
+ const p1 = this.extractPrecedenceTokens(m1);
124
+ const p2 = this.extractPrecedenceTokens(m2);
125
+ if (p1.length !== p2.length)
126
+ return p1.length - p2.length;
127
+ return 0;
128
+ }
37
129
  sort(migrations) {
38
- return migrations.sort((migration1, migration2) => {
39
- if (!migration1.precedence && !migration2.precedence)
40
- throw new InternalError(`Only one migration can have a null precedence: ${migration1.reference} vs ${migration2.reference}`);
41
- if (!migration1.precedence)
42
- return 1;
43
- if (!migration2.precedence)
44
- return -1;
45
- const precedences1 = Array.isArray(migration1.precedence)
46
- ? migration1.precedence
47
- : [migration1];
48
- const precedences2 = Array.isArray(migration2.precedence)
49
- ? migration2.precedence
50
- : [migration2];
51
- const includes1 = precedences1.every((p) => p === migration2);
52
- const includes2 = precedences2.every((p) => p === migration1);
53
- // sort when they reference each other
54
- if (includes1 && !includes2)
55
- return 1;
56
- if (includes2 && !includes1)
57
- return -1;
58
- const anyNotIncluded1 = precedences1.find((p) => !precedences2.includes(p));
59
- const allIncluded1 = precedences1.every((p) => precedences2.includes(p));
60
- const anyNotIncluded2 = precedences2.find((p) => !precedences1.includes(p));
61
- const allIncluded2 = precedences2.every((p) => precedences1.includes(p));
62
- // solve all differences
63
- if (anyNotIncluded1 && !anyNotIncluded2 && !allIncluded1 && !allIncluded2)
64
- return 1;
65
- if (!anyNotIncluded1 && anyNotIncluded2 && !allIncluded1 && !allIncluded2)
66
- return -1;
67
- if (!anyNotIncluded1 && !anyNotIncluded2 && allIncluded1 && !allIncluded2)
68
- return -1;
69
- if (!anyNotIncluded1 && !anyNotIncluded2 && !allIncluded1 && allIncluded2)
70
- return 1;
71
- if (!anyNotIncluded1 && !anyNotIncluded2 && allIncluded1 && !allIncluded2)
72
- return -1;
73
- if (!anyNotIncluded1 && !anyNotIncluded2 && !allIncluded1 && allIncluded2)
74
- return 1;
75
- if (!anyNotIncluded1 && anyNotIncluded2 && !allIncluded1 && !allIncluded2)
76
- return 1;
77
- if (!anyNotIncluded1 &&
78
- !anyNotIncluded2 &&
79
- !allIncluded1 &&
80
- !allIncluded2)
81
- return -1;
82
- const size1 = precedences1.length;
83
- const size2 = precedences2.length;
84
- const res = size1 - size2;
85
- if (res === 0) {
86
- if (migration1.reference === migration2.reference)
87
- throw new InternalError(`Unable to sort migration precedence between ${migration1.reference} and ${migration2.reference}. should not be possible`);
88
- return migration1.reference.localeCompare(migration2.reference);
89
- }
90
- return res;
130
+ const sorted = [...migrations].sort((migration1, migration2) => {
131
+ const semverDelta = this.versioning.compare(migration1.version, migration2.version);
132
+ if (semverDelta !== 0)
133
+ return semverDelta;
134
+ const precedenceDelta = this.compareByPrecedence(migration1, migration2);
135
+ if (precedenceDelta !== 0)
136
+ return precedenceDelta;
137
+ const flavourDelta = migration1.flavour.localeCompare(migration2.flavour);
138
+ if (flavourDelta !== 0)
139
+ return flavourDelta;
140
+ return migration1.reference.localeCompare(migration2.reference);
91
141
  });
142
+ for (let i = 0; i < sorted.length; i++) {
143
+ const left = sorted[i];
144
+ const right = sorted[i + 1];
145
+ if (!left || !right)
146
+ continue;
147
+ if (left.version !== right.version || left.flavour !== right.flavour)
148
+ continue;
149
+ if (this.compareByPrecedence(left, right) !== 0)
150
+ continue;
151
+ throw new InternalError(`Unable to deterministically sort flavour migrations for version ${left.version} and flavour ${left.flavour}: ${left.reference} vs ${right.reference}`);
152
+ }
153
+ return sorted;
92
154
  }
93
- async migrate(qr, adapter, ...args) {
94
- const { ctxArgs, log } = (await this.logCtx(args, PersistenceKeys.MIGRATION, true)).for(this.migrate);
95
- let m;
155
+ resolveMigration(migration) {
156
+ const meta = Metadata.get(migration.constructor, PersistenceKeys.MIGRATION);
157
+ const flavour = meta?.flavour || migration.flavour || DefaultFlavour;
158
+ const reference = meta?.reference || migration.reference;
159
+ const precedenceHint = this.precedenceHint(migration);
160
+ return {
161
+ migration,
162
+ flavour,
163
+ reference,
164
+ version: this.normalizeVersion(reference, precedenceHint),
165
+ };
166
+ }
167
+ shouldIncludeMigration(migration, targetFlavour, includeGeneric = true) {
168
+ if (!targetFlavour)
169
+ return true;
170
+ if (migration.flavour === targetFlavour)
171
+ return true;
172
+ return includeGeneric && migration.flavour === DefaultFlavour;
173
+ }
174
+ collectMigrations(targetFlavour, includeGeneric = true) {
96
175
  const toBoot = Metadata.migrations();
97
176
  const migrations = [];
98
- for (const [reference, mig] of toBoot) {
177
+ for (const [reference, MigrationClass] of toBoot) {
178
+ let migration;
99
179
  try {
100
- log.silly(`loading migration ${reference}...`);
101
- m = new mig();
102
- log.verbose(`migration ${m.reference} instantiated`, 1);
180
+ migration = new MigrationClass();
103
181
  }
104
182
  catch (e) {
105
- throw new InternalError(`failed to create migration ${mig.name}: ${e}`);
183
+ throw new InternalError(`failed to create migration ${reference}: ${e}`);
106
184
  }
107
- migrations.push(m);
185
+ const resolved = this.resolveMigration(migration);
186
+ if (!this.shouldIncludeMigration(resolved, targetFlavour, includeGeneric))
187
+ continue;
188
+ migrations.push(resolved);
189
+ }
190
+ return migrations;
191
+ }
192
+ buildExecutionPlan(options) {
193
+ const fromVersion = options?.fromVersion
194
+ ? this.normalizeVersion(options.fromVersion)
195
+ : undefined;
196
+ const toVersion = options?.toVersion
197
+ ? this.normalizeVersion(options.toVersion)
198
+ : undefined;
199
+ const migrations = this.sort(this.collectMigrations(options?.targetFlavour, options?.includeGeneric));
200
+ return migrations.filter((migration) => {
201
+ if (fromVersion && !this.versioning.gt(migration.version, fromVersion))
202
+ return false;
203
+ if (toVersion && !this.versioning.lte(migration.version, toVersion))
204
+ return false;
205
+ return true;
206
+ });
207
+ }
208
+ async executeMigration(migration, ...args) {
209
+ const m = migration.migration;
210
+ let adapter;
211
+ let qr;
212
+ try {
213
+ adapter = Adapter.get(migration.flavour);
214
+ if (!adapter)
215
+ throw new InternalError(`failed to create migration ${m.reference}. did you call Service.boot() or use the Persistence Service??`);
216
+ qr = adapter.client;
217
+ }
218
+ catch (e) {
219
+ throw new InternalError(`Failed to load adapter to migrate ${m.reference}: ${e}`);
108
220
  }
109
- let sortedMigrations;
110
221
  try {
111
- sortedMigrations = this.sort(migrations);
222
+ await m.up(qr, adapter, ...args);
112
223
  }
113
224
  catch (e) {
114
- throw new InternalError(`Failed to sort migrations: ${e}`);
225
+ throw new MigrationError(`failed to initialize migration ${m.reference}: ${e}`);
115
226
  }
116
- log.debug(`sorted migration before execution: ${sortedMigrations.map((s) => s.reference)}`);
117
- for (const m of sortedMigrations) {
118
- let adapter;
119
- let qr;
120
- try {
121
- const meta = Metadata.get(m.constructor, PersistenceKeys.MIGRATION);
122
- const flavour = meta?.flavour || m.flavour;
123
- adapter = Adapter.get(flavour);
124
- if (!adapter)
125
- throw new InternalError(`failed to create migration ${m.reference}. did you call Service.boot() or use the Persistence Service??`);
126
- qr = adapter.client;
127
- }
128
- catch (e) {
129
- throw new InternalError(`Failed to load adapter to migrate ${m.reference}: ${e}`);
130
- }
131
- try {
132
- await m.up(qr, adapter, ...ctxArgs);
133
- }
134
- catch (e) {
135
- throw new MigrationError(`failed to initialize migration ${m.reference}: ${e}`);
136
- }
137
- try {
138
- await m.migrate(qr, adapter, ...ctxArgs);
139
- }
140
- catch (e) {
141
- throw new MigrationError(`failed to migrate ${m.reference}: ${e}`);
142
- }
143
- try {
144
- await m.down(qr, adapter, ...ctxArgs);
227
+ try {
228
+ await m.migrate(qr, adapter, ...args);
229
+ }
230
+ catch (e) {
231
+ throw new MigrationError(`failed to migrate ${m.reference}: ${e}`);
232
+ }
233
+ try {
234
+ await m.down(qr, adapter, ...args);
235
+ }
236
+ catch (e) {
237
+ throw new MigrationError(`failed to conclude migration ${m.reference}: ${e}`);
238
+ }
239
+ }
240
+ buildMigrationTaskForPlan(plan, ...args) {
241
+ const stepArgs = [...args];
242
+ const builder = new MigrationTaskBuilder();
243
+ plan.forEach((migration) => {
244
+ const input = {
245
+ reference: migration.reference,
246
+ args: stepArgs,
247
+ };
248
+ builder.addMigrationStep(input);
249
+ });
250
+ return builder.build();
251
+ }
252
+ buildMigrationTasksForPlan(plan, ...args) {
253
+ const byVersion = new Map();
254
+ for (const migration of plan) {
255
+ const current = byVersion.get(migration.version) || [];
256
+ current.push(migration);
257
+ byVersion.set(migration.version, current);
258
+ }
259
+ return [...byVersion.entries()].map(([version, migrations]) => ({
260
+ version,
261
+ task: this.buildMigrationTaskForPlan(migrations, ...args),
262
+ }));
263
+ }
264
+ createMigrationTask(targetVersion, fromVersion, ...args) {
265
+ const cfg = this.config;
266
+ const taskMode = cfg.taskMode ?? false;
267
+ const includeGeneric = taskMode
268
+ ? cfg.includeGenericInTaskMode ?? true
269
+ : true;
270
+ const plan = this.buildExecutionPlan({
271
+ toVersion: targetVersion || cfg.targetVersion,
272
+ fromVersion,
273
+ targetFlavour: cfg.persistenceFlavour,
274
+ includeGeneric,
275
+ });
276
+ return this.buildMigrationTaskForPlan(plan, ...args);
277
+ }
278
+ createMigrationTasks(targetVersion, fromVersion, ...args) {
279
+ const cfg = this.config;
280
+ const taskMode = cfg.taskMode ?? false;
281
+ const includeGeneric = taskMode
282
+ ? cfg.includeGenericInTaskMode ?? true
283
+ : true;
284
+ const plan = this.buildExecutionPlan({
285
+ toVersion: targetVersion || cfg.targetVersion,
286
+ fromVersion,
287
+ targetFlavour: cfg.persistenceFlavour,
288
+ includeGeneric,
289
+ });
290
+ return this.buildMigrationTasksForPlan(plan, ...args);
291
+ }
292
+ migrationTaskIdsFromContext(taskKey, args) {
293
+ const last = args[args.length - 1];
294
+ const pending = last?.pending?.() || last?.pending || {};
295
+ const values = pending?.[taskKey];
296
+ if (!Array.isArray(values))
297
+ return [];
298
+ return values.filter((value) => typeof value === "string");
299
+ }
300
+ async migrate(qr, adapter, ...args) {
301
+ void qr;
302
+ void adapter;
303
+ if (this.config.taskMode)
304
+ await this.migrateViaTasks(undefined, undefined, ...args);
305
+ else
306
+ await this.migrateNormally(undefined, undefined, ...args);
307
+ return undefined;
308
+ }
309
+ async migrateNormally(qr, adapter, ...args) {
310
+ const { ctxArgs, log } = (await this.logCtx(args, PersistenceKeys.MIGRATION, true)).for(this.migrateNormally);
311
+ void qr;
312
+ void adapter;
313
+ const cfg = this.config;
314
+ const targetFlavour = cfg.persistenceFlavour;
315
+ const includeGeneric = cfg.taskMode
316
+ ? cfg.includeGenericInTaskMode ?? true
317
+ : true;
318
+ const scopedAdapter = targetFlavour
319
+ ? Adapter.get(targetFlavour)
320
+ : undefined;
321
+ let currentVersion;
322
+ if (cfg.retrieveLastVersion && scopedAdapter) {
323
+ const retrieved = await cfg.retrieveLastVersion(scopedAdapter, ...ctxArgs);
324
+ if (retrieved)
325
+ currentVersion = this.normalizeVersion(retrieved);
326
+ }
327
+ const plan = this.buildExecutionPlan({
328
+ fromVersion: currentVersion,
329
+ toVersion: cfg.targetVersion,
330
+ targetFlavour,
331
+ includeGeneric,
332
+ });
333
+ log.debug(`sorted migration before execution: ${plan.map((s) => `${s.reference}@${s.version}`)}`);
334
+ for (const migration of plan) {
335
+ await this.executeMigration(migration, ...ctxArgs);
336
+ }
337
+ if (cfg.setCurrentVersion && scopedAdapter) {
338
+ const finalVersion = cfg.targetVersion ||
339
+ plan[plan.length - 1]?.version ||
340
+ currentVersion ||
341
+ undefined;
342
+ if (finalVersion)
343
+ await cfg.setCurrentVersion(this.normalizeVersion(finalVersion), scopedAdapter, ...ctxArgs);
344
+ }
345
+ return undefined;
346
+ }
347
+ async migrateViaTasks(qr, adapter, ...args) {
348
+ const { ctx, ctxArgs, log } = (await this.logCtx(args, PersistenceKeys.MIGRATION, true)).for(this.migrateViaTasks);
349
+ void qr;
350
+ void adapter;
351
+ const cfg = this.config;
352
+ const targetFlavour = cfg.persistenceFlavour;
353
+ const includeGeneric = cfg.includeGenericInTaskMode ?? true;
354
+ const scopedAdapter = targetFlavour
355
+ ? Adapter.get(targetFlavour)
356
+ : undefined;
357
+ let currentVersion;
358
+ if (cfg.retrieveLastVersion && scopedAdapter) {
359
+ const retrieved = await cfg.retrieveLastVersion(scopedAdapter, ...ctxArgs);
360
+ if (retrieved)
361
+ currentVersion = this.normalizeVersion(retrieved);
362
+ }
363
+ const plan = this.buildExecutionPlan({
364
+ fromVersion: currentVersion,
365
+ toVersion: cfg.targetVersion,
366
+ targetFlavour,
367
+ includeGeneric,
368
+ });
369
+ log.debug(`sorted migration before execution: ${plan.map((s) => `${s.reference}@${s.version}`)}`);
370
+ this.queuedTaskChain = [];
371
+ if (plan.length) {
372
+ const tasks = this.buildMigrationTasksForPlan(plan, ...ctxArgs);
373
+ if (cfg.taskService) {
374
+ let dependsOnTaskId;
375
+ for (const versionTask of tasks) {
376
+ if (dependsOnTaskId) {
377
+ versionTask.task.dependencies = [
378
+ ...(versionTask.task.dependencies || []),
379
+ dependsOnTaskId,
380
+ ];
381
+ }
382
+ const created = await cfg.taskService.push(versionTask.task, false, ...ctxArgs);
383
+ dependsOnTaskId = created.id;
384
+ this.queuedTaskChain.push({
385
+ id: created.id,
386
+ version: versionTask.version,
387
+ });
388
+ if (!created?.id) {
389
+ log.warn(`TaskService.push returned missing id for version ${versionTask.version}`);
390
+ }
391
+ ctx.pushPending(PersistenceKeys.MIGRATION, created.id);
392
+ }
145
393
  }
146
- catch (e) {
147
- throw new MigrationError(`failed to conclude migration ${m.reference}: ${e}`);
394
+ else {
395
+ for (const migration of plan) {
396
+ await this.executeMigration(migration, ...ctxArgs);
397
+ }
398
+ if (cfg.setCurrentVersion && scopedAdapter) {
399
+ const finalVersion = cfg.targetVersion ||
400
+ plan[plan.length - 1]?.version ||
401
+ currentVersion ||
402
+ undefined;
403
+ if (finalVersion)
404
+ await cfg.setCurrentVersion(this.normalizeVersion(finalVersion), scopedAdapter, ...ctxArgs);
405
+ }
148
406
  }
149
407
  }
150
408
  return undefined;
151
409
  }
410
+ async track(taskIds, ...args) {
411
+ const { ctxArgs } = (await this.logCtx(args, PersistenceKeys.MIGRATION, true)).for(this.track);
412
+ const cfg = this.config;
413
+ if (!cfg.taskService || !cfg.taskMode)
414
+ return;
415
+ const explicitTaskIds = typeof taskIds === "string"
416
+ ? [taskIds]
417
+ : Array.isArray(taskIds)
418
+ ? taskIds
419
+ : undefined;
420
+ const queuedIds = this.queuedTaskChain.map((task) => task.id);
421
+ const pendingIds = this.migrationTaskIdsFromContext(PersistenceKeys.MIGRATION, ctxArgs);
422
+ const ids = explicitTaskIds?.length
423
+ ? explicitTaskIds
424
+ : queuedIds.length
425
+ ? queuedIds
426
+ : pendingIds;
427
+ if (!ids.length)
428
+ return;
429
+ const versionByTaskId = this.queuedTaskChain.reduce((acc, task) => {
430
+ acc[task.id] = task.version;
431
+ return acc;
432
+ }, {});
433
+ const scopedAdapter = this.config.persistenceFlavour
434
+ ? Adapter.get(this.config.persistenceFlavour)
435
+ : undefined;
436
+ for (const id of ids) {
437
+ const { tracker } = await cfg.taskService.track(id, ...ctxArgs);
438
+ await tracker.wait();
439
+ if (cfg.setCurrentVersion && scopedAdapter && versionByTaskId[id]) {
440
+ await cfg.setCurrentVersion(this.normalizeVersion(versionByTaskId[id]), scopedAdapter, ...ctxArgs);
441
+ }
442
+ }
443
+ }
444
+ async retry(taskIds, ...args) {
445
+ const { ctxArgs } = (await this.logCtx(args, PersistenceKeys.MIGRATION, true)).for(this.retry);
446
+ const cfg = this.config;
447
+ if (!cfg.taskMode || !cfg.taskService) {
448
+ await this.migrateNormally(undefined, undefined, ...ctxArgs);
449
+ return;
450
+ }
451
+ const explicitTaskIds = typeof taskIds === "string"
452
+ ? [taskIds]
453
+ : Array.isArray(taskIds)
454
+ ? taskIds
455
+ : undefined;
456
+ const queuedIds = this.queuedTaskChain.map((task) => task.id);
457
+ const pendingIds = this.migrationTaskIdsFromContext(PersistenceKeys.MIGRATION, ctxArgs);
458
+ const ids = explicitTaskIds?.length
459
+ ? explicitTaskIds
460
+ : queuedIds.length
461
+ ? queuedIds
462
+ : pendingIds;
463
+ if (!ids.length) {
464
+ await this.migrateViaTasks(undefined, undefined, ...ctxArgs);
465
+ return;
466
+ }
467
+ const taskRepo = cfg.taskService.client.tasks;
468
+ const updateRepo = typeof taskRepo?.override === "function"
469
+ ? taskRepo.override({ ignoreHandlers: true })
470
+ : taskRepo;
471
+ for (const id of ids) {
472
+ const tracked = await cfg.taskService.track(id, ...ctxArgs);
473
+ const task = tracked.task;
474
+ if (![TaskStatus.FAILED, TaskStatus.CANCELED].includes(task.status))
475
+ continue;
476
+ const patched = new TaskModel({
477
+ ...task,
478
+ status: TaskStatus.PENDING,
479
+ error: undefined,
480
+ nextRunAt: undefined,
481
+ scheduledTo: undefined,
482
+ leaseOwner: undefined,
483
+ leaseExpiry: undefined,
484
+ });
485
+ await updateRepo.update(patched, ...ctxArgs);
486
+ }
487
+ return;
488
+ }
152
489
  async up(qr, adapter, ...args) {
153
490
  const { log } = this.logCtx(args, this.down);
154
491
  log.verbose(style("Setting up migration process").yellow.bold);
492
+ void qr;
493
+ void adapter;
155
494
  }
156
495
  }
157
496
  const current = Metadata["innerGet"](Symbol.for(PersistenceKeys.MIGRATION), DefaultFlavour) ||
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationService.js","sourceRoot":"","sources":["../../../src/migrations/MigrationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MigrationService.js","sourceRoot":"","sources":["../../../src/migrations/MigrationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CompositeTaskBuilder } from "../tasks/builder";
2
+ import { TaskModel } from "../tasks/models/TaskModel";
3
+ import { MigrationStepInput } from "./MigrationTasks";
4
+ export declare class MigrationTaskBuilder {
5
+ protected readonly builder: CompositeTaskBuilder;
6
+ constructor(name?: string);
7
+ addMigrationStep(step: MigrationStepInput): this;
8
+ addStep(classification: string, input?: any): this;
9
+ build(): TaskModel;
10
+ }