@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.
- package/dist/scripts/data-migration/batch-migrator.d.ts +14 -19
- package/dist/scripts/data-migration/batch-migrator.js +98 -297
- package/dist/scripts/data-migration/batch-migrator.js.map +1 -1
- package/dist/scripts/data-migration/data-transformer.d.ts +16 -7
- package/dist/scripts/data-migration/data-transformer.js +169 -133
- package/dist/scripts/data-migration/data-transformer.js.map +1 -1
- package/dist/scripts/data-migration/db-connector.d.ts +6 -1
- package/dist/scripts/data-migration/db-connector.js +44 -8
- package/dist/scripts/data-migration/db-connector.js.map +1 -1
- package/dist/scripts/data-migration/dependency-resolver.d.ts +10 -10
- package/dist/scripts/data-migration/dependency-resolver.js +92 -211
- package/dist/scripts/data-migration/dependency-resolver.js.map +1 -1
- package/dist/scripts/data-migration/foreign-key-manager.d.ts +6 -5
- package/dist/scripts/data-migration/foreign-key-manager.js +108 -18
- package/dist/scripts/data-migration/foreign-key-manager.js.map +1 -1
- package/dist/scripts/data-migration/migration-config.json +63 -0
- package/dist/scripts/data-migration/migration-tool.d.ts +25 -6
- package/dist/scripts/data-migration/migration-tool.js +78 -38
- package/dist/scripts/data-migration/migration-tool.js.map +1 -1
- package/dist/scripts/data-migration/multi-source-migrator.d.ts +17 -0
- package/dist/scripts/data-migration/multi-source-migrator.js +130 -0
- package/dist/scripts/data-migration/multi-source-migrator.js.map +1 -0
- package/dist/scripts/data-migration/schema-utils.d.ts +3 -3
- package/dist/scripts/data-migration/schema-utils.js +62 -19
- package/dist/scripts/data-migration/schema-utils.js.map +1 -1
- package/dist/scripts/data-migration/tenant-migrator.js +9 -2
- package/dist/scripts/data-migration/tenant-migrator.js.map +1 -1
- package/dist/scripts/data-migration/typecast-manager.d.ts +7 -3
- package/dist/scripts/data-migration/typecast-manager.js +169 -25
- package/dist/scripts/data-migration/typecast-manager.js.map +1 -1
- package/dist/scripts/data-migration/types.d.ts +68 -2
- package/dist/scripts/database-initializer.d.ts +5 -0
- package/dist/scripts/database-initializer.js +45 -0
- package/dist/scripts/database-initializer.js.map +1 -0
- package/dist/scripts/fix-table-indexes.d.ts +26 -0
- package/dist/scripts/fix-table-indexes.js +460 -0
- package/dist/scripts/fix-table-indexes.js.map +1 -0
- package/dist/scripts/multi-db-migration.d.ts +1 -0
- package/dist/scripts/multi-db-migration.js +55 -0
- package/dist/scripts/multi-db-migration.js.map +1 -0
- package/dist/scripts/post-migration-validator.d.ts +18 -5
- package/dist/scripts/post-migration-validator.js +61 -39
- package/dist/scripts/post-migration-validator.js.map +1 -1
- package/dist/scripts/run-migration.js +83 -96
- package/dist/scripts/run-migration.js.map +1 -1
- package/dist/scripts/sequence-synchronizer.d.ts +8 -0
- package/dist/scripts/sequence-synchronizer.js +88 -0
- package/dist/scripts/sequence-synchronizer.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/migration-config.json +40 -72
- package/{migration-config-public.json → migration-config.json.bk} +14 -14
- package/package.json +10 -3
- package/prisma/migrations/{20250422001248_add_bank_account_id → 0_init}/migration.sql +269 -47
- package/prisma/migrations/20250505171324_add_bank_owner_name_in_manual_transfer/migration.sql +2 -0
- package/prisma/migrations/20250505173850_add_method_name_in_manual_transfer/migration.sql +2 -0
- package/prisma/migrations/migration_lock.toml +2 -2
- package/prisma/schema.prisma +214 -77
- package/src/scripts/data-migration/batch-migrator.ts +192 -513
- package/src/scripts/data-migration/data-transformer.ts +252 -203
- package/src/scripts/data-migration/db-connector.ts +66 -13
- package/src/scripts/data-migration/dependency-resolver.ts +121 -266
- package/src/scripts/data-migration/foreign-key-manager.ts +214 -32
- package/src/scripts/data-migration/migration-config.json +63 -0
- package/src/scripts/data-migration/migration-tool.ts +377 -225
- package/src/scripts/data-migration/schema-utils.ts +94 -32
- package/src/scripts/data-migration/tenant-migrator.ts +12 -5
- package/src/scripts/data-migration/typecast-manager.ts +186 -31
- package/src/scripts/data-migration/types.ts +78 -5
- package/src/scripts/database-initializer.ts +49 -0
- package/src/scripts/fix-table-indexes.ts +602 -0
- package/src/scripts/post-migration-validator.ts +206 -107
- package/src/scripts/run-migration.ts +140 -124
- package/src/scripts/sequence-synchronizer.ts +127 -0
- package/prisma/migrations/20250422001957_add_bank_account_id_relations/migration.sql +0 -14
- 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(
|
|
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(),
|
|
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()
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 ===
|
|
256
|
+
if (columnName === "provider_id") {
|
|
235
257
|
continue;
|
|
236
258
|
}
|
|
237
259
|
if (!(columnName in targetRecord)) {
|
|
238
260
|
this.issues.push({
|
|
239
|
-
type:
|
|
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:
|
|
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:
|
|
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 ===
|
|
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 ===
|
|
311
|
+
if (typeof sourceValue === "string" && typeof targetValue === "string") {
|
|
290
312
|
return sourceValue !== targetValue;
|
|
291
313
|
}
|
|
292
|
-
if (typeof sourceValue ===
|
|
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),
|
|
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(
|
|
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(
|
|
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(
|
|
352
|
+
console.log(JSON.stringify(result, null, 2));
|
|
331
353
|
process.exit(1);
|
|
332
354
|
}
|
|
333
355
|
}
|
|
334
356
|
catch (error) {
|
|
335
|
-
console.error(
|
|
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":"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"}
|
|
@@ -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
|
|
9
|
-
const
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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(
|
|
268
|
-
|
|
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(
|
|
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(
|
|
474
|
+
console.log(JSON.stringify(result, null, 2));
|
|
488
475
|
}
|
|
489
476
|
}
|
|
490
477
|
catch (error) {
|