@javalabs/prisma-client 1.0.4 → 1.0.8

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 (75) hide show
  1. package/dist/scripts/data-migration/batch-migrator.d.ts +14 -19
  2. package/dist/scripts/data-migration/batch-migrator.js +98 -297
  3. package/dist/scripts/data-migration/batch-migrator.js.map +1 -1
  4. package/dist/scripts/data-migration/data-transformer.d.ts +16 -7
  5. package/dist/scripts/data-migration/data-transformer.js +169 -133
  6. package/dist/scripts/data-migration/data-transformer.js.map +1 -1
  7. package/dist/scripts/data-migration/db-connector.d.ts +6 -1
  8. package/dist/scripts/data-migration/db-connector.js +44 -8
  9. package/dist/scripts/data-migration/db-connector.js.map +1 -1
  10. package/dist/scripts/data-migration/dependency-resolver.d.ts +10 -10
  11. package/dist/scripts/data-migration/dependency-resolver.js +92 -211
  12. package/dist/scripts/data-migration/dependency-resolver.js.map +1 -1
  13. package/dist/scripts/data-migration/foreign-key-manager.d.ts +6 -5
  14. package/dist/scripts/data-migration/foreign-key-manager.js +108 -18
  15. package/dist/scripts/data-migration/foreign-key-manager.js.map +1 -1
  16. package/dist/scripts/data-migration/migration-config.json +63 -0
  17. package/dist/scripts/data-migration/migration-tool.d.ts +25 -6
  18. package/dist/scripts/data-migration/migration-tool.js +78 -38
  19. package/dist/scripts/data-migration/migration-tool.js.map +1 -1
  20. package/dist/scripts/data-migration/multi-source-migrator.d.ts +17 -0
  21. package/dist/scripts/data-migration/multi-source-migrator.js +130 -0
  22. package/dist/scripts/data-migration/multi-source-migrator.js.map +1 -0
  23. package/dist/scripts/data-migration/schema-utils.d.ts +3 -3
  24. package/dist/scripts/data-migration/schema-utils.js +62 -19
  25. package/dist/scripts/data-migration/schema-utils.js.map +1 -1
  26. package/dist/scripts/data-migration/tenant-migrator.js +9 -2
  27. package/dist/scripts/data-migration/tenant-migrator.js.map +1 -1
  28. package/dist/scripts/data-migration/typecast-manager.d.ts +7 -3
  29. package/dist/scripts/data-migration/typecast-manager.js +169 -25
  30. package/dist/scripts/data-migration/typecast-manager.js.map +1 -1
  31. package/dist/scripts/data-migration/types.d.ts +68 -2
  32. package/dist/scripts/database-initializer.d.ts +5 -0
  33. package/dist/scripts/database-initializer.js +45 -0
  34. package/dist/scripts/database-initializer.js.map +1 -0
  35. package/dist/scripts/fix-table-indexes.d.ts +26 -0
  36. package/dist/scripts/fix-table-indexes.js +460 -0
  37. package/dist/scripts/fix-table-indexes.js.map +1 -0
  38. package/dist/scripts/multi-db-migration.d.ts +1 -0
  39. package/dist/scripts/multi-db-migration.js +55 -0
  40. package/dist/scripts/multi-db-migration.js.map +1 -0
  41. package/dist/scripts/post-migration-validator.d.ts +18 -5
  42. package/dist/scripts/post-migration-validator.js +61 -39
  43. package/dist/scripts/post-migration-validator.js.map +1 -1
  44. package/dist/scripts/run-migration.js +83 -96
  45. package/dist/scripts/run-migration.js.map +1 -1
  46. package/dist/scripts/sequence-synchronizer.d.ts +8 -0
  47. package/dist/scripts/sequence-synchronizer.js +88 -0
  48. package/dist/scripts/sequence-synchronizer.js.map +1 -0
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/migration-config.json +40 -72
  51. package/{migration-config-public.json → migration-config.json.bk} +14 -14
  52. package/package.json +10 -3
  53. package/prisma/migrations/{20250422001248_add_bank_account_id → 0_init}/migration.sql +269 -47
  54. package/prisma/migrations/20250505171324_add_bank_owner_name_in_manual_transfer/migration.sql +2 -0
  55. package/prisma/migrations/20250505173850_add_method_name_in_manual_transfer/migration.sql +2 -0
  56. package/prisma/migrations/migration_lock.toml +2 -2
  57. package/prisma/schema.prisma +214 -77
  58. package/src/scripts/data-migration/batch-migrator.ts +192 -513
  59. package/src/scripts/data-migration/data-transformer.ts +252 -203
  60. package/src/scripts/data-migration/db-connector.ts +66 -13
  61. package/src/scripts/data-migration/dependency-resolver.ts +121 -266
  62. package/src/scripts/data-migration/foreign-key-manager.ts +214 -32
  63. package/src/scripts/data-migration/migration-config.json +63 -0
  64. package/src/scripts/data-migration/migration-tool.ts +377 -225
  65. package/src/scripts/data-migration/schema-utils.ts +94 -32
  66. package/src/scripts/data-migration/tenant-migrator.ts +12 -5
  67. package/src/scripts/data-migration/typecast-manager.ts +186 -31
  68. package/src/scripts/data-migration/types.ts +78 -5
  69. package/src/scripts/database-initializer.ts +49 -0
  70. package/src/scripts/fix-table-indexes.ts +602 -0
  71. package/src/scripts/post-migration-validator.ts +206 -107
  72. package/src/scripts/run-migration.ts +140 -124
  73. package/src/scripts/sequence-synchronizer.ts +127 -0
  74. package/prisma/migrations/20250422001957_add_bank_account_id_relations/migration.sql +0 -14
  75. package/src/scripts/dumps/source_dump_20250413_112626.sql +0 -1527
