@javalabs/prisma-client 1.0.25 → 1.0.27
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/package.json +5 -5
- package/prisma/schema.prisma +0 -4
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -34
- package/dist/index.js.map +0 -1
- package/dist/prisma-factory.service.d.ts +0 -9
- package/dist/prisma-factory.service.js +0 -47
- package/dist/prisma-factory.service.js.map +0 -1
- package/dist/prisma.module.d.ts +0 -2
- package/dist/prisma.module.js +0 -23
- package/dist/prisma.module.js.map +0 -1
- package/dist/prisma.service.d.ts +0 -6
- package/dist/prisma.service.js +0 -27
- package/dist/prisma.service.js.map +0 -1
- package/dist/scripts/add-uuid-to-table.d.ts +0 -8
- package/dist/scripts/add-uuid-to-table.js +0 -98
- package/dist/scripts/add-uuid-to-table.js.map +0 -1
- package/dist/scripts/create-tenant-schemas.d.ts +0 -1
- package/dist/scripts/create-tenant-schemas.js +0 -117
- package/dist/scripts/create-tenant-schemas.js.map +0 -1
- package/dist/scripts/data-migration/batch-migrator.d.ts +0 -20
- package/dist/scripts/data-migration/batch-migrator.js +0 -134
- package/dist/scripts/data-migration/batch-migrator.js.map +0 -1
- package/dist/scripts/data-migration/data-transformer.d.ts +0 -26
- package/dist/scripts/data-migration/data-transformer.js +0 -278
- package/dist/scripts/data-migration/data-transformer.js.map +0 -1
- package/dist/scripts/data-migration/db-connector.d.ts +0 -12
- package/dist/scripts/data-migration/db-connector.js +0 -94
- package/dist/scripts/data-migration/db-connector.js.map +0 -1
- package/dist/scripts/data-migration/dependency-resolver.d.ts +0 -18
- package/dist/scripts/data-migration/dependency-resolver.js +0 -132
- package/dist/scripts/data-migration/dependency-resolver.js.map +0 -1
- package/dist/scripts/data-migration/entity-discovery.d.ts +0 -11
- package/dist/scripts/data-migration/entity-discovery.js +0 -152
- package/dist/scripts/data-migration/entity-discovery.js.map +0 -1
- package/dist/scripts/data-migration/foreign-key-manager.d.ts +0 -18
- package/dist/scripts/data-migration/foreign-key-manager.js +0 -160
- package/dist/scripts/data-migration/foreign-key-manager.js.map +0 -1
- package/dist/scripts/data-migration/migration-tool.d.ts +0 -48
- package/dist/scripts/data-migration/migration-tool.js +0 -290
- package/dist/scripts/data-migration/migration-tool.js.map +0 -1
- package/dist/scripts/data-migration/schema-utils.d.ts +0 -18
- package/dist/scripts/data-migration/schema-utils.js +0 -207
- package/dist/scripts/data-migration/schema-utils.js.map +0 -1
- package/dist/scripts/data-migration/tenant-migrator.d.ts +0 -15
- package/dist/scripts/data-migration/tenant-migrator.js +0 -117
- package/dist/scripts/data-migration/tenant-migrator.js.map +0 -1
- package/dist/scripts/data-migration/typecast-manager.d.ts +0 -9
- package/dist/scripts/data-migration/typecast-manager.js +0 -179
- package/dist/scripts/data-migration/typecast-manager.js.map +0 -1
- package/dist/scripts/data-migration/types.d.ts +0 -100
- package/dist/scripts/data-migration/types.js +0 -3
- package/dist/scripts/data-migration/types.js.map +0 -1
- package/dist/scripts/database-initializer.d.ts +0 -5
- package/dist/scripts/database-initializer.js +0 -45
- package/dist/scripts/database-initializer.js.map +0 -1
- package/dist/scripts/drop-database.d.ts +0 -10
- package/dist/scripts/drop-database.js +0 -81
- package/dist/scripts/drop-database.js.map +0 -1
- package/dist/scripts/encrypt-user-passwords.d.ts +0 -1
- package/dist/scripts/encrypt-user-passwords.js +0 -33
- package/dist/scripts/encrypt-user-passwords.js.map +0 -1
- package/dist/scripts/error-handler.d.ts +0 -12
- package/dist/scripts/error-handler.js +0 -82
- package/dist/scripts/error-handler.js.map +0 -1
- package/dist/scripts/fix-data-types.d.ts +0 -10
- package/dist/scripts/fix-data-types.js +0 -185
- package/dist/scripts/fix-data-types.js.map +0 -1
- package/dist/scripts/fix-enum-values.d.ts +0 -17
- package/dist/scripts/fix-enum-values.js +0 -234
- package/dist/scripts/fix-enum-values.js.map +0 -1
- package/dist/scripts/fix-schema-discrepancies.d.ts +0 -21
- package/dist/scripts/fix-schema-discrepancies.js +0 -240
- package/dist/scripts/fix-schema-discrepancies.js.map +0 -1
- package/dist/scripts/fix-table-indexes.d.ts +0 -26
- package/dist/scripts/fix-table-indexes.js +0 -460
- package/dist/scripts/fix-table-indexes.js.map +0 -1
- package/dist/scripts/migrate-schema-structure.d.ts +0 -1
- package/dist/scripts/migrate-schema-structure.js +0 -76
- package/dist/scripts/migrate-schema-structure.js.map +0 -1
- package/dist/scripts/migrate-uuid.d.ts +0 -2
- package/dist/scripts/migrate-uuid.js +0 -57
- package/dist/scripts/migrate-uuid.js.map +0 -1
- package/dist/scripts/post-migration-validator.d.ts +0 -34
- package/dist/scripts/post-migration-validator.js +0 -363
- package/dist/scripts/post-migration-validator.js.map +0 -1
- package/dist/scripts/pre-migration-validator.d.ts +0 -25
- package/dist/scripts/pre-migration-validator.js +0 -491
- package/dist/scripts/pre-migration-validator.js.map +0 -1
- package/dist/scripts/reset-database.d.ts +0 -17
- package/dist/scripts/reset-database.js +0 -202
- package/dist/scripts/reset-database.js.map +0 -1
- package/dist/scripts/retry-failed-migrations.d.ts +0 -14
- package/dist/scripts/retry-failed-migrations.js +0 -301
- package/dist/scripts/retry-failed-migrations.js.map +0 -1
- package/dist/scripts/run-migration.d.ts +0 -1
- package/dist/scripts/run-migration.js +0 -512
- package/dist/scripts/run-migration.js.map +0 -1
- package/dist/scripts/schema-sync.d.ts +0 -1
- package/dist/scripts/schema-sync.js +0 -85
- package/dist/scripts/schema-sync.js.map +0 -1
- package/dist/scripts/sequence-sync-cli.d.ts +0 -2
- package/dist/scripts/sequence-sync-cli.js +0 -287
- package/dist/scripts/sequence-sync-cli.js.map +0 -1
- package/dist/scripts/sequence-synchronizer.d.ts +0 -8
- package/dist/scripts/sequence-synchronizer.js +0 -88
- package/dist/scripts/sequence-synchronizer.js.map +0 -1
- package/dist/scripts/sync-enum-types.d.ts +0 -13
- package/dist/scripts/sync-enum-types.js +0 -139
- package/dist/scripts/sync-enum-types.js.map +0 -1
- package/dist/scripts/sync-enum-values.d.ts +0 -20
- package/dist/scripts/sync-enum-values.js +0 -336
- package/dist/scripts/sync-enum-values.js.map +0 -1
- package/dist/scripts/truncate-database.d.ts +0 -10
- package/dist/scripts/truncate-database.js +0 -100
- package/dist/scripts/truncate-database.js.map +0 -1
- package/dist/scripts/verify-migration-setup.d.ts +0 -11
- package/dist/scripts/verify-migration-setup.js +0 -120
- package/dist/scripts/verify-migration-setup.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/prisma/migrations/add_athena_match_fields.sql +0 -13
|
@@ -1,491 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PreMigrationValidator = void 0;
|
|
4
|
-
const pg = require("pg");
|
|
5
|
-
const dotenv = require("dotenv");
|
|
6
|
-
const common_1 = require("@nestjs/common");
|
|
7
|
-
const fs = require("fs");
|
|
8
|
-
const path = require("path");
|
|
9
|
-
dotenv.config();
|
|
10
|
-
class PreMigrationValidator {
|
|
11
|
-
constructor(sourceUrl = process.env.SOURCE_DATABASE_URL, targetUrl = process.env.DATABASE_URL) {
|
|
12
|
-
this.sourceUrl = sourceUrl;
|
|
13
|
-
this.targetUrl = targetUrl;
|
|
14
|
-
this.logger = new common_1.Logger('PreMigrationValidator');
|
|
15
|
-
this.issues = [];
|
|
16
|
-
this.sourcePool = new pg.Pool({
|
|
17
|
-
connectionString: this.sourceUrl,
|
|
18
|
-
});
|
|
19
|
-
this.targetPool = new pg.Pool({
|
|
20
|
-
connectionString: this.targetUrl,
|
|
21
|
-
});
|
|
22
|
-
const reportsDir = path.join(process.cwd(), 'migration-logs');
|
|
23
|
-
if (!fs.existsSync(reportsDir)) {
|
|
24
|
-
fs.mkdirSync(reportsDir, { recursive: true });
|
|
25
|
-
}
|
|
26
|
-
const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\..+/, '');
|
|
27
|
-
this.reportPath = path.join(reportsDir, `pre-migration-report-${timestamp}.json`);
|
|
28
|
-
}
|
|
29
|
-
async validate() {
|
|
30
|
-
try {
|
|
31
|
-
this.logger.log('Starting pre-migration validation');
|
|
32
|
-
await this.validateDatabaseConnections();
|
|
33
|
-
await this.validateApiKeys();
|
|
34
|
-
await this.validateDataTypeCompatibility();
|
|
35
|
-
await this.validateColumnSizes();
|
|
36
|
-
await this.validateEnumValues();
|
|
37
|
-
await this.validateForeignKeyConstraints();
|
|
38
|
-
await this.validateUniqueConstraints();
|
|
39
|
-
this.saveReport();
|
|
40
|
-
this.logger.log(`Validation completed with ${this.issues.length} issues found`);
|
|
41
|
-
if (this.issues.length > 0) {
|
|
42
|
-
this.logger.log(`Check the full report at: ${this.reportPath}`);
|
|
43
|
-
this.logger.log('Sample issues:');
|
|
44
|
-
for (let i = 0; i < Math.min(5, this.issues.length); i++) {
|
|
45
|
-
const issue = this.issues[i];
|
|
46
|
-
this.logger.log(`- ${issue.type}: ${issue.message}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
this.logger.log('No issues found. Migration should proceed smoothly.');
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
success: this.issues.length === 0,
|
|
54
|
-
issueCount: this.issues.length,
|
|
55
|
-
reportPath: this.reportPath
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
this.logger.error(`Error during validation: ${error.message}`, error.stack);
|
|
60
|
-
this.issues.push({
|
|
61
|
-
type: 'VALIDATION_ERROR',
|
|
62
|
-
message: `Validation process failed: ${error.message}`,
|
|
63
|
-
details: error.stack
|
|
64
|
-
});
|
|
65
|
-
this.saveReport();
|
|
66
|
-
return {
|
|
67
|
-
success: false,
|
|
68
|
-
issueCount: this.issues.length,
|
|
69
|
-
reportPath: this.reportPath
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
finally {
|
|
73
|
-
await this.cleanup();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
async validateDatabaseConnections() {
|
|
77
|
-
this.logger.log('Validating database connections');
|
|
78
|
-
try {
|
|
79
|
-
await this.sourcePool.query('SELECT 1');
|
|
80
|
-
this.logger.log('Source database connection successful');
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
this.logger.error(`Source database connection failed: ${error.message}`);
|
|
84
|
-
this.issues.push({
|
|
85
|
-
type: 'CONNECTION_ERROR',
|
|
86
|
-
source: 'source',
|
|
87
|
-
message: `Cannot connect to source database: ${error.message}`
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
try {
|
|
91
|
-
await this.targetPool.query('SELECT 1');
|
|
92
|
-
this.logger.log('Target database connection successful');
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
this.logger.error(`Target database connection failed: ${error.message}`);
|
|
96
|
-
this.issues.push({
|
|
97
|
-
type: 'CONNECTION_ERROR',
|
|
98
|
-
source: 'target',
|
|
99
|
-
message: `Cannot connect to target database: ${error.message}`
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
async validateApiKeys() {
|
|
104
|
-
this.logger.log('Validating API keys');
|
|
105
|
-
try {
|
|
106
|
-
const result = await this.sourcePool.query(`
|
|
107
|
-
SELECT COUNT(*) as count FROM api_keys
|
|
108
|
-
`);
|
|
109
|
-
const count = parseInt(result.rows[0].count);
|
|
110
|
-
if (count === 0) {
|
|
111
|
-
this.logger.warn('No API keys found in source database');
|
|
112
|
-
this.issues.push({
|
|
113
|
-
type: 'DATA_ERROR',
|
|
114
|
-
message: 'No API keys found in source database. Migration will not create any tenant schemas.'
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
this.logger.log(`Found ${count} API keys in source database`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
this.logger.error(`Error validating API keys: ${error.message}`);
|
|
123
|
-
this.issues.push({
|
|
124
|
-
type: 'VALIDATION_ERROR',
|
|
125
|
-
message: `Error validating API keys: ${error.message}`
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
async validateDataTypeCompatibility() {
|
|
130
|
-
this.logger.log('Validating data type compatibility');
|
|
131
|
-
try {
|
|
132
|
-
const tablesResult = await this.sourcePool.query(`
|
|
133
|
-
SELECT table_name
|
|
134
|
-
FROM information_schema.tables
|
|
135
|
-
WHERE table_schema = 'public'
|
|
136
|
-
AND table_type = 'BASE TABLE'
|
|
137
|
-
`);
|
|
138
|
-
for (const tableRow of tablesResult.rows) {
|
|
139
|
-
const tableName = tableRow.table_name;
|
|
140
|
-
const sourceColumnsResult = await this.sourcePool.query(`
|
|
141
|
-
SELECT column_name, data_type, udt_name
|
|
142
|
-
FROM information_schema.columns
|
|
143
|
-
WHERE table_schema = 'public'
|
|
144
|
-
AND table_name = $1
|
|
145
|
-
`, [tableName]);
|
|
146
|
-
const targetTableExists = await this.targetPool.query(`
|
|
147
|
-
SELECT 1
|
|
148
|
-
FROM information_schema.tables
|
|
149
|
-
WHERE table_schema = 'public'
|
|
150
|
-
AND table_name = $1
|
|
151
|
-
LIMIT 1
|
|
152
|
-
`, [tableName]);
|
|
153
|
-
if (targetTableExists.rows.length === 0) {
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
const targetColumnsResult = await this.targetPool.query(`
|
|
157
|
-
SELECT column_name, data_type, udt_name
|
|
158
|
-
FROM information_schema.columns
|
|
159
|
-
WHERE table_schema = 'public'
|
|
160
|
-
AND table_name = $1
|
|
161
|
-
`, [tableName]);
|
|
162
|
-
const sourceColumns = sourceColumnsResult.rows.reduce((map, col) => {
|
|
163
|
-
map[col.column_name] = col;
|
|
164
|
-
return map;
|
|
165
|
-
}, {});
|
|
166
|
-
const targetColumns = targetColumnsResult.rows.reduce((map, col) => {
|
|
167
|
-
map[col.column_name] = col;
|
|
168
|
-
return map;
|
|
169
|
-
}, {});
|
|
170
|
-
for (const columnName in sourceColumns) {
|
|
171
|
-
if (targetColumns[columnName]) {
|
|
172
|
-
const sourceType = sourceColumns[columnName].data_type;
|
|
173
|
-
const targetType = targetColumns[columnName].data_type;
|
|
174
|
-
if (sourceType !== targetType) {
|
|
175
|
-
const isCompatible = this.areTypesCompatible(sourceType, targetType);
|
|
176
|
-
if (!isCompatible) {
|
|
177
|
-
this.logger.warn(`Data type mismatch for ${tableName}.${columnName}: ${sourceType} (source) vs ${targetType} (target)`);
|
|
178
|
-
this.issues.push({
|
|
179
|
-
type: 'TYPE_MISMATCH',
|
|
180
|
-
table: tableName,
|
|
181
|
-
column: columnName,
|
|
182
|
-
sourceType,
|
|
183
|
-
targetType,
|
|
184
|
-
message: `Data type mismatch for ${tableName}.${columnName}: ${sourceType} (source) vs ${targetType} (target)`
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
this.logger.error(`Error validating data type compatibility: ${error.message}`);
|
|
194
|
-
this.issues.push({
|
|
195
|
-
type: 'VALIDATION_ERROR',
|
|
196
|
-
message: `Error validating data type compatibility: ${error.message}`
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
areTypesCompatible(sourceType, targetType) {
|
|
201
|
-
const compatibleTypes = [
|
|
202
|
-
['character varying', 'varchar'],
|
|
203
|
-
['character', 'char'],
|
|
204
|
-
['integer', 'int'],
|
|
205
|
-
['boolean', 'bool'],
|
|
206
|
-
['double precision', 'float8'],
|
|
207
|
-
['real', 'float4'],
|
|
208
|
-
['timestamp without time zone', 'timestamp'],
|
|
209
|
-
['timestamp with time zone', 'timestamptz']
|
|
210
|
-
];
|
|
211
|
-
if (sourceType === targetType) {
|
|
212
|
-
return true;
|
|
213
|
-
}
|
|
214
|
-
return compatibleTypes.some(pair => (pair[0] === sourceType && pair[1] === targetType) ||
|
|
215
|
-
(pair[0] === targetType && pair[1] === sourceType));
|
|
216
|
-
}
|
|
217
|
-
async validateColumnSizes() {
|
|
218
|
-
this.logger.log('Validating column sizes');
|
|
219
|
-
try {
|
|
220
|
-
const tablesResult = await this.sourcePool.query(`
|
|
221
|
-
SELECT table_name
|
|
222
|
-
FROM information_schema.tables
|
|
223
|
-
WHERE table_schema = 'public'
|
|
224
|
-
AND table_type = 'BASE TABLE'
|
|
225
|
-
`);
|
|
226
|
-
for (const tableRow of tablesResult.rows) {
|
|
227
|
-
const tableName = tableRow.table_name;
|
|
228
|
-
const sourceColumnsResult = await this.sourcePool.query(`
|
|
229
|
-
SELECT column_name, data_type, character_maximum_length
|
|
230
|
-
FROM information_schema.columns
|
|
231
|
-
WHERE table_schema = 'public'
|
|
232
|
-
AND table_name = $1
|
|
233
|
-
AND data_type IN ('character varying', 'character', 'varchar', 'char')
|
|
234
|
-
AND character_maximum_length IS NOT NULL
|
|
235
|
-
`, [tableName]);
|
|
236
|
-
const targetTableExists = await this.targetPool.query(`
|
|
237
|
-
SELECT 1
|
|
238
|
-
FROM information_schema.tables
|
|
239
|
-
WHERE table_schema = 'public'
|
|
240
|
-
AND table_name = $1
|
|
241
|
-
LIMIT 1
|
|
242
|
-
`, [tableName]);
|
|
243
|
-
if (targetTableExists.rows.length === 0) {
|
|
244
|
-
continue;
|
|
245
|
-
}
|
|
246
|
-
for (const sourceColumn of sourceColumnsResult.rows) {
|
|
247
|
-
const columnName = sourceColumn.column_name;
|
|
248
|
-
const sourceMaxLength = sourceColumn.character_maximum_length;
|
|
249
|
-
const targetColumnResult = await this.targetPool.query(`
|
|
250
|
-
SELECT character_maximum_length
|
|
251
|
-
FROM information_schema.columns
|
|
252
|
-
WHERE table_schema = 'public'
|
|
253
|
-
AND table_name = $1
|
|
254
|
-
AND column_name = $2
|
|
255
|
-
AND data_type IN ('character varying', 'character', 'varchar', 'char')
|
|
256
|
-
`, [tableName, columnName]);
|
|
257
|
-
if (targetColumnResult.rows.length > 0) {
|
|
258
|
-
const targetMaxLength = targetColumnResult.rows[0].character_maximum_length;
|
|
259
|
-
if (targetMaxLength < sourceMaxLength) {
|
|
260
|
-
this.logger.warn(`Column size mismatch for ${tableName}.${columnName}: ${sourceMaxLength} (source) vs ${targetMaxLength} (target)`);
|
|
261
|
-
this.issues.push({
|
|
262
|
-
type: 'SIZE_MISMATCH',
|
|
263
|
-
table: tableName,
|
|
264
|
-
column: columnName,
|
|
265
|
-
sourceSize: sourceMaxLength,
|
|
266
|
-
targetSize: targetMaxLength,
|
|
267
|
-
message: `Column size mismatch for ${tableName}.${columnName}: ${sourceMaxLength} (source) vs ${targetMaxLength} (target). Data may be truncated.`
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
this.logger.error(`Error validating column sizes: ${error.message}`);
|
|
276
|
-
this.issues.push({
|
|
277
|
-
type: 'VALIDATION_ERROR',
|
|
278
|
-
message: `Error validating column sizes: ${error.message}`
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
async validateEnumValues() {
|
|
283
|
-
this.logger.log('Validating enum values');
|
|
284
|
-
try {
|
|
285
|
-
const sourceEnumsResult = await this.sourcePool.query(`
|
|
286
|
-
SELECT t.typname AS enum_name
|
|
287
|
-
FROM pg_type t
|
|
288
|
-
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
|
|
289
|
-
WHERE t.typtype = 'e'
|
|
290
|
-
AND n.nspname = 'public'
|
|
291
|
-
`);
|
|
292
|
-
for (const enumRow of sourceEnumsResult.rows) {
|
|
293
|
-
const enumName = enumRow.enum_name;
|
|
294
|
-
const sourceEnumValuesResult = await this.sourcePool.query(`
|
|
295
|
-
SELECT e.enumlabel
|
|
296
|
-
FROM pg_enum e
|
|
297
|
-
JOIN pg_type t ON e.enumtypid = t.oid
|
|
298
|
-
WHERE t.typname = $1
|
|
299
|
-
ORDER BY e.enumsortorder
|
|
300
|
-
`, [enumName]);
|
|
301
|
-
const sourceEnumValues = sourceEnumValuesResult.rows.map(row => row.enumlabel);
|
|
302
|
-
const targetEnumExistsResult = await this.targetPool.query(`
|
|
303
|
-
SELECT 1
|
|
304
|
-
FROM pg_type t
|
|
305
|
-
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
|
|
306
|
-
WHERE t.typtype = 'e'
|
|
307
|
-
AND t.typname = $1
|
|
308
|
-
AND n.nspname = 'public'
|
|
309
|
-
LIMIT 1
|
|
310
|
-
`, [enumName]);
|
|
311
|
-
if (targetEnumExistsResult.rows.length === 0) {
|
|
312
|
-
continue;
|
|
313
|
-
}
|
|
314
|
-
const targetEnumValuesResult = await this.targetPool.query(`
|
|
315
|
-
SELECT e.enumlabel
|
|
316
|
-
FROM pg_enum e
|
|
317
|
-
JOIN pg_type t ON e.enumtypid = t.oid
|
|
318
|
-
WHERE t.typname = $1
|
|
319
|
-
ORDER BY e.enumsortorder
|
|
320
|
-
`, [enumName]);
|
|
321
|
-
const targetEnumValues = targetEnumValuesResult.rows.map(row => row.enumlabel);
|
|
322
|
-
for (const sourceValue of sourceEnumValues) {
|
|
323
|
-
if (!targetEnumValues.includes(sourceValue)) {
|
|
324
|
-
this.logger.warn(`Enum value '${sourceValue}' for type ${enumName} exists in source but not in target`);
|
|
325
|
-
this.issues.push({
|
|
326
|
-
type: 'ENUM_VALUE_MISSING',
|
|
327
|
-
enumType: enumName,
|
|
328
|
-
value: sourceValue,
|
|
329
|
-
message: `Enum value '${sourceValue}' for type ${enumName} exists in source but not in target. Data migration will fail for records with this value.`
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
catch (error) {
|
|
336
|
-
this.logger.error(`Error validating enum values: ${error.message}`);
|
|
337
|
-
this.issues.push({
|
|
338
|
-
type: 'VALIDATION_ERROR',
|
|
339
|
-
message: `Error validating enum values: ${error.message}`
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
async validateForeignKeyConstraints() {
|
|
344
|
-
this.logger.log('Validating foreign key constraints');
|
|
345
|
-
try {
|
|
346
|
-
const foreignKeysResult = await this.sourcePool.query(`
|
|
347
|
-
SELECT
|
|
348
|
-
tc.table_name,
|
|
349
|
-
kcu.column_name,
|
|
350
|
-
ccu.table_name AS foreign_table_name,
|
|
351
|
-
ccu.column_name AS foreign_column_name
|
|
352
|
-
FROM
|
|
353
|
-
information_schema.table_constraints AS tc
|
|
354
|
-
JOIN information_schema.key_column_usage AS kcu
|
|
355
|
-
ON tc.constraint_name = kcu.constraint_name
|
|
356
|
-
AND tc.table_schema = kcu.table_schema
|
|
357
|
-
JOIN information_schema.constraint_column_usage AS ccu
|
|
358
|
-
ON ccu.constraint_name = tc.constraint_name
|
|
359
|
-
AND ccu.table_schema = tc.table_schema
|
|
360
|
-
WHERE tc.constraint_type = 'FOREIGN KEY'
|
|
361
|
-
AND tc.table_schema = 'public'
|
|
362
|
-
`);
|
|
363
|
-
this.logger.log(`Found ${foreignKeysResult.rows.length} foreign key constraints in source database`);
|
|
364
|
-
}
|
|
365
|
-
catch (error) {
|
|
366
|
-
this.logger.error(`Error validating foreign key constraints: ${error.message}`);
|
|
367
|
-
this.issues.push({
|
|
368
|
-
type: 'VALIDATION_ERROR',
|
|
369
|
-
message: `Error validating foreign key constraints: ${error.message}`
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
async validateUniqueConstraints() {
|
|
374
|
-
this.logger.log('Validating unique constraints...');
|
|
375
|
-
try {
|
|
376
|
-
const sourceConstraintsQuery = `
|
|
377
|
-
SELECT
|
|
378
|
-
tc.table_name,
|
|
379
|
-
kcu.column_name
|
|
380
|
-
FROM
|
|
381
|
-
information_schema.table_constraints tc
|
|
382
|
-
JOIN information_schema.key_column_usage kcu
|
|
383
|
-
ON tc.constraint_name = kcu.constraint_name
|
|
384
|
-
WHERE
|
|
385
|
-
tc.constraint_type = 'UNIQUE'
|
|
386
|
-
AND tc.table_schema = 'public'
|
|
387
|
-
`;
|
|
388
|
-
const sourceConstraints = await this.sourcePool.query(sourceConstraintsQuery);
|
|
389
|
-
for (const constraint of sourceConstraints.rows) {
|
|
390
|
-
const { table_name, column_name } = constraint;
|
|
391
|
-
try {
|
|
392
|
-
const columnExistsQuery = `
|
|
393
|
-
SELECT column_name
|
|
394
|
-
FROM information_schema.columns
|
|
395
|
-
WHERE table_name = $1
|
|
396
|
-
AND column_name = $2
|
|
397
|
-
AND table_schema = 'public'
|
|
398
|
-
`;
|
|
399
|
-
const columnExists = await this.targetPool.query(columnExistsQuery, [table_name, column_name]);
|
|
400
|
-
if (columnExists.rows.length === 0) {
|
|
401
|
-
this.issues.push({
|
|
402
|
-
type: 'COLUMN_MISMATCH',
|
|
403
|
-
message: `Column "${column_name}" in table "${table_name}" exists in source but not in target`,
|
|
404
|
-
severity: 'WARNING',
|
|
405
|
-
details: {
|
|
406
|
-
table: table_name,
|
|
407
|
-
column: column_name,
|
|
408
|
-
constraint_type: 'UNIQUE'
|
|
409
|
-
}
|
|
410
|
-
});
|
|
411
|
-
continue;
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
catch (error) {
|
|
415
|
-
if (error.message.includes('does not exist')) {
|
|
416
|
-
this.issues.push({
|
|
417
|
-
type: 'COLUMN_MISMATCH',
|
|
418
|
-
message: `Error checking column "${column_name}" in table "${table_name}": ${error.message}`,
|
|
419
|
-
severity: 'WARNING',
|
|
420
|
-
details: {
|
|
421
|
-
table: table_name,
|
|
422
|
-
column: column_name,
|
|
423
|
-
error: error.message
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
else {
|
|
428
|
-
throw error;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
this.logger.log('Unique constraints validation completed');
|
|
433
|
-
}
|
|
434
|
-
catch (error) {
|
|
435
|
-
this.issues.push({
|
|
436
|
-
type: 'VALIDATION_ERROR',
|
|
437
|
-
message: `Error validating unique constraints: ${error.message}`,
|
|
438
|
-
severity: 'WARNING',
|
|
439
|
-
details: {
|
|
440
|
-
error: error.message,
|
|
441
|
-
stack: error.stack
|
|
442
|
-
}
|
|
443
|
-
});
|
|
444
|
-
this.logger.warn(`Error during unique constraints validation: ${error.message}`);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
saveReport() {
|
|
448
|
-
try {
|
|
449
|
-
const report = {
|
|
450
|
-
timestamp: new Date().toISOString(),
|
|
451
|
-
sourceDatabase: this.sourceUrl,
|
|
452
|
-
targetDatabase: this.targetUrl,
|
|
453
|
-
issueCount: this.issues.length,
|
|
454
|
-
issues: this.issues
|
|
455
|
-
};
|
|
456
|
-
fs.writeFileSync(this.reportPath, JSON.stringify(report, null, 2), 'utf8');
|
|
457
|
-
}
|
|
458
|
-
catch (error) {
|
|
459
|
-
this.logger.error(`Error saving validation report: ${error.message}`);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
async cleanup() {
|
|
463
|
-
this.logger.log('Cleaning up database connections');
|
|
464
|
-
await this.sourcePool.end();
|
|
465
|
-
await this.targetPool.end();
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
exports.PreMigrationValidator = PreMigrationValidator;
|
|
469
|
-
if (require.main === module) {
|
|
470
|
-
const run = async () => {
|
|
471
|
-
try {
|
|
472
|
-
const validator = new PreMigrationValidator();
|
|
473
|
-
const result = await validator.validate();
|
|
474
|
-
if (result.success) {
|
|
475
|
-
console.log('Validation successful! No issues found.');
|
|
476
|
-
process.exit(0);
|
|
477
|
-
}
|
|
478
|
-
else {
|
|
479
|
-
console.log(`Validation completed with ${result.issueCount} issues found.`);
|
|
480
|
-
console.log(`Check the full report at: ${result.reportPath}`);
|
|
481
|
-
process.exit(1);
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
catch (error) {
|
|
485
|
-
console.error('Error:', error.message);
|
|
486
|
-
process.exit(1);
|
|
487
|
-
}
|
|
488
|
-
};
|
|
489
|
-
run();
|
|
490
|
-
}
|
|
491
|
-
//# sourceMappingURL=pre-migration-validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pre-migration-validator.js","sourceRoot":"","sources":["../../src/scripts/pre-migration-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare class DatabaseResetTool {
|
|
2
|
-
private readonly databaseUrl;
|
|
3
|
-
private readonly logger;
|
|
4
|
-
private readonly pool;
|
|
5
|
-
private readonly adminPool;
|
|
6
|
-
private readonly prisma;
|
|
7
|
-
constructor(databaseUrl: string);
|
|
8
|
-
resetDatabase(recreateDb?: boolean): Promise<boolean>;
|
|
9
|
-
private dropAllSchemas;
|
|
10
|
-
private dropAllPublicTables;
|
|
11
|
-
private dropAllCustomTypes;
|
|
12
|
-
private getCustomSchemas;
|
|
13
|
-
private getPublicTables;
|
|
14
|
-
private extractDatabaseName;
|
|
15
|
-
private terminateConnections;
|
|
16
|
-
private cleanup;
|
|
17
|
-
}
|