@javalabs/prisma-client 1.0.26 → 1.0.29

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 (170) hide show
  1. package/.github/CODEOWNERS +1 -1
  2. package/README.md +269 -269
  3. package/migration-config.json +63 -63
  4. package/migration-config.json.bk +95 -95
  5. package/migrations/add_reserved_amount.sql +7 -7
  6. package/package.json +44 -44
  7. package/prisma/migrations/add_uuid_to_transactions.sql +13 -13
  8. package/prisma/schema.prisma +609 -607
  9. package/src/index.ts +23 -23
  10. package/src/prisma-factory.service.ts +40 -40
  11. package/src/prisma.module.ts +9 -9
  12. package/src/prisma.service.ts +16 -16
  13. package/src/scripts/add-uuid-to-table.ts +138 -138
  14. package/src/scripts/create-tenant-schemas.ts +145 -145
  15. package/src/scripts/data-migration/batch-migrator.ts +248 -248
  16. package/src/scripts/data-migration/data-transformer.ts +426 -426
  17. package/src/scripts/data-migration/db-connector.ts +120 -120
  18. package/src/scripts/data-migration/dependency-resolver.ts +174 -174
  19. package/src/scripts/data-migration/entity-discovery.ts +196 -196
  20. package/src/scripts/data-migration/foreign-key-manager.ts +277 -277
  21. package/src/scripts/data-migration/migration-config.json +63 -63
  22. package/src/scripts/data-migration/migration-tool.ts +509 -509
  23. package/src/scripts/data-migration/schema-utils.ts +248 -248
  24. package/src/scripts/data-migration/tenant-migrator.ts +201 -201
  25. package/src/scripts/data-migration/typecast-manager.ts +193 -193
  26. package/src/scripts/data-migration/types.ts +113 -113
  27. package/src/scripts/database-initializer.ts +49 -49
  28. package/src/scripts/drop-database.ts +104 -104
  29. package/src/scripts/dump-source-db.sh +61 -61
  30. package/src/scripts/encrypt-user-passwords.ts +36 -36
  31. package/src/scripts/error-handler.ts +117 -117
  32. package/src/scripts/fix-data-types.ts +241 -241
  33. package/src/scripts/fix-enum-values.ts +357 -357
  34. package/src/scripts/fix-schema-discrepancies.ts +317 -317
  35. package/src/scripts/fix-table-indexes.ts +601 -601
  36. package/src/scripts/migrate-schema-structure.ts +90 -90
  37. package/src/scripts/migrate-uuid.ts +76 -76
  38. package/src/scripts/post-migration-validator.ts +526 -526
  39. package/src/scripts/pre-migration-validator.ts +610 -610
  40. package/src/scripts/reset-database.ts +263 -263
  41. package/src/scripts/retry-failed-migrations.ts +416 -416
  42. package/src/scripts/run-migration.ts +707 -707
  43. package/src/scripts/schema-sync.ts +128 -128
  44. package/src/scripts/sequence-sync-cli.ts +416 -416
  45. package/src/scripts/sequence-synchronizer.ts +127 -127
  46. package/src/scripts/sync-enum-types.ts +170 -170
  47. package/src/scripts/sync-enum-values.ts +563 -563
  48. package/src/scripts/truncate-database.ts +123 -123
  49. package/src/scripts/verify-migration-setup.ts +135 -135
  50. package/tsconfig.json +17 -17
  51. package/dist/index.d.ts +0 -7
  52. package/dist/index.js +0 -34
  53. package/dist/index.js.map +0 -1
  54. package/dist/prisma-factory.service.d.ts +0 -9
  55. package/dist/prisma-factory.service.js +0 -47
  56. package/dist/prisma-factory.service.js.map +0 -1
  57. package/dist/prisma.module.d.ts +0 -2
  58. package/dist/prisma.module.js +0 -23
  59. package/dist/prisma.module.js.map +0 -1
  60. package/dist/prisma.service.d.ts +0 -6
  61. package/dist/prisma.service.js +0 -27
  62. package/dist/prisma.service.js.map +0 -1
  63. package/dist/scripts/add-uuid-to-table.d.ts +0 -8
  64. package/dist/scripts/add-uuid-to-table.js +0 -98
  65. package/dist/scripts/add-uuid-to-table.js.map +0 -1
  66. package/dist/scripts/create-tenant-schemas.d.ts +0 -1
  67. package/dist/scripts/create-tenant-schemas.js +0 -117
  68. package/dist/scripts/create-tenant-schemas.js.map +0 -1
  69. package/dist/scripts/data-migration/batch-migrator.d.ts +0 -20
  70. package/dist/scripts/data-migration/batch-migrator.js +0 -134
  71. package/dist/scripts/data-migration/batch-migrator.js.map +0 -1
  72. package/dist/scripts/data-migration/data-transformer.d.ts +0 -26
  73. package/dist/scripts/data-migration/data-transformer.js +0 -278
  74. package/dist/scripts/data-migration/data-transformer.js.map +0 -1
  75. package/dist/scripts/data-migration/db-connector.d.ts +0 -12
  76. package/dist/scripts/data-migration/db-connector.js +0 -94
  77. package/dist/scripts/data-migration/db-connector.js.map +0 -1
  78. package/dist/scripts/data-migration/dependency-resolver.d.ts +0 -18
  79. package/dist/scripts/data-migration/dependency-resolver.js +0 -132
  80. package/dist/scripts/data-migration/dependency-resolver.js.map +0 -1
  81. package/dist/scripts/data-migration/entity-discovery.d.ts +0 -11
  82. package/dist/scripts/data-migration/entity-discovery.js +0 -152
  83. package/dist/scripts/data-migration/entity-discovery.js.map +0 -1
  84. package/dist/scripts/data-migration/foreign-key-manager.d.ts +0 -18
  85. package/dist/scripts/data-migration/foreign-key-manager.js +0 -160
  86. package/dist/scripts/data-migration/foreign-key-manager.js.map +0 -1
  87. package/dist/scripts/data-migration/migration-tool.d.ts +0 -48
  88. package/dist/scripts/data-migration/migration-tool.js +0 -290
  89. package/dist/scripts/data-migration/migration-tool.js.map +0 -1
  90. package/dist/scripts/data-migration/schema-utils.d.ts +0 -18
  91. package/dist/scripts/data-migration/schema-utils.js +0 -207
  92. package/dist/scripts/data-migration/schema-utils.js.map +0 -1
  93. package/dist/scripts/data-migration/tenant-migrator.d.ts +0 -15
  94. package/dist/scripts/data-migration/tenant-migrator.js +0 -117
  95. package/dist/scripts/data-migration/tenant-migrator.js.map +0 -1
  96. package/dist/scripts/data-migration/typecast-manager.d.ts +0 -9
  97. package/dist/scripts/data-migration/typecast-manager.js +0 -179
  98. package/dist/scripts/data-migration/typecast-manager.js.map +0 -1
  99. package/dist/scripts/data-migration/types.d.ts +0 -100
  100. package/dist/scripts/data-migration/types.js +0 -3
  101. package/dist/scripts/data-migration/types.js.map +0 -1
  102. package/dist/scripts/database-initializer.d.ts +0 -5
  103. package/dist/scripts/database-initializer.js +0 -45
  104. package/dist/scripts/database-initializer.js.map +0 -1
  105. package/dist/scripts/drop-database.d.ts +0 -10
  106. package/dist/scripts/drop-database.js +0 -81
  107. package/dist/scripts/drop-database.js.map +0 -1
  108. package/dist/scripts/encrypt-user-passwords.d.ts +0 -1
  109. package/dist/scripts/encrypt-user-passwords.js +0 -33
  110. package/dist/scripts/encrypt-user-passwords.js.map +0 -1
  111. package/dist/scripts/error-handler.d.ts +0 -12
  112. package/dist/scripts/error-handler.js +0 -82
  113. package/dist/scripts/error-handler.js.map +0 -1
  114. package/dist/scripts/fix-data-types.d.ts +0 -10
  115. package/dist/scripts/fix-data-types.js +0 -185
  116. package/dist/scripts/fix-data-types.js.map +0 -1
  117. package/dist/scripts/fix-enum-values.d.ts +0 -17
  118. package/dist/scripts/fix-enum-values.js +0 -234
  119. package/dist/scripts/fix-enum-values.js.map +0 -1
  120. package/dist/scripts/fix-schema-discrepancies.d.ts +0 -21
  121. package/dist/scripts/fix-schema-discrepancies.js +0 -240
  122. package/dist/scripts/fix-schema-discrepancies.js.map +0 -1
  123. package/dist/scripts/fix-table-indexes.d.ts +0 -26
  124. package/dist/scripts/fix-table-indexes.js +0 -460
  125. package/dist/scripts/fix-table-indexes.js.map +0 -1
  126. package/dist/scripts/migrate-schema-structure.d.ts +0 -1
  127. package/dist/scripts/migrate-schema-structure.js +0 -76
  128. package/dist/scripts/migrate-schema-structure.js.map +0 -1
  129. package/dist/scripts/migrate-uuid.d.ts +0 -2
  130. package/dist/scripts/migrate-uuid.js +0 -57
  131. package/dist/scripts/migrate-uuid.js.map +0 -1
  132. package/dist/scripts/post-migration-validator.d.ts +0 -34
  133. package/dist/scripts/post-migration-validator.js +0 -363
  134. package/dist/scripts/post-migration-validator.js.map +0 -1
  135. package/dist/scripts/pre-migration-validator.d.ts +0 -25
  136. package/dist/scripts/pre-migration-validator.js +0 -491
  137. package/dist/scripts/pre-migration-validator.js.map +0 -1
  138. package/dist/scripts/reset-database.d.ts +0 -17
  139. package/dist/scripts/reset-database.js +0 -202
  140. package/dist/scripts/reset-database.js.map +0 -1
  141. package/dist/scripts/retry-failed-migrations.d.ts +0 -14
  142. package/dist/scripts/retry-failed-migrations.js +0 -301
  143. package/dist/scripts/retry-failed-migrations.js.map +0 -1
  144. package/dist/scripts/run-migration.d.ts +0 -1
  145. package/dist/scripts/run-migration.js +0 -512
  146. package/dist/scripts/run-migration.js.map +0 -1
  147. package/dist/scripts/schema-sync.d.ts +0 -1
  148. package/dist/scripts/schema-sync.js +0 -85
  149. package/dist/scripts/schema-sync.js.map +0 -1
  150. package/dist/scripts/sequence-sync-cli.d.ts +0 -2
  151. package/dist/scripts/sequence-sync-cli.js +0 -287
  152. package/dist/scripts/sequence-sync-cli.js.map +0 -1
  153. package/dist/scripts/sequence-synchronizer.d.ts +0 -8
  154. package/dist/scripts/sequence-synchronizer.js +0 -88
  155. package/dist/scripts/sequence-synchronizer.js.map +0 -1
  156. package/dist/scripts/sync-enum-types.d.ts +0 -13
  157. package/dist/scripts/sync-enum-types.js +0 -139
  158. package/dist/scripts/sync-enum-types.js.map +0 -1
  159. package/dist/scripts/sync-enum-values.d.ts +0 -20
  160. package/dist/scripts/sync-enum-values.js +0 -336
  161. package/dist/scripts/sync-enum-values.js.map +0 -1
  162. package/dist/scripts/truncate-database.d.ts +0 -10
  163. package/dist/scripts/truncate-database.js +0 -100
  164. package/dist/scripts/truncate-database.js.map +0 -1
  165. package/dist/scripts/verify-migration-setup.d.ts +0 -11
  166. package/dist/scripts/verify-migration-setup.js +0 -120
  167. package/dist/scripts/verify-migration-setup.js.map +0 -1
  168. package/dist/tsconfig.tsbuildinfo +0 -1
  169. package/prisma/migrations/add_athena_match_fields.sql +0 -18
  170. package/prisma/migrations/add_bank_receipt_number.sql +0 -9