@@ -11,7 +11,7 @@ class PostMigrationValidator {
11
11
  constructor(sourceUrl = process.env.SOURCE_DATABASE_URL, targetUrl = process.env.DATABASE_URL) {
12
12
  this.sourceUrl = sourceUrl;
13
13
  this.targetUrl = targetUrl;
14
- this.logger = new common_1.Logger('PostMigrationValidator');
14
+ this.logger = new common_1.Logger("PostMigrationValidator");
15
15
  this.issues = [];
16
16
  this.sourcePool = new pg.Pool({
17
17
  connectionString: this.sourceUrl,
@@ -19,16 +19,32 @@ class PostMigrationValidator {
19
19
  this.targetPool = new pg.Pool({
20
20
  connectionString: this.targetUrl,
21
21
  });
22
- const reportsDir = path.join(process.cwd(), 'migration-logs');
22
+ const reportsDir = path.join(process.cwd(), "migration-logs");
23
23
  if (!fs.existsSync(reportsDir)) {
24
24
  fs.mkdirSync(reportsDir, { recursive: true });
25
25
  }
26
- const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\..+/, '');
26
+ const timestamp = new Date()
27
+ .toISOString()
28
+ .replace(/:/g, "-")
29
+ .replace(/\..+/, "");
27
30
  this.reportPath = path.join(reportsDir, `post-migration-report-${timestamp}.json`);
28
31
  }
29
- async validate() {
32
+ async validate(options) {
33
+ const issues = [];
34
+ const timestamp = new Date().toISOString();
30
35
  try {
31
- this.logger.log('Starting post-migration validation');
36
+ if (options === null || options === void 0 ? void 0 : options.publicOnly) {
37
+ this.logger.log("Running validation in public-only mode");
38
+ return {
39
+ success: true,
40
+ issueCount: 0,
41
+ timestamp,
42
+ sourceDatabase: process.env.SOURCE_DATABASE_URL,
43
+ targetDatabase: process.env.DATABASE_URL,
44
+ issues: [],
45
+ };
46
+ }
47
+ this.logger.log("Starting post-migration validation");
32
48
  const apiKeysResult = await this.sourcePool.query(`
33
49
  SELECT api_key, provider_id
34
50
  FROM api_keys
@@ -43,33 +59,39 @@ class PostMigrationValidator {
43
59
  this.logger.log(`Validation completed with ${this.issues.length} issues found`);
44
60
  if (this.issues.length > 0) {
45
61
  this.logger.log(`Check the full report at: ${this.reportPath}`);
46
- this.logger.log('Sample issues:');
62
+ this.logger.log("Sample issues:");
47
63
  for (let i = 0; i < Math.min(5, this.issues.length); i++) {
48
64
  const issue = this.issues[i];
49
65
  this.logger.log(`- ${issue.type}: ${issue.message}`);
50
66
  }
51
67
  }
52
68
  else {
53
- this.logger.log('No issues found. Migration was successful.');
69
+ this.logger.log("No issues found. Migration was successful.");
54
70
  }
55
71
  return {
56
72
  success: this.issues.length === 0,
57
73
  issueCount: this.issues.length,
58
- reportPath: this.reportPath
74
+ timestamp,
75
+ sourceDatabase: this.sourceUrl,
76
+ targetDatabase: this.targetUrl,
77
+ issues: this.issues,
59
78
  };
60
79
  }
61
80
  catch (error) {
62
81
  this.logger.error(`Error during validation: ${error.message}`, error.stack);
63
82
  this.issues.push({
64
- type: 'VALIDATION_ERROR',
83
+ type: "VALIDATION_ERROR",
65
84
  message: `Validation process failed: ${error.message}`,
66
- details: error.stack
85
+ details: error.stack,
67
86
  });
68
87
  this.saveReport();
69
88
  return {
70
89
  success: false,
71
90
  issueCount: this.issues.length,
72
- reportPath: this.reportPath
91
+ timestamp,
92
+ sourceDatabase: this.sourceUrl,
93
+ targetDatabase: this.targetUrl,
94
+ issues: this.issues,
73
95
  };
74
96
  }
75
97
  finally {
@@ -88,10 +110,10 @@ class PostMigrationValidator {
88
110
  if (schemaExistsResult.rows.length === 0) {
89
111
  this.logger.warn(`Schema ${tenantId} does not exist in target database`);
90
112
  this.issues.push({
91
- type: 'MISSING_SCHEMA',
113
+ type: "MISSING_SCHEMA",
92
114
  tenantId,
93
115
  providerId,
94
- message: `Schema ${tenantId} does not exist in target database. Migration failed for this tenant.`
116
+ message: `Schema ${tenantId} does not exist in target database. Migration failed for this tenant.`,
95
117
  });
96
118
  return;
97
119
  }
@@ -110,10 +132,10 @@ class PostMigrationValidator {
110
132
  catch (error) {
111
133
  this.logger.error(`Error validating tenant ${tenantId}: ${error.message}`);
112
134
  this.issues.push({
113
- type: 'TENANT_VALIDATION_ERROR',
135
+ type: "TENANT_VALIDATION_ERROR",
114
136
  tenantId,
115
137
  providerId,
116
- message: `Error validating tenant ${tenantId}: ${error.message}`
138
+ message: `Error validating tenant ${tenantId}: ${error.message}`,
117
139
  });
118
140
  }
119
141
  }
@@ -140,23 +162,23 @@ class PostMigrationValidator {
140
162
  this.logger.log(`Table ${tableName} for tenant ${tenantId}: ${targetCount}/${sourceCount} records migrated (${migrationPercentage.toFixed(2)}%)`);
141
163
  if (migrationPercentage < 95) {
142
164
  this.issues.push({
143
- type: 'DATA_MISMATCH',
165
+ type: "DATA_MISMATCH",
144
166
  tenantId,
145
167
  tableName,
146
168
  sourceCount,
147
169
  targetCount,
148
170
  migrationPercentage: parseFloat(migrationPercentage.toFixed(2)),
149
- message: `Table ${tableName} for tenant ${tenantId}: Only ${migrationPercentage.toFixed(2)}% of records were migrated (${targetCount}/${sourceCount})`
171
+ message: `Table ${tableName} for tenant ${tenantId}: Only ${migrationPercentage.toFixed(2)}% of records were migrated (${targetCount}/${sourceCount})`,
150
172
  });
151
173
  }
152
174
  if (targetCount > sourceCount) {
153
175
  this.issues.push({
154
- type: 'EXCESS_DATA',
176
+ type: "EXCESS_DATA",
155
177
  tenantId,
156
178
  tableName,
157
179
  sourceCount,
158
180
  targetCount,
159
- message: `Table ${tableName} for tenant ${tenantId}: Target has more records (${targetCount}) than source (${sourceCount})`
181
+ message: `Table ${tableName} for tenant ${tenantId}: Target has more records (${targetCount}) than source (${sourceCount})`,
160
182
  });
161
183
  }
162
184
  if (sourceCount > 0 && targetCount > 0) {
@@ -166,10 +188,10 @@ class PostMigrationValidator {
166
188
  catch (error) {
167
189
  this.logger.error(`Error validating table ${tableName} for tenant ${tenantId}: ${error.message}`);
168
190
  this.issues.push({
169
- type: 'TABLE_VALIDATION_ERROR',
191
+ type: "TABLE_VALIDATION_ERROR",
170
192
  tenantId,
171
193
  tableName,
172
- message: `Error validating table ${tableName} for tenant ${tenantId}: ${error.message}`
194
+ message: `Error validating table ${tableName} for tenant ${tenantId}: ${error.message}`,
173
195
  });
174
196
  }
175
197
  }
@@ -221,27 +243,27 @@ class PostMigrationValidator {
221
243
  `, [primaryKeyValue]);
222
244
  if (targetRecordResult.rows.length === 0) {
223
245
  this.issues.push({
224
- type: 'MISSING_RECORD',
246
+ type: "MISSING_RECORD",
225
247
  tenantId,
226
248
  tableName,
227
249
  recordId: primaryKeyValue,
228
- message: `Record with ID ${primaryKeyValue} in table ${tableName} for tenant ${tenantId} was not migrated`
250
+ message: `Record with ID ${primaryKeyValue} in table ${tableName} for tenant ${tenantId} was not migrated`,
229
251
  });
230
252
  continue;
231
253
  }
232
254
  const targetRecord = targetRecordResult.rows[0];
233
255
  for (const columnName in sourceRecord) {
234
- if (columnName === 'provider_id') {
256
+ if (columnName === "provider_id") {
235
257
  continue;
236
258
  }
237
259
  if (!(columnName in targetRecord)) {
238
260
  this.issues.push({
239
- type: 'MISSING_COLUMN',
261
+ type: "MISSING_COLUMN",
240
262
  tenantId,
241
263
  tableName,
242
264
  recordId: primaryKeyValue,
243
265
  columnName,
244
- message: `Column ${columnName} is missing in record with ID ${primaryKeyValue} in table ${tableName} for tenant ${tenantId}`
266
+ message: `Column ${columnName} is missing in record with ID ${primaryKeyValue} in table ${tableName} for tenant ${tenantId}`,
245
267
  });
246
268
  continue;
247
269
  }
@@ -249,14 +271,14 @@ class PostMigrationValidator {
249
271
  const targetValue = targetRecord[columnName];
250
272
  if (this.areValuesDifferent(sourceValue, targetValue)) {
251
273
  this.issues.push({
252
- type: 'VALUE_MISMATCH',
274
+ type: "VALUE_MISMATCH",
253
275
  tenantId,
254
276
  tableName,
255
277
  recordId: primaryKeyValue,
256
278
  columnName,
257
279
  sourceValue,
258
280
  targetValue,
259
- message: `Value mismatch for column ${columnName} in record with ID ${primaryKeyValue} in table ${tableName} for tenant ${tenantId}: ${sourceValue} (source) vs ${targetValue} (target)`
281
+ message: `Value mismatch for column ${columnName} in record with ID ${primaryKeyValue} in table ${tableName} for tenant ${tenantId}: ${sourceValue} (source) vs ${targetValue} (target)`,
260
282
  });
261
283
  }
262
284
  }
@@ -265,10 +287,10 @@ class PostMigrationValidator {
265
287
  catch (error) {
266
288
  this.logger.error(`Error validating random records for table ${tableName} in tenant ${tenantId}: ${error.message}`);
267
289
  this.issues.push({
268
- type: 'RECORD_VALIDATION_ERROR',
290
+ type: "RECORD_VALIDATION_ERROR",
269
291
  tenantId,
270
292
  tableName,
271
- message: `Error validating random records for table ${tableName} in tenant ${tenantId}: ${error.message}`
293
+ message: `Error validating random records for table ${tableName} in tenant ${tenantId}: ${error.message}`,
272
294
  });
273
295
  }
274
296
  }
@@ -282,14 +304,14 @@ class PostMigrationValidator {
282
304
  if (sourceValue instanceof Date && targetValue instanceof Date) {
283
305
  return sourceValue.toISOString() !== targetValue.toISOString();
284
306
  }
285
- if (typeof sourceValue === 'number' && typeof targetValue === 'number') {
307
+ if (typeof sourceValue === "number" && typeof targetValue === "number") {
286
308
  const epsilon = 0.0001;
287
309
  return Math.abs(sourceValue - targetValue) > epsilon;
288
310
  }
289
- if (typeof sourceValue === 'string' && typeof targetValue === 'string') {
311
+ if (typeof sourceValue === "string" && typeof targetValue === "string") {
290
312
  return sourceValue !== targetValue;
291
313
  }
292
- if (typeof sourceValue === 'boolean' && typeof targetValue === 'boolean') {
314
+ if (typeof sourceValue === "boolean" && typeof targetValue === "boolean") {
293
315
  return sourceValue !== targetValue;
294
316
  }
295
317
  return String(sourceValue) !== String(targetValue);
@@ -301,16 +323,16 @@ class PostMigrationValidator {
301
323
  sourceDatabase: this.sourceUrl,
302
324
  targetDatabase: this.targetUrl,
303
325
  issueCount: this.issues.length,
304
- issues: this.issues
326
+ issues: this.issues,
305
327
  };
306
- fs.writeFileSync(this.reportPath, JSON.stringify(report, null, 2), 'utf8');
328
+ fs.writeFileSync(this.reportPath, JSON.stringify(report, null, 2), "utf8");
307
329
  }
308
330
  catch (error) {
309
331
  this.logger.error(`Error saving validation report: ${error.message}`);
310
332
  }
311
333
  }
312
334
  async cleanup() {
313
- this.logger.log('Cleaning up database connections');
335
+ this.logger.log("Cleaning up database connections");
314
336
  await this.sourcePool.end();
315
337
  await this.targetPool.end();
316
338
  }
@@ -322,17 +344,17 @@ if (require.main === module) {
322
344
  const validator = new PostMigrationValidator();
323
345
  const result = await validator.validate();
324
346
  if (result.success) {
325
- console.log('Post-migration validation successful! No issues found.');
347
+ console.log("Post-migration validation successful! No issues found.");
326
348
  process.exit(0);
327
349
  }
328
350
  else {
329
351
  console.log(`Post-migration validation completed with ${result.issueCount} issues found.`);
330
- console.log(`Check the full report at: ${result.reportPath}`);
352
+ console.log(JSON.stringify(result, null, 2));
331
353
  process.exit(1);
332
354
  }
333
355
  }
334
356
  catch (error) {
335
- console.error('Error:', error.message);
357
+ console.error("Error:", error.message);
336
358
  process.exit(1);
337
359
  }
338
360
  };
@@ -1 +1 @@
1
- {"version":3,"file":"post-migration-validator.js","sourceRoot":"","sources":["../../src/scripts/post-migration-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-migration-validator.js","sourceRoot":"","sources":["../../src/scripts/post-migration-validator.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,iCAAiC;AACjC,2CAAwC;AACxC,yBAAyB;AACzB,6BAA6B;AAE7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAkBhB,MAAa,sBAAsB;IAOjC,YACmB,YAAoB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EACnD,YAAoB,OAAO,CAAC,GAAG,CAAC,YAAY;QAD5C,cAAS,GAAT,SAAS,CAA0C;QACnD,cAAS,GAAT,SAAS,CAAmC;QAR9C,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAwB,CAAC,CAAC;QAIvD,WAAM,GAAU,EAAE,CAAC;QAMzB,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YAC5B,gBAAgB,EAAE,IAAI,CAAC,SAAS;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YAC5B,gBAAgB,EAAE,IAAI,CAAC,SAAS;SACjC,CAAC,CAAC;QAGH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAGD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE;aACzB,WAAW,EAAE;aACb,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CACzB,UAAU,EACV,yBAAyB,SAAS,OAAO,CAC1C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAEd;QACC,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,CAAC;YAEH,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;gBAE1D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,CAAC;oBACb,SAAS;oBACT,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;oBAC/C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;oBACxC,MAAM,EAAE,EAAE;iBACX,CAAC;YACJ,CAAC;YAGD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAGtD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;;OAGjD,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,SAAS,aAAa,CAAC,IAAI,CAAC,MAAM,uBAAuB,CAC1D,CAAC;YAGF,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;gBAChC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;gBAEtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACtD,CAAC;YAGD,IAAI,CAAC,UAAU,EAAE,CAAC;YAGlB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,6BAA6B,IAAI,CAAC,MAAM,CAAC,MAAM,eAAe,CAC/D,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAGhE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACjC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC9B,SAAS;gBACT,cAAc,EAAE,IAAI,CAAC,SAAS;gBAC9B,cAAc,EAAE,IAAI,CAAC,SAAS;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4BAA4B,KAAK,CAAC,OAAO,EAAE,EAC3C,KAAK,CAAC,KAAK,CACZ,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE;gBACtD,OAAO,EAAE,KAAK,CAAC,KAAK;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC9B,SAAS;gBACT,cAAc,EAAE,IAAI,CAAC,SAAS;gBAC9B,cAAc,EAAE,IAAI,CAAC,SAAS;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,UAAkB;QACnE,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,+BAA+B,QAAQ,kBAAkB,UAAU,GAAG,CACvE,CAAC;QAEF,IAAI,CAAC;YAEH,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACpD;;;;;OAKD,EACC,CAAC,QAAQ,CAAC,CACX,CAAC;YAEF,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,UAAU,QAAQ,oCAAoC,CACvD,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,gBAAgB;oBACtB,QAAQ;oBACR,UAAU;oBACV,OAAO,EAAE,UAAU,QAAQ,uEAAuE;iBACnG,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAGD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;;;;;OAMhD,CAAC,CAAC;YAGH,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACtC,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2BAA2B,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CACxD,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,yBAAyB;gBAC/B,QAAQ;gBACR,UAAU;gBACV,OAAO,EAAE,2BAA2B,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aACjE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,QAAgB,EAChB,SAAiB,EACjB,UAAkB;QAElB,IAAI,CAAC;YAEH,IAAI,gBAAgB,GAAG,iCAAiC,SAAS,EAAE,CAAC;YAGpE,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACrD;;;;;;;OAOD,EACC,CAAC,SAAS,CAAC,CACZ,CAAC;YAEF,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,gBAAgB,IAAI,wBAAwB,UAAU,EAAE,CAAC;YAC3D,CAAC;YAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAG9D,MAAM,gBAAgB,GAAG,kCAAkC,QAAQ,MAAM,SAAS,GAAG,CAAC;YACtF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAG9D,MAAM,mBAAmB,GACvB,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAE5D,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,SAAS,SAAS,eAAe,QAAQ,KAAK,WAAW,IAAI,WAAW,sBAAsB,mBAAmB,CAAC,OAAO,CACvH,CAAC,CACF,IAAI,CACN,CAAC;YAGF,IAAI,mBAAmB,GAAG,EAAE,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,eAAe;oBACrB,QAAQ;oBACR,SAAS;oBACT,WAAW;oBACX,WAAW;oBACX,mBAAmB,EAAE,UAAU,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC/D,OAAO,EAAE,SAAS,SAAS,eAAe,QAAQ,UAAU,mBAAmB,CAAC,OAAO,CACrF,CAAC,CACF,+BAA+B,WAAW,IAAI,WAAW,GAAG;iBAC9D,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,aAAa;oBACnB,QAAQ;oBACR,SAAS;oBACT,WAAW;oBACX,WAAW;oBACX,OAAO,EAAE,SAAS,SAAS,eAAe,QAAQ,8BAA8B,WAAW,kBAAkB,WAAW,GAAG;iBAC5H,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0BAA0B,SAAS,eAAe,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/E,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ;gBACR,SAAS;gBACT,OAAO,EAAE,0BAA0B,SAAS,eAAe,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aACxF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,QAAgB,EAChB,SAAiB,EACjB,UAAkB;QAElB,IAAI,CAAC;YAEH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAClD;;;;;;;;;;OAUD,EACC,CAAC,SAAS,CAAC,CACZ,CAAC;YAEF,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;gBAChE,OAAO;YACT,CAAC;YAED,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAG9D,IAAI,kBAAkB,GAAG;;eAEhB,SAAS;OACjB,CAAC;YAGF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACrD;;;;;;;OAOD,EACC,CAAC,SAAS,CAAC,CACZ,CAAC;YAEF,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,kBAAkB,IAAI,wBAAwB,UAAU,EAAE,CAAC;YAC7D,CAAC;YAED,kBAAkB,IAAI;;;OAGrB,CAAC;YAEF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACrD,kBAAkB,CACnB,CAAC;YAGF,KAAK,MAAM,YAAY,IAAI,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBACpD,MAAM,eAAe,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBAEvD,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACpD;;kBAEQ,QAAQ,MAAM,SAAS;mBACtB,gBAAgB;;SAE1B,EACC,CAAC,eAAe,CAAC,CAClB,CAAC;gBAEF,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,gBAAgB;wBACtB,QAAQ;wBACR,SAAS;wBACT,QAAQ,EAAE,eAAe;wBACzB,OAAO,EAAE,kBAAkB,eAAe,aAAa,SAAS,eAAe,QAAQ,mBAAmB;qBAC3G,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAGhD,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;oBAEtC,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;wBACjC,SAAS;oBACX,CAAC;oBAGD,IAAI,CAAC,CAAC,UAAU,IAAI,YAAY,CAAC,EAAE,CAAC;wBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,gBAAgB;4BACtB,QAAQ;4BACR,SAAS;4BACT,QAAQ,EAAE,eAAe;4BACzB,UAAU;4BACV,OAAO,EAAE,UAAU,UAAU,iCAAiC,eAAe,aAAa,SAAS,eAAe,QAAQ,EAAE;yBAC7H,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAGD,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;oBAE7C,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;wBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;4BACf,IAAI,EAAE,gBAAgB;4BACtB,QAAQ;4BACR,SAAS;4BACT,QAAQ,EAAE,eAAe;4BACzB,UAAU;4BACV,WAAW;4BACX,WAAW;4BACX,OAAO,EAAE,6BAA6B,UAAU,sBAAsB,eAAe,aAAa,SAAS,eAAe,QAAQ,KAAK,WAAW,gBAAgB,WAAW,WAAW;yBACzL,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,6CAA6C,SAAS,cAAc,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CACjG,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,yBAAyB;gBAC/B,QAAQ;gBACR,SAAS;gBACT,OAAO,EAAE,6CAA6C,SAAS,cAAc,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE;aAC1G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,WAAgB,EAAE,WAAgB;QAE3D,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAGD,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,WAAW,YAAY,IAAI,IAAI,WAAW,YAAY,IAAI,EAAE,CAAC;YAC/D,OAAO,WAAW,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;QACjE,CAAC;QAGD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,MAAM,CAAC;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC;QACvD,CAAC;QAGD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YACvE,OAAO,WAAW,KAAK,WAAW,CAAC;QACrC,CAAC;QAGD,IAAI,OAAO,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,SAAS,EAAE,CAAC;YACzE,OAAO,WAAW,KAAK,WAAW,CAAC;QACrC,CAAC;QAGD,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,cAAc,EAAE,IAAI,CAAC,SAAS;gBAC9B,cAAc,EAAE,IAAI,CAAC,SAAS;gBAC9B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC;YAEF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAC/B,MAAM,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;CACF;AA3dD,wDA2dC;AAGD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;YAE1C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,4CAA4C,MAAM,CAAC,UAAU,gBAAgB,CAC9E,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,GAAG,EAAE,CAAC;AACR,CAAC"}
@@ -5,11 +5,25 @@ const dotenv = require("dotenv");
5
5
  const child_process_1 = require("child_process");
6
6
  const util_1 = require("util");
7
7
  const fix_schema_discrepancies_1 = require("./fix-schema-discrepancies");
8
- const sync_enum_types_1 = require("./sync-enum-types");
9
- const client_1 = require("@prisma/client");
8
+ const fs = require("fs");
9
+ const path = require("path");
10
+ const database_initializer_1 = require("./database-initializer");
11
+ const sequence_synchronizer_1 = require("./sequence-synchronizer");
10
12
  dotenv.config();
11
13
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
12
14
  const program = new commander_1.Command();
15
+ async function loadMigrationConfig(configPath) {
16
+ const defaultPath = path.join(__dirname, "data-migration", "migration-config.json");
17
+ const filePath = configPath || defaultPath;
18
+ try {
19
+ const configContent = await fs.promises.readFile(filePath, "utf8");
20
+ return JSON.parse(configContent);
21
+ }
22
+ catch (error) {
23
+ console.error(`Error loading migration config from ${filePath}:`, error);
24
+ throw error;
25
+ }
26
+ }
13
27
  async function testDatabaseConnection(url, name) {
14
28
  const { Pool } = await Promise.resolve().then(() => require("pg"));
15
29
  const pool = new Pool({ connectionString: url });
@@ -29,66 +43,6 @@ async function testDatabaseConnection(url, name) {
29
43
  await pool.end();
30
44
  }
31
45
  }
32
- async function initializeDatabase(options) {
33
- try {
34
- const { Pool } = await Promise.resolve().then(() => require("pg"));
35
- const pool = new Pool({ connectionString: process.env.DATABASE_URL });
36
- const tablesExist = await checkIfTablesExist(pool);
37
- if (!tablesExist) {
38
- console.log("Database empty, creating initial schema...");
39
- await execAsync("npx prisma db push --skip-generate");
40
- }
41
- else {
42
- console.log("Database schema already exists, skipping schema creation");
43
- await execAsync("npx prisma migrate reset --force --skip-generate --skip-seed");
44
- }
45
- if (!options.skipEnumSync) {
46
- console.log("Synchronizing enum types...");
47
- const enumSynchronizer = new sync_enum_types_1.EnumSynchronizer(process.env.SOURCE_DATABASE_URL, process.env.DATABASE_URL);
48
- await enumSynchronizer.synchronizeEnums();
49
- }
50
- if (!options.skipDataMigration) {
51
- console.log("Starting data migration...");
52
- const { DataMigrationTool } = await Promise.resolve().then(() => require("./data-migration/migration-tool"));
53
- const migrationTool = new DataMigrationTool({
54
- sourcePool: new Pool({
55
- connectionString: process.env.SOURCE_DATABASE_URL,
56
- }),
57
- targetPool: pool,
58
- sourcePrisma: new client_1.PrismaClient({
59
- datasources: { db: { url: process.env.SOURCE_DATABASE_URL } },
60
- }),
61
- targetPrisma: new client_1.PrismaClient({
62
- datasources: { db: { url: process.env.DATABASE_URL } },
63
- }),
64
- });
65
- await migrationTool.migrateData({
66
- publicOnly: options.mode === "public-only",
67
- });
68
- }
69
- await pool.end();
70
- return true;
71
- }
72
- catch (error) {
73
- console.error("Error initializing database:", error);
74
- return false;
75
- }
76
- }
77
- async function checkIfTablesExist(pool) {
78
- try {
79
- const result = await pool.query(`
80
- SELECT COUNT(*)
81
- FROM information_schema.tables
82
- WHERE table_schema = 'public'
83
- AND table_type = 'BASE TABLE'
84
- `);
85
- return parseInt(result.rows[0].count) > 0;
86
- }
87
- catch (error) {
88
- console.error("Error checking tables:", error);
89
- return false;
90
- }
91
- }
92
46
  program
93
47
  .command("migrate")
94
48
  .description("Run the data migration process")
@@ -104,6 +58,9 @@ program
104
58
  .option("--auto-fix-schema", "Automatically fix schema discrepancies", false)
105
59
  .option("--force", "Force migration even if validation fails", false)
106
60
  .option("-y, --yes", "Automatically answer yes to all prompts", false)
61
+ .option("--config-path <path>", "Path to migration config file")
62
+ .option("--skip-initialization", "Skip database initialization step", false)
63
+ .option("--skip-sequence-sync", "Skip sequence synchronization step", false)
107
64
  .action(async (options) => {
108
65
  if (options.source) {
109
66
  process.env.SOURCE_DATABASE_URL = options.source;
@@ -130,15 +87,19 @@ program
130
87
  process.exit(1);
131
88
  }
132
89
  try {
133
- await initializeDatabase(options);
90
+ if (!options.skipInitialization) {
91
+ console.log("Step 0: Checking database initialization...");
92
+ const initializer = new database_initializer_1.DatabaseInitializer(process.env.DATABASE_URL);
93
+ await initializer.initialize();
94
+ }
134
95
  if (!options.skipValidation) {
135
- console.log("Step 0: Running pre-migration validation...");
96
+ console.log("Step 1: Running pre-migration validation...");
136
97
  const { PreMigrationValidator } = await Promise.resolve().then(() => require("./pre-migration-validator"));
137
98
  const validator = new PreMigrationValidator();
138
99
  const validationResult = await validator.validate();
139
100
  if (!validationResult.success && !options.force) {
140
101
  console.log(`Pre-migration validation found ${validationResult.issueCount} issues.`);
141
- console.log(`Check the full report at: ${validationResult.reportPath}`);
102
+ console.log(JSON.stringify(validationResult, null, 2));
142
103
  if (options.yes) {
143
104
  console.log("Continuing with migration despite issues (--yes flag provided)");
144
105
  }
@@ -169,13 +130,28 @@ program
169
130
  }
170
131
  }
171
132
  if (!options.skipSchemaMigration) {
172
- console.log("Step 1: Migrating schema structure...");
133
+ console.log("Step 2: Migrating schema structure...");
173
134
  if (options.mode === "multi-tenant") {
174
135
  await execAsync("node dist/scripts/migrate-schema-structure.js");
175
136
  }
176
137
  else {
177
138
  const { Pool } = await Promise.resolve().then(() => require("pg"));
178
139
  const pool = new Pool({ connectionString: process.env.DATABASE_URL });
140
+ async function checkIfTablesExist(pool) {
141
+ try {
142
+ const result = await pool.query(`
143
+ SELECT COUNT(*)
144
+ FROM information_schema.tables
145
+ WHERE table_schema = 'public'
146
+ AND table_type = 'BASE TABLE'
147
+ `);
148
+ return parseInt(result.rows[0].count) > 0;
149
+ }
150
+ catch (error) {
151
+ console.error("Error checking tables:", error);
152
+ return false;
153
+ }
154
+ }
179
155
  const tablesExist = await checkIfTablesExist(pool);
180
156
  if (!tablesExist) {
181
157
  await execAsync("npx prisma migrate deploy");
@@ -183,22 +159,33 @@ program
183
159
  }
184
160
  }
185
161
  if (!options.skipEnumSync) {
186
- console.log("Step 2: Synchronizing enum types...");
162
+ console.log("Step 3: Synchronizing and fixing enum types...");
187
163
  const { EnumSynchronizer } = await Promise.resolve().then(() => require("./sync-enum-types"));
188
164
  const synchronizer = new EnumSynchronizer();
189
165
  await synchronizer.synchronizeEnums();
190
166
  console.log("Enum types synchronized successfully!");
191
- console.log("Step 2.1: Synchronizing enum values...");
167
+ console.log("Step 3.1: Synchronizing enum values...");
192
168
  const { EnumValueSynchronizer } = await Promise.resolve().then(() => require("./sync-enum-values"));
193
169
  const valueSynchronizer = new EnumValueSynchronizer();
194
170
  await valueSynchronizer.synchronizeEnumValues();
195
171
  console.log("Enum values synchronized successfully!");
172
+ console.log("Step 3.2: Fixing enum values...");
173
+ const { EnumFixer } = await Promise.resolve().then(() => require("./fix-enum-values"));
174
+ const enumFixer = new EnumFixer(process.env.DATABASE_URL);
175
+ await enumFixer.fixEnumValues();
176
+ console.log("Enum values fixed successfully!");
196
177
  }
178
+ console.log("Step 4: Fixing data type issues...");
179
+ const { DataTypeFixer } = await Promise.resolve().then(() => require("./fix-data-types"));
180
+ const fixer = new DataTypeFixer();
181
+ await fixer.fixDataTypes();
182
+ console.log("Data type fixing completed successfully!");
197
183
  if (!options.skipDataMigration) {
198
- console.log("Step 3: Migrating data with transformation...");
184
+ console.log("Step 5: Migrating data with transformation...");
199
185
  const { DataMigrationTool } = await Promise.resolve().then(() => require("./data-migration/migration-tool"));
200
186
  const { PrismaClient } = await Promise.resolve().then(() => require("@prisma/client"));
201
187
  const { Pool } = await Promise.resolve().then(() => require("pg"));
188
+ const migrationConfig = await loadMigrationConfig(options.configPath);
202
189
  const connections = {
203
190
  sourcePool: new Pool({
204
191
  connectionString: process.env.SOURCE_DATABASE_URL,
@@ -221,20 +208,18 @@ program
221
208
  };
222
209
  try {
223
210
  await connections.targetPool.query("SET session_replication_role = 'replica';");
224
- const migrationTool = new DataMigrationTool(connections);
225
211
  if (options.mode === "public-only") {
226
- await migrationTool.migrateData({
227
- publicOnly: true,
228
- targetSchema: "public",
229
- sourceSchema: "public",
230
- });
231
- }
232
- else {
233
- await migrationTool.migrateData({
234
- forceSingleTenant: false,
235
- multiTenant: true,
236
- });
212
+ migrationConfig.tables = Object.entries(migrationConfig.tables)
213
+ .filter(([_, config]) => config.type === "public")
214
+ .reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [key]: value })), {});
237
215
  }
216
+ const migrationTool = new DataMigrationTool(connections, Object.assign(Object.assign({}, migrationConfig), { tables: Object.entries(migrationConfig.tables).reduce((acc, [key, value]) => (Object.assign(Object.assign({}, acc), { [key]: Object.assign(Object.assign({}, value), { sourceTable: value.sourceTable || key, targetTable: value.targetTable || key }) })), {}) }), {
217
+ publicOnly: options.mode === "public-only",
218
+ targetSchema: "public",
219
+ sourceSchema: "public",
220
+ multiTenant: options.mode !== "public-only",
221
+ });
222
+ await migrationTool.migrate();
238
223
  }
239
224
  finally {
240
225
  await connections.targetPool.query("SET session_replication_role = 'origin';");
@@ -244,30 +229,32 @@ program
244
229
  await connections.targetPrisma.$disconnect();
245
230
  }
246
231
  }
247
- console.log("Step 4: Fixing enum values...");
248
- const { EnumFixer } = await Promise.resolve().then(() => require("./fix-enum-values"));
249
- const enumFixer = new EnumFixer(process.env.DATABASE_URL);
250
- await enumFixer.fixEnumValues();
251
- console.log("Enum values fixed successfully!");
252
- console.log("Step 5: Fixing data type issues...");
253
- const { DataTypeFixer } = await Promise.resolve().then(() => require("./fix-data-types"));
254
- const fixer = new DataTypeFixer();
255
- await fixer.fixDataTypes();
256
- console.log("Data type fixing completed successfully!");
257
232
  if (!options.skipValidation) {
258
233
  console.log("Step 6: Running post-migration validation...");
259
234
  const { PostMigrationValidator } = await Promise.resolve().then(() => require("./post-migration-validator"));
260
235
  const validator = new PostMigrationValidator();
261
- const result = await validator.validate();
236
+ const result = await validator.validate({
237
+ publicOnly: options.mode === "public-only",
238
+ });
262
239
  if (result.success) {
263
240
  console.log("Post-migration validation successful!");
264
241
  }
265
242
  else {
266
243
  console.log(`Post-migration validation found ${result.issueCount} issues.`);
267
- console.log(`Check the full report at: ${result.reportPath}`);
268
- console.log("You may need to run 'retry-failed' command to fix these issues.");
244
+ console.log(JSON.stringify(result, null, 2));
245
+ if (!options.force) {
246
+ console.error("Migration validation failed. Use --force to continue anyway.");
247
+ process.exit(1);
248
+ }
249
+ console.log("Continuing with migration despite validation issues (--force flag provided)");
269
250
  }
270
251
  }
252
+ if (!options.skipSequenceSync) {
253
+ console.log("Step 7: Synchronizing database sequences...");
254
+ const sequenceSynchronizer = new sequence_synchronizer_1.SequenceSynchronizer(process.env.DATABASE_URL);
255
+ await sequenceSynchronizer.synchronizeSequences();
256
+ console.log("Database sequences synchronized successfully!");
257
+ }
271
258
  console.log("Migration process completed successfully!");
272
259
  }
273
260
  catch (error) {
@@ -400,7 +387,7 @@ program
400
387
  }
401
388
  else {
402
389
  console.log(`Pre-migration validation found ${result.issueCount} issues.`);
403
- console.log(`Check the full report at: ${result.reportPath}`);
390
+ console.log(JSON.stringify(result, null, 2));
404
391
  if (options.yes) {
405
392
  console.log("Continuing with migration despite issues (--yes flag provided)");
406
393
  process.exit(0);
@@ -484,7 +471,7 @@ program
484
471
  }
485
472
  else {
486
473
  console.log(`Post-migration validation found ${result.issueCount} issues.`);
487
- console.log(`Check the full report at: ${result.reportPath}`);
474
+ console.log(JSON.stringify(result, null, 2));
488
475
  }
489
476
  }
490
477
  catch (error) {