@javalabs/prisma-client 1.0.26 → 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.
Files changed (122) hide show
  1. package/package.json +5 -5
  2. package/prisma/schema.prisma +0 -6
  3. package/dist/index.d.ts +0 -7
  4. package/dist/index.js +0 -34
  5. package/dist/index.js.map +0 -1
  6. package/dist/prisma-factory.service.d.ts +0 -9
  7. package/dist/prisma-factory.service.js +0 -47
  8. package/dist/prisma-factory.service.js.map +0 -1
  9. package/dist/prisma.module.d.ts +0 -2
  10. package/dist/prisma.module.js +0 -23
  11. package/dist/prisma.module.js.map +0 -1
  12. package/dist/prisma.service.d.ts +0 -6
  13. package/dist/prisma.service.js +0 -27
  14. package/dist/prisma.service.js.map +0 -1
  15. package/dist/scripts/add-uuid-to-table.d.ts +0 -8
  16. package/dist/scripts/add-uuid-to-table.js +0 -98
  17. package/dist/scripts/add-uuid-to-table.js.map +0 -1
  18. package/dist/scripts/create-tenant-schemas.d.ts +0 -1
  19. package/dist/scripts/create-tenant-schemas.js +0 -117
  20. package/dist/scripts/create-tenant-schemas.js.map +0 -1
  21. package/dist/scripts/data-migration/batch-migrator.d.ts +0 -20
  22. package/dist/scripts/data-migration/batch-migrator.js +0 -134
  23. package/dist/scripts/data-migration/batch-migrator.js.map +0 -1
  24. package/dist/scripts/data-migration/data-transformer.d.ts +0 -26
  25. package/dist/scripts/data-migration/data-transformer.js +0 -278
  26. package/dist/scripts/data-migration/data-transformer.js.map +0 -1
  27. package/dist/scripts/data-migration/db-connector.d.ts +0 -12
  28. package/dist/scripts/data-migration/db-connector.js +0 -94
  29. package/dist/scripts/data-migration/db-connector.js.map +0 -1
  30. package/dist/scripts/data-migration/dependency-resolver.d.ts +0 -18
  31. package/dist/scripts/data-migration/dependency-resolver.js +0 -132
  32. package/dist/scripts/data-migration/dependency-resolver.js.map +0 -1
  33. package/dist/scripts/data-migration/entity-discovery.d.ts +0 -11
  34. package/dist/scripts/data-migration/entity-discovery.js +0 -152
  35. package/dist/scripts/data-migration/entity-discovery.js.map +0 -1
  36. package/dist/scripts/data-migration/foreign-key-manager.d.ts +0 -18
  37. package/dist/scripts/data-migration/foreign-key-manager.js +0 -160
  38. package/dist/scripts/data-migration/foreign-key-manager.js.map +0 -1
  39. package/dist/scripts/data-migration/migration-tool.d.ts +0 -48
  40. package/dist/scripts/data-migration/migration-tool.js +0 -290
  41. package/dist/scripts/data-migration/migration-tool.js.map +0 -1
  42. package/dist/scripts/data-migration/schema-utils.d.ts +0 -18
  43. package/dist/scripts/data-migration/schema-utils.js +0 -207
  44. package/dist/scripts/data-migration/schema-utils.js.map +0 -1
  45. package/dist/scripts/data-migration/tenant-migrator.d.ts +0 -15
  46. package/dist/scripts/data-migration/tenant-migrator.js +0 -117
  47. package/dist/scripts/data-migration/tenant-migrator.js.map +0 -1
  48. package/dist/scripts/data-migration/typecast-manager.d.ts +0 -9
  49. package/dist/scripts/data-migration/typecast-manager.js +0 -179
  50. package/dist/scripts/data-migration/typecast-manager.js.map +0 -1
  51. package/dist/scripts/data-migration/types.d.ts +0 -100
  52. package/dist/scripts/data-migration/types.js +0 -3
  53. package/dist/scripts/data-migration/types.js.map +0 -1
  54. package/dist/scripts/database-initializer.d.ts +0 -5
  55. package/dist/scripts/database-initializer.js +0 -45
  56. package/dist/scripts/database-initializer.js.map +0 -1
  57. package/dist/scripts/drop-database.d.ts +0 -10
  58. package/dist/scripts/drop-database.js +0 -81
  59. package/dist/scripts/drop-database.js.map +0 -1
  60. package/dist/scripts/encrypt-user-passwords.d.ts +0 -1
  61. package/dist/scripts/encrypt-user-passwords.js +0 -33
  62. package/dist/scripts/encrypt-user-passwords.js.map +0 -1
  63. package/dist/scripts/error-handler.d.ts +0 -12
  64. package/dist/scripts/error-handler.js +0 -82
  65. package/dist/scripts/error-handler.js.map +0 -1
  66. package/dist/scripts/fix-data-types.d.ts +0 -10
  67. package/dist/scripts/fix-data-types.js +0 -185
  68. package/dist/scripts/fix-data-types.js.map +0 -1
  69. package/dist/scripts/fix-enum-values.d.ts +0 -17
  70. package/dist/scripts/fix-enum-values.js +0 -234
  71. package/dist/scripts/fix-enum-values.js.map +0 -1
  72. package/dist/scripts/fix-schema-discrepancies.d.ts +0 -21
  73. package/dist/scripts/fix-schema-discrepancies.js +0 -240
  74. package/dist/scripts/fix-schema-discrepancies.js.map +0 -1
  75. package/dist/scripts/fix-table-indexes.d.ts +0 -26
  76. package/dist/scripts/fix-table-indexes.js +0 -460
  77. package/dist/scripts/fix-table-indexes.js.map +0 -1
  78. package/dist/scripts/migrate-schema-structure.d.ts +0 -1
  79. package/dist/scripts/migrate-schema-structure.js +0 -76
  80. package/dist/scripts/migrate-schema-structure.js.map +0 -1
  81. package/dist/scripts/migrate-uuid.d.ts +0 -2
  82. package/dist/scripts/migrate-uuid.js +0 -57
  83. package/dist/scripts/migrate-uuid.js.map +0 -1
  84. package/dist/scripts/post-migration-validator.d.ts +0 -34
  85. package/dist/scripts/post-migration-validator.js +0 -363
  86. package/dist/scripts/post-migration-validator.js.map +0 -1
  87. package/dist/scripts/pre-migration-validator.d.ts +0 -25
  88. package/dist/scripts/pre-migration-validator.js +0 -491
  89. package/dist/scripts/pre-migration-validator.js.map +0 -1
  90. package/dist/scripts/reset-database.d.ts +0 -17
  91. package/dist/scripts/reset-database.js +0 -202
  92. package/dist/scripts/reset-database.js.map +0 -1
  93. package/dist/scripts/retry-failed-migrations.d.ts +0 -14
  94. package/dist/scripts/retry-failed-migrations.js +0 -301
  95. package/dist/scripts/retry-failed-migrations.js.map +0 -1
  96. package/dist/scripts/run-migration.d.ts +0 -1
  97. package/dist/scripts/run-migration.js +0 -512
  98. package/dist/scripts/run-migration.js.map +0 -1
  99. package/dist/scripts/schema-sync.d.ts +0 -1
  100. package/dist/scripts/schema-sync.js +0 -85
  101. package/dist/scripts/schema-sync.js.map +0 -1
  102. package/dist/scripts/sequence-sync-cli.d.ts +0 -2
  103. package/dist/scripts/sequence-sync-cli.js +0 -287
  104. package/dist/scripts/sequence-sync-cli.js.map +0 -1
  105. package/dist/scripts/sequence-synchronizer.d.ts +0 -8
  106. package/dist/scripts/sequence-synchronizer.js +0 -88
  107. package/dist/scripts/sequence-synchronizer.js.map +0 -1
  108. package/dist/scripts/sync-enum-types.d.ts +0 -13
  109. package/dist/scripts/sync-enum-types.js +0 -139
  110. package/dist/scripts/sync-enum-types.js.map +0 -1
  111. package/dist/scripts/sync-enum-values.d.ts +0 -20
  112. package/dist/scripts/sync-enum-values.js +0 -336
  113. package/dist/scripts/sync-enum-values.js.map +0 -1
  114. package/dist/scripts/truncate-database.d.ts +0 -10
  115. package/dist/scripts/truncate-database.js +0 -100
  116. package/dist/scripts/truncate-database.js.map +0 -1
  117. package/dist/scripts/verify-migration-setup.d.ts +0 -11
  118. package/dist/scripts/verify-migration-setup.js +0 -120
  119. package/dist/scripts/verify-migration-setup.js.map +0 -1
  120. package/dist/tsconfig.tsbuildinfo +0 -1
  121. package/prisma/migrations/add_athena_match_fields.sql +0 -18
  122. package/prisma/migrations/add_bank_receipt_number.sql +0 -9
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MigrationErrorHandler = void 0;
4
- const fs = require("fs");
5
- const path = require("path");
6
- const common_1 = require("@nestjs/common");
7
- class MigrationErrorHandler {
8
- constructor(logDir = path.join(process.cwd(), 'migration-logs')) {
9
- this.logDir = logDir;
10
- this.logger = new common_1.Logger('MigrationErrorHandler');
11
- this.errorLog = {};
12
- if (!fs.existsSync(this.logDir)) {
13
- fs.mkdirSync(this.logDir, { recursive: true });
14
- }
15
- const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\..+/, '');
16
- this.errorLogPath = path.join(this.logDir, `migration-errors-${timestamp}.json`);
17
- this.saveErrorLog();
18
- }
19
- logError(tenantId, entityName, recordId, error, data) {
20
- if (!this.errorLog[tenantId]) {
21
- this.errorLog[tenantId] = [];
22
- }
23
- this.errorLog[tenantId].push({
24
- timestamp: new Date().toISOString(),
25
- entity: entityName,
26
- recordId,
27
- error: {
28
- message: error.message,
29
- stack: error.stack,
30
- },
31
- data: data || null,
32
- });
33
- this.saveErrorLog();
34
- }
35
- saveErrorLog() {
36
- try {
37
- fs.writeFileSync(this.errorLogPath, JSON.stringify(this.errorLog, null, 2), 'utf8');
38
- }
39
- catch (error) {
40
- this.logger.error(`Error saving error log: ${error.message}`);
41
- }
42
- }
43
- generateErrorReport() {
44
- let totalErrors = 0;
45
- let report = 'Migration Error Report\n';
46
- report += '=====================\n\n';
47
- for (const tenantId in this.errorLog) {
48
- const tenantErrors = this.errorLog[tenantId];
49
- if (tenantErrors.length === 0)
50
- continue;
51
- totalErrors += tenantErrors.length;
52
- report += `Tenant: ${tenantId}\n`;
53
- report += `Errors: ${tenantErrors.length}\n\n`;
54
- const entityErrors = {};
55
- for (const error of tenantErrors) {
56
- entityErrors[error.entity] = (entityErrors[error.entity] || 0) + 1;
57
- }
58
- report += 'Errors by entity:\n';
59
- for (const entity in entityErrors) {
60
- report += ` - ${entity}: ${entityErrors[entity]}\n`;
61
- }
62
- report += '\n';
63
- report += 'Sample errors:\n';
64
- for (let i = 0; i < Math.min(5, tenantErrors.length); i++) {
65
- const error = tenantErrors[i];
66
- report += ` - ${error.entity} (ID: ${error.recordId}): ${error.error.message}\n`;
67
- }
68
- report += '\n';
69
- }
70
- report += `Total errors: ${totalErrors}\n`;
71
- report += `Full error log saved to: ${this.errorLogPath}\n`;
72
- return report;
73
- }
74
- getErrorsForTenant(tenantId) {
75
- return this.errorLog[tenantId] || [];
76
- }
77
- getAllErrors() {
78
- return this.errorLog;
79
- }
80
- }
81
- exports.MigrationErrorHandler = MigrationErrorHandler;
82
- //# sourceMappingURL=error-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/scripts/error-handler.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export declare class DataTypeFixer {
2
- private readonly logger;
3
- private readonly sourcePool;
4
- private readonly targetPool;
5
- constructor();
6
- fixDataTypes(): Promise<void>;
7
- private fixNumericFieldsForSchema;
8
- private fixEnumFieldsForSchema;
9
- private cleanup;
10
- }
@@ -1,185 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataTypeFixer = void 0;
4
- const dotenv = require("dotenv");
5
- const common_1 = require("@nestjs/common");
6
- const pg = require("pg");
7
- dotenv.config();
8
- class DataTypeFixer {
9
- constructor() {
10
- this.logger = new common_1.Logger("DataTypeFixer");
11
- this.sourcePool = new pg.Pool({
12
- connectionString: process.env.SOURCE_DATABASE_URL,
13
- });
14
- this.targetPool = new pg.Pool({
15
- connectionString: process.env.DATABASE_URL,
16
- });
17
- }
18
- async fixDataTypes() {
19
- try {
20
- this.logger.log("Starting data type fixing process");
21
- const schemasQuery = `
22
- SELECT schema_name
23
- FROM information_schema.schemata
24
- WHERE schema_name NOT IN ('public', 'information_schema', 'pg_catalog', 'pg_toast')
25
- AND schema_name NOT LIKE 'pg_%';
26
- `;
27
- const schemasResult = await this.targetPool.query(schemasQuery);
28
- const schemas = schemasResult.rows.map(row => row.schema_name);
29
- this.logger.log(`Found ${schemas.length} schemas to process`);
30
- for (const schema of schemas) {
31
- await this.fixNumericFieldsForSchema(schema);
32
- await this.fixEnumFieldsForSchema(schema);
33
- }
34
- this.logger.log("Data type fixing completed successfully");
35
- }
36
- catch (error) {
37
- this.logger.error(`Error during data type fixing: ${error.message}`, error.stack);
38
- }
39
- finally {
40
- await this.cleanup();
41
- }
42
- }
43
- async fixNumericFieldsForSchema(schema) {
44
- this.logger.log(`Processing numeric fields for schema: ${schema}`);
45
- try {
46
- const numericColumnsQuery = `
47
- SELECT
48
- table_name,
49
- column_name
50
- FROM
51
- information_schema.columns
52
- WHERE
53
- table_schema = $1
54
- AND data_type = 'numeric'
55
- `;
56
- const numericColumnsResult = await this.targetPool.query(numericColumnsQuery, [schema]);
57
- for (const row of numericColumnsResult.rows) {
58
- const tableName = row.table_name;
59
- const columnName = row.column_name;
60
- this.logger.log(`Fixing numeric column ${columnName} in table ${schema}.${tableName}`);
61
- const updateQuery = `
62
- UPDATE "${schema}"."${tableName}"
63
- SET "${columnName}" = CASE
64
- WHEN "${columnName}" IS NULL THEN NULL
65
- WHEN "${columnName}" = '' THEN NULL
66
- ELSE CAST("${columnName}" AS NUMERIC)
67
- END
68
- WHERE "${columnName}" IS NOT NULL
69
- AND "${columnName}" != ''
70
- AND "${columnName}" ~ '^[0-9]+(\.[0-9]+)?$';
71
- `;
72
- try {
73
- await this.targetPool.query(updateQuery);
74
- this.logger.log(`Successfully fixed numeric column ${columnName} in table ${schema}.${tableName}`);
75
- }
76
- catch (updateError) {
77
- this.logger.error(`Error fixing numeric column ${columnName} in table ${schema}.${tableName}: ${updateError.message}`);
78
- }
79
- }
80
- this.logger.log(`Completed processing numeric fields for schema: ${schema}`);
81
- }
82
- catch (error) {
83
- this.logger.error(`Error processing numeric fields for schema ${schema}: ${error.message}`, error.stack);
84
- }
85
- }
86
- async fixEnumFieldsForSchema(schema) {
87
- this.logger.log(`Processing enum fields for schema: ${schema}`);
88
- try {
89
- const enumColumnsQuery = `
90
- SELECT
91
- c.table_name,
92
- c.column_name,
93
- c.udt_name
94
- FROM
95
- information_schema.columns c
96
- WHERE
97
- c.table_schema = $1
98
- AND c.data_type = 'USER-DEFINED'
99
- AND c.udt_name LIKE 'enum_%'
100
- `;
101
- const enumColumnsResult = await this.targetPool.query(enumColumnsQuery, [schema]);
102
- for (const row of enumColumnsResult.rows) {
103
- const tableName = row.table_name;
104
- const columnName = row.column_name;
105
- const enumTypeName = row.udt_name;
106
- this.logger.log(`Fixing enum column ${columnName} (${enumTypeName}) in table ${schema}.${tableName}`);
107
- const enumValuesQuery = `
108
- SELECT e.enumlabel
109
- FROM pg_enum e
110
- JOIN pg_type t ON e.enumtypid = t.oid
111
- WHERE t.typname = $1
112
- ORDER BY e.enumsortorder
113
- `;
114
- const enumValuesResult = await this.targetPool.query(enumValuesQuery, [enumTypeName]);
115
- const validEnumValues = enumValuesResult.rows.map(r => r.enumlabel);
116
- if (validEnumValues.length === 0) {
117
- this.logger.warn(`No enum values found for type ${enumTypeName}. Skipping.`);
118
- continue;
119
- }
120
- this.logger.log(`Valid values for ${enumTypeName}: ${validEnumValues.join(', ')}`);
121
- const currentValuesQuery = `
122
- SELECT DISTINCT "${columnName}"
123
- FROM "${schema}"."${tableName}"
124
- WHERE "${columnName}" IS NOT NULL
125
- `;
126
- const currentValuesResult = await this.targetPool.query(currentValuesQuery);
127
- const currentValues = currentValuesResult.rows.map(r => r[columnName]);
128
- const invalidValues = currentValues.filter(val => !validEnumValues.includes(val));
129
- if (invalidValues.length > 0) {
130
- this.logger.log(`Found invalid values for enum ${enumTypeName}: ${invalidValues.join(', ')}`);
131
- for (const invalidValue of invalidValues) {
132
- const matchingValidValue = validEnumValues.find(v => v.toLowerCase() === invalidValue.toLowerCase());
133
- let updateQuery;
134
- if (matchingValidValue) {
135
- updateQuery = `
136
- UPDATE "${schema}"."${tableName}"
137
- SET "${columnName}" = $1
138
- WHERE "${columnName}" = $2
139
- `;
140
- await this.targetPool.query(updateQuery, [matchingValidValue, invalidValue]);
141
- this.logger.log(`Updated invalid value "${invalidValue}" to "${matchingValidValue}"`);
142
- }
143
- else {
144
- updateQuery = `
145
- UPDATE "${schema}"."${tableName}"
146
- SET "${columnName}" = NULL
147
- WHERE "${columnName}" = $1
148
- `;
149
- await this.targetPool.query(updateQuery, [invalidValue]);
150
- this.logger.log(`Set invalid value "${invalidValue}" to NULL`);
151
- }
152
- }
153
- }
154
- else {
155
- this.logger.log(`No invalid enum values found for ${columnName} in ${schema}.${tableName}`);
156
- }
157
- }
158
- this.logger.log(`Completed processing enum fields for schema: ${schema}`);
159
- }
160
- catch (error) {
161
- this.logger.error(`Error processing enum fields for schema ${schema}: ${error.message}`, error.stack);
162
- }
163
- }
164
- async cleanup() {
165
- this.logger.log("Cleaning up database connections");
166
- await this.sourcePool.end();
167
- await this.targetPool.end();
168
- }
169
- }
170
- exports.DataTypeFixer = DataTypeFixer;
171
- if (require.main === module) {
172
- const run = async () => {
173
- try {
174
- const fixer = new DataTypeFixer();
175
- await fixer.fixDataTypes();
176
- process.exit(0);
177
- }
178
- catch (error) {
179
- console.error("Error:", error.message);
180
- process.exit(1);
181
- }
182
- };
183
- run();
184
- }
185
- //# sourceMappingURL=fix-data-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fix-data-types.js","sourceRoot":"","sources":["../../src/scripts/fix-data-types.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export declare class EnumFixer {
2
- private readonly databaseUrl;
3
- private readonly saveMapping;
4
- private readonly logger;
5
- private readonly pool;
6
- private enumValuesCache;
7
- private mappingsCache;
8
- private readonly mappingsFilePath;
9
- constructor(databaseUrl?: string, saveMapping?: boolean);
10
- fixEnumValues(): Promise<void>;
11
- private getSchemas;
12
- private fixEnumValuesForSchema;
13
- private fixEnumColumn;
14
- private getEnumValues;
15
- private saveMappings;
16
- private cleanup;
17
- }
@@ -1,234 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EnumFixer = 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 EnumFixer {
11
- constructor(databaseUrl = process.env.DATABASE_URL, saveMapping = true) {
12
- this.databaseUrl = databaseUrl;
13
- this.saveMapping = saveMapping;
14
- this.logger = new common_1.Logger("EnumFixer");
15
- this.enumValuesCache = {};
16
- this.mappingsCache = {};
17
- this.pool = new pg.Pool({
18
- connectionString: this.databaseUrl,
19
- });
20
- const mappingsDir = path.join(process.cwd(), "migration-logs");
21
- if (!fs.existsSync(mappingsDir)) {
22
- fs.mkdirSync(mappingsDir, { recursive: true });
23
- }
24
- const timestamp = new Date()
25
- .toISOString()
26
- .replace(/:/g, "-")
27
- .replace(/\..+/, "");
28
- this.mappingsFilePath = path.join(mappingsDir, `enum-mappings-${timestamp}.json`);
29
- if (this.saveMapping) {
30
- this.saveMappings();
31
- }
32
- }
33
- async fixEnumValues() {
34
- try {
35
- this.logger.log("Starting enum values fixing process");
36
- const schemas = await this.getSchemas();
37
- this.logger.log(`Found ${schemas.length} schemas to process`);
38
- for (const schema of schemas) {
39
- await this.fixEnumValuesForSchema(schema);
40
- }
41
- if (this.saveMapping) {
42
- this.saveMappings();
43
- this.logger.log(`Enum mappings saved to: ${this.mappingsFilePath}`);
44
- }
45
- this.logger.log("Enum values fixing completed successfully");
46
- }
47
- catch (error) {
48
- this.logger.error(`Error during enum values fixing: ${error.message}`, error.stack);
49
- }
50
- finally {
51
- await this.cleanup();
52
- }
53
- }
54
- async getSchemas() {
55
- const result = await this.pool.query(`
56
- SELECT schema_name
57
- FROM information_schema.schemata
58
- WHERE schema_name NOT IN ('information_schema', 'pg_catalog', 'pg_toast')
59
- AND schema_name NOT LIKE 'pg_%'
60
- `);
61
- return result.rows.map((row) => row.schema_name);
62
- }
63
- async fixEnumValuesForSchema(schema) {
64
- this.logger.log(`Processing enum fields for schema: ${schema}`);
65
- try {
66
- const enumColumnsQuery = `
67
- SELECT
68
- c.table_name,
69
- c.column_name,
70
- c.udt_name
71
- FROM
72
- information_schema.columns c
73
- WHERE
74
- c.table_schema = $1
75
- AND c.data_type = 'USER-DEFINED'
76
- AND c.udt_name LIKE 'enum_%'
77
- `;
78
- const enumColumnsResult = await this.pool.query(enumColumnsQuery, [
79
- schema,
80
- ]);
81
- if (enumColumnsResult.rows.length === 0) {
82
- this.logger.log(`No enum fields found in schema: ${schema}`);
83
- return;
84
- }
85
- this.logger.log(`Found ${enumColumnsResult.rows.length} enum fields in schema: ${schema}`);
86
- for (const row of enumColumnsResult.rows) {
87
- const tableName = row.table_name;
88
- const columnName = row.column_name;
89
- const enumTypeName = row.udt_name;
90
- await this.fixEnumColumn(schema, tableName, columnName, enumTypeName);
91
- }
92
- this.logger.log(`Completed processing enum fields for schema: ${schema}`);
93
- }
94
- catch (error) {
95
- this.logger.error(`Error processing enum fields for schema ${schema}: ${error.message}`, error.stack);
96
- }
97
- }
98
- async fixEnumColumn(schema, tableName, columnName, enumTypeName) {
99
- this.logger.log(`Fixing enum column ${columnName} (${enumTypeName}) in table ${schema}.${tableName}`);
100
- try {
101
- let validEnumValues;
102
- if (this.enumValuesCache[enumTypeName]) {
103
- validEnumValues = this.enumValuesCache[enumTypeName];
104
- }
105
- else {
106
- validEnumValues = await this.getEnumValues(enumTypeName);
107
- this.enumValuesCache[enumTypeName] = validEnumValues;
108
- }
109
- if (validEnumValues.length === 0) {
110
- this.logger.warn(`No enum values found for type ${enumTypeName}. Skipping.`);
111
- return;
112
- }
113
- this.logger.log(`Valid values for ${enumTypeName}: ${validEnumValues.join(", ")}`);
114
- const currentValuesQuery = `
115
- SELECT DISTINCT "${columnName}"
116
- FROM "${schema}"."${tableName}"
117
- WHERE "${columnName}" IS NOT NULL
118
- `;
119
- const currentValuesResult = await this.pool.query(currentValuesQuery);
120
- const currentValues = currentValuesResult.rows.map((r) => r[columnName]);
121
- const invalidValues = currentValues.filter((val) => !validEnumValues.includes(val));
122
- if (invalidValues.length === 0) {
123
- this.logger.log(`No invalid values found for enum column ${columnName} in table ${schema}.${tableName}`);
124
- return;
125
- }
126
- this.logger.log(`Found ${invalidValues.length} invalid values for enum ${enumTypeName} in ${schema}.${tableName}: ${invalidValues.join(", ")}`);
127
- for (const invalidValue of invalidValues) {
128
- const mappingKey = `${enumTypeName}:${invalidValue}`;
129
- let mappedValue = null;
130
- if (this.mappingsCache[mappingKey]) {
131
- mappedValue = this.mappingsCache[mappingKey];
132
- this.logger.log(`Using cached mapping for ${invalidValue} -> ${mappedValue}`);
133
- }
134
- else {
135
- const matchingValidValue = validEnumValues.find((v) => v.toLowerCase() === invalidValue.toLowerCase());
136
- if (matchingValidValue) {
137
- mappedValue = matchingValidValue;
138
- this.logger.log(`Found case-insensitive match for ${invalidValue} -> ${mappedValue}`);
139
- }
140
- else {
141
- const similarValues = validEnumValues.filter((v) => v.toLowerCase().includes(invalidValue.toLowerCase()) ||
142
- invalidValue.toLowerCase().includes(v.toLowerCase()));
143
- if (similarValues.length === 1) {
144
- mappedValue = similarValues[0];
145
- this.logger.log(`Found partial match for ${invalidValue} -> ${mappedValue}`);
146
- }
147
- else if (similarValues.length > 1) {
148
- mappedValue = similarValues.reduce((prev, curr) => Math.abs(curr.length - invalidValue.length) <
149
- Math.abs(prev.length - invalidValue.length)
150
- ? curr
151
- : prev);
152
- this.logger.log(`Found multiple partial matches for ${invalidValue}, using closest: ${mappedValue}`);
153
- }
154
- else {
155
- mappedValue = null;
156
- this.logger.log(`No match found for ${invalidValue}, will set to NULL`);
157
- }
158
- }
159
- this.mappingsCache[mappingKey] = mappedValue;
160
- if (this.saveMapping) {
161
- this.saveMappings();
162
- }
163
- }
164
- const updateQuery = mappedValue !== null
165
- ? `
166
- UPDATE "${schema}"."${tableName}"
167
- SET "${columnName}" = CAST($1 AS "${enumTypeName}")
168
- WHERE "${columnName}" = $2
169
- `
170
- : `
171
- UPDATE "${schema}"."${tableName}"
172
- SET "${columnName}" = NULL
173
- WHERE "${columnName}" = $1
174
- `;
175
- const updateParams = mappedValue !== null ? [mappedValue, invalidValue] : [invalidValue];
176
- const updateResult = await this.pool.query(updateQuery, updateParams);
177
- this.logger.log(`Updated ${updateResult.rowCount} rows in ${schema}.${tableName} with ${invalidValue} -> ${mappedValue || "NULL"} with explicit CAST`);
178
- }
179
- }
180
- catch (error) {
181
- this.logger.error(`Error fixing enum column ${columnName} in table ${schema}.${tableName}: ${error.message}`, error.stack);
182
- }
183
- }
184
- async getEnumValues(enumTypeName) {
185
- try {
186
- const enumQuery = `
187
- SELECT e.enumlabel
188
- FROM pg_enum e
189
- JOIN pg_type t ON e.enumtypid = t.oid
190
- WHERE t.typname = $1
191
- ORDER BY e.enumsortorder
192
- `;
193
- const result = await this.pool.query(enumQuery, [enumTypeName]);
194
- return result.rows.map((row) => row.enumlabel);
195
- }
196
- catch (error) {
197
- this.logger.error(`Error getting enum values for ${enumTypeName}: ${error.message}`);
198
- return [];
199
- }
200
- }
201
- saveMappings() {
202
- try {
203
- fs.writeFileSync(this.mappingsFilePath, JSON.stringify(this.mappingsCache, null, 2), "utf8");
204
- }
205
- catch (error) {
206
- this.logger.error(`Error saving enum mappings: ${error.message}`);
207
- }
208
- }
209
- async cleanup() {
210
- this.logger.log("Cleaning up database connections");
211
- await this.pool.end();
212
- }
213
- }
214
- exports.EnumFixer = EnumFixer;
215
- if (require.main === module) {
216
- const run = async () => {
217
- try {
218
- const databaseUrl = process.argv[2] || process.env.DATABASE_URL;
219
- if (!databaseUrl) {
220
- console.error("Error: No database URL provided. Please provide a database URL as an argument or set DATABASE_URL environment variable.");
221
- process.exit(1);
222
- }
223
- const enumFixer = new EnumFixer(databaseUrl);
224
- await enumFixer.fixEnumValues();
225
- process.exit(0);
226
- }
227
- catch (error) {
228
- console.error("Error:", error.message);
229
- process.exit(1);
230
- }
231
- };
232
- run();
233
- }
234
- //# sourceMappingURL=fix-enum-values.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fix-enum-values.js","sourceRoot":"","sources":["../../src/scripts/fix-enum-values.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACzB,iCAAiC;AACjC,2CAAwC;AACxC,yBAAyB;AACzB,6BAA6B;AAE7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAa,SAAS;IAQpB,YACmB,cAAsB,OAAO,CAAC,GAAG,CAAC,YAAY,EAC9C,cAAuB,IAAI;QAD3B,gBAAW,GAAX,WAAW,CAAmC;QAC9C,gBAAW,GAAX,WAAW,CAAgB;QAT7B,WAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC;QAE1C,oBAAe,GAA6B,EAAE,CAAC;QAE/C,kBAAa,GAAkC,EAAE,CAAC;QAOxD,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;YACtB,gBAAgB,EAAE,IAAI,CAAC,WAAW;SACnC,CAAC,CAAC;QAGH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,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,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAC/B,WAAW,EACX,iBAAiB,SAAS,OAAO,CAClC,CAAC;QAGF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAGvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC;YAG9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;YAGD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,oCAAoC,KAAK,CAAC,OAAO,EAAE,EACnD,KAAK,CAAC,KAAK,CACZ,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;KAKpC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,MAAc;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAEhE,IAAI,CAAC;YAEH,MAAM,gBAAgB,GAAG;;;;;;;;;;;OAWxB,CAAC;YAEF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAChE,MAAM;aACP,CAAC,CAAC;YAEH,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,SAAS,iBAAiB,CAAC,IAAI,CAAC,MAAM,2BAA2B,MAAM,EAAE,CAC1E,CAAC;YAGF,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;gBACjC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC;gBACnC,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC;gBAElC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gDAAgD,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2CAA2C,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,EACrE,KAAK,CAAC,KAAK,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,MAAc,EACd,SAAiB,EACjB,UAAkB,EAClB,YAAoB;QAEpB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,sBAAsB,UAAU,KAAK,YAAY,cAAc,MAAM,IAAI,SAAS,EAAE,CACrF,CAAC;QAEF,IAAI,CAAC;YAEH,IAAI,eAAyB,CAAC;YAC9B,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;gBACzD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,eAAe,CAAC;YACvD,CAAC;YAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iCAAiC,YAAY,aAAa,CAC3D,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,oBAAoB,YAAY,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClE,CAAC;YAGF,MAAM,kBAAkB,GAAG;2BACN,UAAU;gBACrB,MAAM,MAAM,SAAS;iBACpB,UAAU;OACpB,CAAC;YAEF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACtE,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAGzE,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CACxC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CACxC,CAAC;YAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,2CAA2C,UAAU,aAAa,MAAM,IAAI,SAAS,EAAE,CACxF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,SACE,aAAa,CAAC,MAChB,4BAA4B,YAAY,OAAO,MAAM,IAAI,SAAS,KAAK,aAAa,CAAC,IAAI,CACvF,IAAI,CACL,EAAE,CACJ,CAAC;YAGF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;gBAEzC,MAAM,UAAU,GAAG,GAAG,YAAY,IAAI,YAAY,EAAE,CAAC;gBACrD,IAAI,WAAW,GAAkB,IAAI,CAAC;gBAEtC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,4BAA4B,YAAY,OAAO,WAAW,EAAE,CAC7D,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBAEN,MAAM,kBAAkB,GAAG,eAAe,CAAC,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CACtD,CAAC;oBAEF,IAAI,kBAAkB,EAAE,CAAC;wBACvB,WAAW,GAAG,kBAAkB,CAAC;wBACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,oCAAoC,YAAY,OAAO,WAAW,EAAE,CACrE,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBAEN,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;4BACpD,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACvD,CAAC;wBAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC/B,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;4BAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,2BAA2B,YAAY,OAAO,WAAW,EAAE,CAC5D,CAAC;wBACJ,CAAC;6BAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAEpC,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gCAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gCACzC,CAAC,CAAC,IAAI;gCACN,CAAC,CAAC,IAAI,CACT,CAAC;4BACF,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,sCAAsC,YAAY,oBAAoB,WAAW,EAAE,CACpF,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BAEN,WAAW,GAAG,IAAI,CAAC;4BACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,sBAAsB,YAAY,oBAAoB,CACvD,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAGD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;oBAC7C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,CAAC;gBACH,CAAC;gBAGD,MAAM,WAAW,GACf,WAAW,KAAK,IAAI;oBAClB,CAAC,CAAC;sBACQ,MAAM,MAAM,SAAS;mBACxB,UAAU,mBAAmB,YAAY;qBACvC,UAAU;WACpB;oBACC,CAAC,CAAC;sBACQ,MAAM,MAAM,SAAS;mBACxB,UAAU;qBACR,UAAU;WACpB,CAAC;gBAEJ,MAAM,YAAY,GAChB,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAEtE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAEtE,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,WACE,YAAY,CAAC,QACf,YAAY,MAAM,IAAI,SAAS,SAAS,YAAY,OAClD,WAAW,IAAI,MACjB,qBAAqB,CACtB,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4BAA4B,UAAU,aAAa,MAAM,IAAI,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,EAC1F,KAAK,CAAC,KAAK,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,YAAoB;QAC9C,IAAI,CAAC;YACH,MAAM,SAAS,GAAG;;;;;;OAMjB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,iCAAiC,YAAY,KAAK,KAAK,CAAC,OAAO,EAAE,CAClE,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAC3C,MAAM,CACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;CACF;AAlUD,8BAkUC;AAGD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC;YAEH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAEhE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CACX,yHAAyH,CAC1H,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,SAAS,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,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"}
@@ -1,21 +0,0 @@
1
- export declare class SchemaDiscrepancyFixer {
2
- private readonly sourceUrl;
3
- private readonly targetUrl;
4
- private readonly reportPath?;
5
- private readonly logger;
6
- private readonly sourcePool;
7
- private readonly targetPool;
8
- private readonly columnTypeCache;
9
- constructor(sourceUrl?: string, targetUrl?: string, reportPath?: string);
10
- fixDiscrepancies(): Promise<void>;
11
- private findLatestReport;
12
- private groupByTable;
13
- private fixTableColumns;
14
- private getTargetSchemas;
15
- private cacheSourceColumnTypes;
16
- private checkTableExists;
17
- private checkColumnExists;
18
- private addColumn;
19
- private addUniqueConstraint;
20
- private cleanup;
21
- }