@@ -1,202 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseResetTool = void 0;
4
- const pg = require("pg");
5
- const dotenv = require("dotenv");
6
- const common_1 = require("@nestjs/common");
7
- const child_process_1 = require("child_process");
8
- const client_1 = require("@prisma/client");
9
- dotenv.config();
10
- class DatabaseResetTool {
11
- constructor(databaseUrl) {
12
- this.databaseUrl = databaseUrl;
13
- this.logger = new common_1.Logger("DatabaseResetTool");
14
- this.pool = new pg.Pool({
15
- connectionString: this.databaseUrl,
16
- });
17
- const adminUrl = this.databaseUrl.replace(/\/[^/]+$/, "/postgres");
18
- this.adminPool = new pg.Pool({
19
- connectionString: adminUrl,
20
- });
21
- this.prisma = new client_1.PrismaClient({
22
- datasources: {
23
- db: {
24
- url: this.databaseUrl,
25
- },
26
- },
27
- });
28
- }
29
- async resetDatabase(recreateDb = false) {
30
- try {
31
- this.logger.log("Starting complete database reset process");
32
- const dbName = this.extractDatabaseName(this.databaseUrl);
33
- if (!dbName) {
34
- throw new Error("Could not extract database name from connection URL");
35
- }
36
- await this.dropAllSchemas();
37
- await this.dropAllPublicTables();
38
- await this.dropAllCustomTypes();
39
- if (recreateDb) {
40
- await this.terminateConnections(dbName);
41
- await this.adminPool.query(`DROP DATABASE IF EXISTS "${dbName}"`);
42
- this.logger.log(`Recreating database: ${dbName}`);
43
- await this.adminPool.query(`CREATE DATABASE "${dbName}"`);
44
- this.logger.log("Running prisma migrate to recreate base schema");
45
- try {
46
- (0, child_process_1.execSync)(`DATABASE_URL="${this.databaseUrl}" npx prisma migrate deploy`, {
47
- stdio: 'inherit'
48
- });
49
- }
50
- catch (migrationError) {
51
- this.logger.error(`Error running prisma migrate: ${migrationError.message}`);
52
- }
53
- }
54
- this.logger.log("Database has been completely reset");
55
- return true;
56
- }
57
- catch (error) {
58
- this.logger.error(`Error resetting database: ${error.message}`, error.stack);
59
- return false;
60
- }
61
- finally {
62
- await this.cleanup();
63
- }
64
- }
65
- async dropAllSchemas() {
66
- this.logger.log("Dropping all custom schemas");
67
- try {
68
- const schemas = await this.getCustomSchemas();
69
- this.logger.log(`Found ${schemas.length} custom schemas to drop`);
70
- await this.pool.query(`SET session_replication_role = 'replica'`);
71
- for (const schema of schemas) {
72
- try {
73
- await this.pool.query(`DROP SCHEMA IF EXISTS "${schema}" CASCADE`);
74
- this.logger.log(`Dropped schema: ${schema}`);
75
- }
76
- catch (error) {
77
- this.logger.error(`Error dropping schema ${schema}: ${error.message}`);
78
- }
79
- }
80
- await this.pool.query(`SET session_replication_role = 'origin'`);
81
- }
82
- catch (error) {
83
- this.logger.error(`Error dropping schemas: ${error.message}`);
84
- }
85
- }
86
- async dropAllPublicTables() {
87
- this.logger.log("Dropping all tables in public schema");
88
- try {
89
- const tables = await this.getPublicTables();
90
- this.logger.log(`Found ${tables.length} tables in public schema to drop`);
91
- if (tables.length > 0) {
92
- await this.pool.query(`SET session_replication_role = 'replica'`);
93
- const tableList = tables.map(table => `"${table}"`).join(", ");
94
- if (tableList) {
95
- await this.pool.query(`DROP TABLE IF EXISTS ${tableList} CASCADE`);
96
- this.logger.log("Dropped all tables in public schema");
97
- }
98
- await this.pool.query(`SET session_replication_role = 'origin'`);
99
- }
100
- }
101
- catch (error) {
102
- this.logger.error(`Error dropping public tables: ${error.message}`);
103
- }
104
- }
105
- async dropAllCustomTypes() {
106
- this.logger.log("Dropping all custom types (enums, domains, etc.)");
107
- try {
108
- const typesQuery = `
109
- SELECT t.typname AS name
110
- FROM pg_type t
111
- JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
112
- WHERE n.nspname = 'public'
113
- AND t.typtype = 'e' -- enum types
114
- `;
115
- const typesResult = await this.pool.query(typesQuery);
116
- const types = typesResult.rows.map(row => row.name);
117
- this.logger.log(`Found ${types.length} custom types to drop`);
118
- for (const type of types) {
119
- try {
120
- await this.pool.query(`DROP TYPE IF EXISTS "${type}" CASCADE`);
121
- this.logger.log(`Dropped type: ${type}`);
122
- }
123
- catch (error) {
124
- this.logger.error(`Error dropping type ${type}: ${error.message}`);
125
- }
126
- }
127
- }
128
- catch (error) {
129
- this.logger.error(`Error dropping custom types: ${error.message}`);
130
- }
131
- }
132
- async getCustomSchemas() {
133
- const result = await this.pool.query(`
134
- SELECT schema_name
135
- FROM information_schema.schemata
136
- WHERE schema_name NOT IN ('public', 'information_schema', 'pg_catalog', 'pg_toast')
137
- AND schema_name NOT LIKE 'pg_%'
138
- `);
139
- return result.rows.map(row => row.schema_name);
140
- }
141
- async getPublicTables() {
142
- const result = await this.pool.query(`
143
- SELECT table_name
144
- FROM information_schema.tables
145
- WHERE table_schema = 'public'
146
- AND table_type = 'BASE TABLE'
147
- `);
148
- return result.rows.map(row => row.table_name);
149
- }
150
- extractDatabaseName(url) {
151
- const matches = url.match(/\/([^/?]+)($|\?)/);
152
- return matches ? matches[1] : null;
153
- }
154
- async terminateConnections(dbName) {
155
- this.logger.log(`Terminating all connections to database: ${dbName}`);
156
- try {
157
- await this.adminPool.query(`
158
- SELECT pg_terminate_backend(pg_stat_activity.pid)
159
- FROM pg_stat_activity
160
- WHERE pg_stat_activity.datname = $1
161
- AND pid <> pg_backend_pid()
162
- `, [dbName]);
163
- this.logger.log("All connections terminated successfully");
164
- }
165
- catch (error) {
166
- this.logger.error(`Error terminating connections: ${error.message}`);
167
- }
168
- }
169
- async cleanup() {
170
- this.logger.log("Cleaning up database connections");
171
- await this.prisma.$disconnect();
172
- await this.pool.end();
173
- await this.adminPool.end();
174
- }
175
- }
176
- exports.DatabaseResetTool = DatabaseResetTool;
177
- if (require.main === module) {
178
- const run = async () => {
179
- try {
180
- dotenv.config();
181
- const databaseUrl = process.argv[2] || process.env.DATABASE_URL;
182
- if (!databaseUrl) {
183
- console.error("Error: DATABASE_URL not found in environment variables or command line arguments");
184
- process.exit(1);
185
- }
186
- const recreateFlag = process.argv.includes('--recreate') || process.argv.includes('-r');
187
- const resetTool = new DatabaseResetTool(databaseUrl);
188
- const success = await resetTool.resetDatabase(recreateFlag);
189
- if (!success) {
190
- console.error("Database reset failed");
191
- process.exit(1);
192
- }
193
- process.exit(0);
194
- }
195
- catch (error) {
196
- console.error("Error:", error.message);
197
- process.exit(1);
198
- }
199
- };
200
- run();
201
- }
202
- //# sourceMappingURL=reset-database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reset-database.js","sourceRoot":"","sources":["../../src/scripts/reset-database.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- export declare class FailedMigrationRetry {
2
- private readonly errorLogPath;
3
- private readonly logger;
4
- private readonly targetPrisma;
5
- private readonly targetPool;
6
- private readonly errorHandler;
7
- private schemaCache;
8
- constructor(errorLogPath: string);
9
- retryFailedMigrations(): Promise<void>;
10
- private getTableSchema;
11
- private getEnumValues;
12
- private findMatchingEnumValue;
13
- private cleanup;
14
- }
@@ -1,301 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FailedMigrationRetry = void 0;
4
- const fs = require("fs");
5
- const client_1 = require("@prisma/client");
6
- const dotenv = require("dotenv");
7
- const common_1 = require("@nestjs/common");
8
- const pg = require("pg");
9
- const error_handler_1 = require("./error-handler");
10
- dotenv.config();
11
- class FailedMigrationRetry {
12
- constructor(errorLogPath) {
13
- this.errorLogPath = errorLogPath;
14
- this.logger = new common_1.Logger("FailedMigrationRetry");
15
- this.schemaCache = {};
16
- this.targetPool = new pg.Pool({
17
- connectionString: process.env.DATABASE_URL,
18
- });
19
- this.targetPrisma = new client_1.PrismaClient({
20
- datasources: {
21
- db: {
22
- url: process.env.DATABASE_URL,
23
- },
24
- },
25
- });
26
- this.errorHandler = new error_handler_1.MigrationErrorHandler();
27
- }
28
- async retryFailedMigrations() {
29
- try {
30
- this.logger.log(`Loading error log from: ${this.errorLogPath}`);
31
- if (!fs.existsSync(this.errorLogPath)) {
32
- this.logger.error(`Error log file not found: ${this.errorLogPath}`);
33
- return;
34
- }
35
- const errorLogContent = fs.readFileSync(this.errorLogPath, "utf8");
36
- const errorLog = JSON.parse(errorLogContent);
37
- let totalErrors = 0;
38
- let retrySuccessCount = 0;
39
- let retryFailCount = 0;
40
- for (const tenantId in errorLog) {
41
- const tenantErrors = errorLog[tenantId];
42
- if (tenantErrors.length === 0)
43
- continue;
44
- totalErrors += tenantErrors.length;
45
- this.logger.log(`Processing ${tenantErrors.length} errors for tenant: ${tenantId}`);
46
- const tenantPrisma = new client_1.PrismaClient({
47
- datasources: {
48
- db: {
49
- url: `${process.env.DATABASE_URL}?schema=${tenantId}`,
50
- },
51
- },
52
- transactionOptions: {
53
- maxWait: 120000,
54
- timeout: 120000,
55
- },
56
- });
57
- for (const errorEntry of tenantErrors) {
58
- const { entity, recordId, data } = errorEntry;
59
- this.logger.log(`Retrying ${entity} with ID ${recordId}`);
60
- try {
61
- if (!this.schemaCache[`${tenantId}.${entity}`]) {
62
- this.schemaCache[`${tenantId}.${entity}`] =
63
- await this.getTableSchema(entity, tenantId);
64
- }
65
- const tableSchema = this.schemaCache[`${tenantId}.${entity}`];
66
- if (!tableSchema || tableSchema.length === 0) {
67
- this.logger.warn(`Schema not found for ${entity} in tenant ${tenantId}. Skipping.`);
68
- retryFailCount++;
69
- continue;
70
- }
71
- const createData = {};
72
- const updateData = {};
73
- const columnNames = tableSchema.map((col) => col.column_name);
74
- if (!data) {
75
- this.logger.warn(`No data available for ${entity} with ID ${recordId}. Skipping.`);
76
- retryFailCount++;
77
- continue;
78
- }
79
- for (const column of tableSchema) {
80
- const columnName = column.column_name;
81
- if (!Object.prototype.hasOwnProperty.call(data, columnName)) {
82
- continue;
83
- }
84
- if (column.data_type === "numeric" && data[columnName] !== null) {
85
- const numericValue = parseFloat(data[columnName]);
86
- if (!isNaN(numericValue)) {
87
- createData[columnName] = numericValue;
88
- updateData[columnName] = numericValue;
89
- }
90
- else {
91
- createData[columnName] = null;
92
- updateData[columnName] = null;
93
- }
94
- }
95
- else if (column.data_type === "USER-DEFINED" &&
96
- column.udt_name.startsWith("enum_")) {
97
- const enumValues = await this.getEnumValues(column.udt_name);
98
- if (!createData._enumTypes)
99
- createData._enumTypes = {};
100
- if (!updateData._enumTypes)
101
- updateData._enumTypes = {};
102
- createData._enumTypes[columnName] = column.udt_name;
103
- updateData._enumTypes[columnName] = column.udt_name;
104
- if (data[columnName] === null || data[columnName] === "") {
105
- createData[columnName] = null;
106
- updateData[columnName] = null;
107
- }
108
- else if (typeof data[columnName] === "string") {
109
- const matchingValue = this.findMatchingEnumValue(data[columnName], enumValues);
110
- if (matchingValue) {
111
- createData[columnName] = matchingValue;
112
- updateData[columnName] = matchingValue;
113
- }
114
- else {
115
- createData[columnName] = null;
116
- updateData[columnName] = null;
117
- this.logger.warn(`No matching enum value found for ${columnName}="${data[columnName]}" in ${entity}. Using NULL.`);
118
- }
119
- }
120
- else {
121
- const enumValue = data[columnName];
122
- createData[columnName] = data[columnName];
123
- updateData[columnName] = data[columnName];
124
- }
125
- }
126
- else {
127
- createData[columnName] = data[columnName];
128
- updateData[columnName] = data[columnName];
129
- }
130
- }
131
- if (columnNames.includes(recordId)) {
132
- createData[recordId] = data[recordId];
133
- }
134
- const checkExistQuery = `
135
- SELECT 1 FROM "${tenantId}"."${entity}"
136
- WHERE "${recordId}" = $1
137
- LIMIT 1
138
- `;
139
- const existResult = await this.targetPool.query(checkExistQuery, [
140
- data[recordId],
141
- ]);
142
- const recordExists = existResult.rows.length > 0;
143
- if (recordExists) {
144
- const updateFields = Object.keys(updateData)
145
- .filter((key) => key !== recordId && key !== '_enumTypes')
146
- .map((key, index) => {
147
- if (updateData._enumTypes && updateData._enumTypes[key]) {
148
- return `"${key}" = $${index + 2}::${updateData._enumTypes[key]}`;
149
- }
150
- return `"${key}" = $${index + 2}`;
151
- });
152
- if (updateFields.length > 0) {
153
- const updateQuery = `
154
- UPDATE "${tenantId}"."${entity}"
155
- SET ${updateFields.join(", ")}
156
- WHERE "${recordId}" = $1
157
- `;
158
- const updateValues = [
159
- data[recordId],
160
- ...Object.keys(updateData)
161
- .filter((key) => key !== recordId && key !== '_enumTypes')
162
- .map((key) => updateData[key]),
163
- ];
164
- await this.targetPool.query(updateQuery, updateValues);
165
- }
166
- }
167
- else {
168
- const insertFields = Object.keys(createData)
169
- .filter(key => key !== '_enumTypes')
170
- .map((key) => `"${key}"`);
171
- const insertPlaceholders = Object.keys(createData)
172
- .filter(key => key !== '_enumTypes')
173
- .map((key, index) => {
174
- if (createData._enumTypes && createData._enumTypes[key]) {
175
- return `$${index + 1}::${createData._enumTypes[key]}`;
176
- }
177
- return `$${index + 1}`;
178
- });
179
- const insertQuery = `
180
- INSERT INTO "${tenantId}"."${entity}" (${insertFields.join(", ")})
181
- VALUES (${insertPlaceholders.join(", ")})
182
- `;
183
- const insertValues = Object.keys(createData)
184
- .filter(key => key !== '_enumTypes')
185
- .map((key) => createData[key]);
186
- await this.targetPool.query(insertQuery, insertValues);
187
- }
188
- this.logger.log(`Successfully migrated ${entity} with ID ${recordId}`);
189
- retrySuccessCount++;
190
- }
191
- catch (error) {
192
- this.logger.error(`Error retrying ${entity} with ID ${recordId}: ${error.message}`);
193
- this.errorHandler.logError(tenantId, entity, recordId, error, data);
194
- retryFailCount++;
195
- }
196
- }
197
- await tenantPrisma.$disconnect();
198
- }
199
- this.logger.log(`
200
- Retry Summary:
201
- - Total errors: ${totalErrors}
202
- - Successfully retried: ${retrySuccessCount}
203
- - Failed retries: ${retryFailCount}
204
- `);
205
- const remainingErrorsReport = this.errorHandler.generateErrorReport();
206
- this.logger.log("Remaining Errors Report:\n" + remainingErrorsReport);
207
- }
208
- catch (error) {
209
- this.logger.error(`Error in retry process: ${error.message}`, error.stack);
210
- }
211
- finally {
212
- await this.cleanup();
213
- }
214
- }
215
- async getTableSchema(tableName, schemaName) {
216
- try {
217
- const schemaQuery = `
218
- SELECT column_name, data_type, column_default, is_nullable, udt_name
219
- FROM information_schema.columns
220
- WHERE table_name = $1
221
- AND table_schema = $2
222
- ORDER BY ordinal_position
223
- `;
224
- const result = await this.targetPool.query(schemaQuery, [
225
- tableName,
226
- schemaName,
227
- ]);
228
- return result.rows;
229
- }
230
- catch (error) {
231
- this.logger.error(`Error getting schema for table ${tableName} in schema ${schemaName}: ${error.message}`);
232
- return [];
233
- }
234
- }
235
- async getEnumValues(enumTypeName) {
236
- try {
237
- const enumQuery = `
238
- SELECT e.enumlabel
239
- FROM pg_enum e
240
- JOIN pg_type t ON e.enumtypid = t.oid
241
- WHERE t.typname = $1
242
- ORDER BY e.enumsortorder
243
- `;
244
- const result = await this.targetPool.query(enumQuery, [enumTypeName]);
245
- return result.rows.map((row) => row.enumlabel);
246
- }
247
- catch (error) {
248
- this.logger.error(`Error getting enum values for ${enumTypeName}: ${error.message}`);
249
- return [];
250
- }
251
- }
252
- findMatchingEnumValue(value, enumValues) {
253
- if (enumValues.includes(value)) {
254
- return value;
255
- }
256
- const lowerValue = value.toLowerCase();
257
- for (const enumValue of enumValues) {
258
- if (enumValue.toLowerCase() === lowerValue) {
259
- return enumValue;
260
- }
261
- }
262
- const similarValues = enumValues.filter((v) => v.toLowerCase().includes(lowerValue) ||
263
- lowerValue.includes(v.toLowerCase()));
264
- if (similarValues.length === 1) {
265
- return similarValues[0];
266
- }
267
- else if (similarValues.length > 1) {
268
- return similarValues.reduce((prev, curr) => Math.abs(curr.length - value.length) <
269
- Math.abs(prev.length - value.length)
270
- ? curr
271
- : prev);
272
- }
273
- return null;
274
- }
275
- async cleanup() {
276
- this.logger.log("Cleaning up database connections");
277
- await this.targetPrisma.$disconnect();
278
- await this.targetPool.end();
279
- }
280
- }
281
- exports.FailedMigrationRetry = FailedMigrationRetry;
282
- if (require.main === module) {
283
- const run = async () => {
284
- try {
285
- const errorLogPath = process.argv[2];
286
- if (!errorLogPath) {
287
- console.error("Error: No error log file path provided. Please provide the path to the error log file.");
288
- process.exit(1);
289
- }
290
- const retryTool = new FailedMigrationRetry(errorLogPath);
291
- await retryTool.retryFailedMigrations();
292
- process.exit(0);
293
- }
294
- catch (error) {
295
- console.error("Error:", error.message);
296
- process.exit(1);
297
- }
298
- };
299
- run();
300
- }
301
- //# sourceMappingURL=retry-failed-migrations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry-failed-migrations.js","sourceRoot":"","sources":["../../src/scripts/retry-failed-migrations.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};