@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,278 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DataTransformer = void 0;
4
- const common_1 = require("@nestjs/common");
5
- const typecast_manager_1 = require("./typecast-manager");
6
- class DataTransformer {
7
- constructor(schemaUtils, sourceConnection, connections) {
8
- this.logger = new common_1.Logger("DataTransformer");
9
- this.schemaUtils = schemaUtils;
10
- this.sourceConnection = sourceConnection;
11
- this.connections = connections;
12
- this.typecastManager = new typecast_manager_1.TypecastManager();
13
- }
14
- async validateEnumValue(tableName, columnName, value, isNullable = true) {
15
- try {
16
- if (value === null) {
17
- return isNullable
18
- ? null
19
- : await this.getDefaultEnumValue(tableName, columnName);
20
- }
21
- const enumTypeName = await this.getEnumTypeName(tableName, columnName);
22
- const normalizedValue = value.toString().trim().toLowerCase();
23
- const query = `SELECT unnest(enum_range(NULL::${enumTypeName})) as enum_value`;
24
- const validValues = await this.connections.sourcePool.query(query);
25
- if (!validValues || !validValues.rows) {
26
- this.logger.warn(`No se pudieron obtener valores válidos para el enum ${enumTypeName}`);
27
- return await this.getDefaultEnumValue(enumTypeName);
28
- }
29
- const enumValues = validValues.rows.map((row) => row.enum_value.toLowerCase());
30
- if (enumValues.includes(normalizedValue)) {
31
- return value.toString().trim();
32
- }
33
- const partialMatch = enumValues.find((enumValue) => enumValue.includes(normalizedValue) ||
34
- normalizedValue.includes(enumValue));
35
- if (partialMatch) {
36
- this.logger.debug(`Valor enum corregido: ${value} -> ${partialMatch} para ${tableName}.${columnName}`);
37
- return partialMatch;
38
- }
39
- const defaultValue = await this.getDefaultEnumValue(enumTypeName);
40
- if (defaultValue) {
41
- this.logger.warn(`Usando valor por defecto ${defaultValue} para ${tableName}.${columnName}`);
42
- return defaultValue;
43
- }
44
- if (!isNullable) {
45
- throw new Error(`No se pudo encontrar un valor válido para el enum ${enumTypeName}`);
46
- }
47
- return null;
48
- }
49
- catch (error) {
50
- this.logger.error(`Error validating enum value for ${tableName}.${columnName}: ${error.message}`);
51
- if (!isNullable) {
52
- return await this.getDefaultEnumValue(tableName, columnName);
53
- }
54
- return null;
55
- }
56
- }
57
- async getEnumTypeName(tableName, columnName) {
58
- const result = await this.connections.sourcePool.query(`
59
- SELECT udt_name
60
- FROM information_schema.columns
61
- WHERE table_name = $1
62
- AND column_name = $2
63
- AND table_schema = 'public'
64
- `, [tableName.replace(/^public\./, ""), columnName]);
65
- if (result.rows.length === 0) {
66
- throw new Error(`No se encontró el tipo de enum para ${tableName}.${columnName}`);
67
- }
68
- return result.rows[0].udt_name;
69
- }
70
- transformToNumeric(value) {
71
- if (value === null || value === "") {
72
- return null;
73
- }
74
- const numericValue = parseFloat(value);
75
- if (isNaN(numericValue)) {
76
- return null;
77
- }
78
- return numericValue;
79
- }
80
- async getDefaultEnumValue(enumType, tenantId = "public") {
81
- try {
82
- const enumDefaults = {
83
- enum_users_role: "user",
84
- enum_account_type: "savings",
85
- enum_transaction_type: "payin",
86
- enum_transaction_status: "pending",
87
- };
88
- if (enumDefaults[enumType]) {
89
- return enumDefaults[enumType];
90
- }
91
- const query = `
92
- SELECT e.enumlabel
93
- FROM pg_type t
94
- JOIN pg_enum e ON t.oid = e.enumtypid
95
- JOIN pg_namespace n ON n.oid = t.typnamespace
96
- WHERE t.typname = $1 AND n.nspname = $2
97
- ORDER BY e.enumsortorder
98
- LIMIT 1
99
- `;
100
- const result = await this.schemaUtils.queryTargetDb(query, [
101
- enumType,
102
- tenantId,
103
- ]);
104
- if (result.rows.length > 0) {
105
- return result.rows[0].enumlabel;
106
- }
107
- return null;
108
- }
109
- catch (error) {
110
- this.logger.error(`Error getting default enum value for ${enumType}: ${error.message}`);
111
- return null;
112
- }
113
- }
114
- async prepareEnumValue(tenantId, enumType, value) {
115
- if (value === null || value === undefined || value === "") {
116
- return null;
117
- }
118
- const validatedValue = await this.validateEnumValue(tenantId, enumType, value);
119
- if (validatedValue === null) {
120
- const defaultValue = await this.getDefaultEnumValue(enumType, tenantId);
121
- if (defaultValue) {
122
- this.logger.warn(`Using first enum value '${defaultValue}' as default for invalid value '${value}' of type ${enumType}`);
123
- return {
124
- needsEnumCast: true,
125
- value: defaultValue,
126
- enumType,
127
- };
128
- }
129
- return null;
130
- }
131
- return {
132
- needsEnumCast: true,
133
- value: validatedValue,
134
- enumType,
135
- };
136
- }
137
- async transformColumnValue(value, columnName, targetColumn, tenantId) {
138
- if (value === null || value === undefined) {
139
- return targetColumn.is_nullable === "YES"
140
- ? null
141
- : this.getDefaultValue(targetColumn);
142
- }
143
- try {
144
- if (targetColumn.source_type) {
145
- return this.typecastManager.castValue(value, targetColumn.source_type, targetColumn.data_type);
146
- }
147
- switch (targetColumn.data_type.toLowerCase()) {
148
- case "integer":
149
- case "bigint":
150
- case "smallint":
151
- return typeof value === "string" ? parseInt(value, 10) : value;
152
- case "numeric":
153
- case "decimal":
154
- case "real":
155
- case "double precision":
156
- return typeof value === "string" ? parseFloat(value) : value;
157
- case "boolean":
158
- if (typeof value === "string") {
159
- return value.toLowerCase() === "true" || value === "1";
160
- }
161
- return Boolean(value);
162
- case "json":
163
- case "jsonb":
164
- if (typeof value === "string") {
165
- try {
166
- return JSON.parse(value);
167
- }
168
- catch (_a) {
169
- return value;
170
- }
171
- }
172
- return value;
173
- case "timestamp":
174
- case "timestamptz":
175
- case "timestamp with time zone":
176
- case "timestamp without time zone":
177
- if (value instanceof Date) {
178
- return value.toISOString();
179
- }
180
- if (typeof value === "string" || typeof value === "number") {
181
- return new Date(value).toISOString();
182
- }
183
- return value;
184
- case "date":
185
- if (value instanceof Date) {
186
- return value.toISOString().split("T")[0];
187
- }
188
- if (typeof value === "string" || typeof value === "number") {
189
- return new Date(value).toISOString().split("T")[0];
190
- }
191
- return value;
192
- case "text":
193
- case "character varying":
194
- case "varchar":
195
- case "char":
196
- return String(value);
197
- default:
198
- return value;
199
- }
200
- }
201
- catch (error) {
202
- this.logger.warn(`Error transformando valor para columna ${columnName}: ${error.message}`);
203
- return targetColumn.is_nullable === "YES"
204
- ? null
205
- : this.getDefaultValue(targetColumn);
206
- }
207
- }
208
- getDefaultValue(column) {
209
- switch (column.data_type.toLowerCase()) {
210
- case "integer":
211
- case "bigint":
212
- case "smallint":
213
- return 0;
214
- case "numeric":
215
- case "decimal":
216
- case "real":
217
- case "double precision":
218
- return 0.0;
219
- case "boolean":
220
- return false;
221
- case "text":
222
- case "character varying":
223
- case "varchar":
224
- case "char":
225
- return "";
226
- case "json":
227
- case "jsonb":
228
- return "{}";
229
- case "timestamp":
230
- case "timestamptz":
231
- case "timestamp with time zone":
232
- case "timestamp without time zone":
233
- return new Date().toISOString();
234
- case "date":
235
- return new Date().toISOString().split("T")[0];
236
- default:
237
- return null;
238
- }
239
- }
240
- extractEnumValueFromObject(value) {
241
- if (typeof value === "object" && value !== null) {
242
- const possibleProperties = ["value", "type", "name", "code"];
243
- for (const prop of possibleProperties) {
244
- if (value[prop] && typeof value[prop] === "string") {
245
- return value[prop].trim();
246
- }
247
- }
248
- }
249
- return null;
250
- }
251
- async handleEnumType(value, columnName, targetColumn, tenantId) {
252
- if (value === null && targetColumn.is_nullable === "YES") {
253
- return null;
254
- }
255
- const enumType = targetColumn.udt_name;
256
- const validatedValue = await this.validateEnumValue(tenantId, columnName, value, targetColumn.is_nullable === "YES");
257
- return validatedValue;
258
- }
259
- async transformRecord(record, sourceSchema, targetSchema, tenantId) {
260
- const transformedData = {};
261
- for (const [key, value] of Object.entries(record)) {
262
- let targetColumn = targetSchema.find((col) => col.column_name === key);
263
- if (!targetColumn) {
264
- targetColumn = targetSchema.find((col) => col.column_name.toLowerCase() === key.toLowerCase());
265
- }
266
- if (!targetColumn) {
267
- this.logger.warn(`Column ${key} not found in target schema, skipping`);
268
- continue;
269
- }
270
- const columnName = targetColumn.column_name;
271
- const transformedValue = await this.transformColumnValue(value, columnName, targetColumn, tenantId);
272
- transformedData[columnName] = transformedValue;
273
- }
274
- return transformedData;
275
- }
276
- }
277
- exports.DataTransformer = DataTransformer;
278
- //# sourceMappingURL=data-transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-transformer.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/data-transformer.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { PrismaClient } from "@prisma/client";
2
- import { DatabaseConnections } from "./types";
3
- export interface SourceDatabase {
4
- id: string;
5
- url: string;
6
- name: string;
7
- }
8
- export declare class DatabaseConnector {
9
- static createConnections(sourceDatabases?: SourceDatabase[]): DatabaseConnections;
10
- static createTenantPrismaClient(tenantId: string): PrismaClient;
11
- static cleanup(connections: DatabaseConnections): Promise<void>;
12
- }
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseConnector = void 0;
4
- const client_1 = require("@prisma/client");
5
- const pg = require("pg");
6
- const dotenv = require("dotenv");
7
- dotenv.config();
8
- class DatabaseConnector {
9
- static createConnections(sourceDatabases) {
10
- const sourceConnections = (sourceDatabases || []).map((source) => {
11
- const pool = new pg.Pool({
12
- connectionString: source.url,
13
- });
14
- const prisma = new client_1.PrismaClient({
15
- datasources: {
16
- db: {
17
- url: source.url,
18
- },
19
- },
20
- });
21
- const connection = {
22
- pool,
23
- prisma,
24
- sourceId: source.id,
25
- async query(sql, params) {
26
- return pool.query(sql, params);
27
- },
28
- };
29
- return connection;
30
- });
31
- const sourcePool = new pg.Pool({
32
- connectionString: process.env.SOURCE_DATABASE_URL,
33
- max: 20,
34
- idleTimeoutMillis: 30000,
35
- });
36
- const sourcePrisma = new client_1.PrismaClient({
37
- datasources: {
38
- db: {
39
- url: process.env.SOURCE_DATABASE_URL,
40
- },
41
- },
42
- });
43
- const targetPool = new pg.Pool({
44
- connectionString: process.env.DATABASE_URL,
45
- max: 20,
46
- idleTimeoutMillis: 30000,
47
- });
48
- const targetPrisma = new client_1.PrismaClient({
49
- datasources: {
50
- db: {
51
- url: process.env.DATABASE_URL,
52
- },
53
- },
54
- });
55
- return {
56
- sourceConnections,
57
- targetPrisma,
58
- targetPool,
59
- sourcePool,
60
- sourcePrisma,
61
- };
62
- }
63
- static createTenantPrismaClient(tenantId) {
64
- return new client_1.PrismaClient({
65
- datasources: {
66
- db: {
67
- url: `${process.env.DATABASE_URL}?schema=${tenantId}`,
68
- },
69
- },
70
- transactionOptions: {
71
- maxWait: 120000,
72
- timeout: 120000,
73
- },
74
- });
75
- }
76
- static async cleanup(connections) {
77
- if (connections.sourceConnections) {
78
- for (const sourceConn of connections.sourceConnections) {
79
- if (sourceConn.pool)
80
- await sourceConn.pool.end();
81
- if (sourceConn.prisma)
82
- await sourceConn.prisma.$disconnect();
83
- }
84
- }
85
- await connections.targetPrisma.$disconnect();
86
- await connections.targetPool.end();
87
- if (connections.sourcePrisma)
88
- await connections.sourcePrisma.$disconnect();
89
- if (connections.sourcePool)
90
- await connections.sourcePool.end();
91
- }
92
- }
93
- exports.DatabaseConnector = DatabaseConnector;
94
- //# sourceMappingURL=db-connector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db-connector.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/db-connector.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { Pool } from "pg";
2
- export declare class DependencyResolver {
3
- private readonly sourcePool;
4
- private readonly targetPool;
5
- private readonly logger;
6
- private readonly visitedTables;
7
- private readonly temporaryMark;
8
- private readonly tableOrder;
9
- private config;
10
- constructor(sourcePool: Pool, targetPool: Pool);
11
- setConfig(config: any): void;
12
- analyzeDependencies(): Promise<string[]>;
13
- private getPriorityOrder;
14
- private visit;
15
- private getAllTables;
16
- private getTableDependencies;
17
- validateDependencies(table: string, dependencies: string[]): Promise<boolean>;
18
- }
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DependencyResolver = void 0;
4
- const common_1 = require("@nestjs/common");
5
- class DependencyResolver {
6
- constructor(sourcePool, targetPool) {
7
- this.sourcePool = sourcePool;
8
- this.targetPool = targetPool;
9
- this.logger = new common_1.Logger("DependencyResolver");
10
- this.visitedTables = new Set();
11
- this.temporaryMark = new Set();
12
- this.tableOrder = [];
13
- }
14
- setConfig(config) {
15
- this.config = config;
16
- }
17
- async analyzeDependencies() {
18
- try {
19
- this.logger.log("Iniciando análisis de dependencias...");
20
- const tables = await this.getAllTables();
21
- this.visitedTables.clear();
22
- this.temporaryMark.clear();
23
- this.tableOrder.length = 0;
24
- const priorityOrder = this.getPriorityOrder(tables);
25
- for (const priorityGroup of priorityOrder) {
26
- for (const table of priorityGroup) {
27
- if (!this.visitedTables.has(table)) {
28
- await this.visit(table);
29
- }
30
- }
31
- }
32
- this.logger.log(`Orden de migración determinado: ${this.tableOrder.join(" -> ")}`);
33
- return this.tableOrder;
34
- }
35
- catch (error) {
36
- this.logger.error(`Error analizando dependencias: ${error.message}`);
37
- throw error;
38
- }
39
- }
40
- getPriorityOrder(tables) {
41
- var _a, _b, _c, _d, _e, _f;
42
- const priorities = {
43
- high: new Set(((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.migrationPriorities) === null || _b === void 0 ? void 0 : _b.high) || []),
44
- medium: new Set(((_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.migrationPriorities) === null || _d === void 0 ? void 0 : _d.medium) || []),
45
- low: new Set(((_f = (_e = this.config) === null || _e === void 0 ? void 0 : _e.migrationPriorities) === null || _f === void 0 ? void 0 : _f.low) || []),
46
- };
47
- const highPriority = tables.filter((t) => priorities.high.has(t));
48
- const mediumPriority = tables.filter((t) => priorities.medium.has(t));
49
- const lowPriority = tables.filter((t) => priorities.low.has(t));
50
- const noPriority = tables.filter((t) => !priorities.high.has(t) &&
51
- !priorities.medium.has(t) &&
52
- !priorities.low.has(t));
53
- return [highPriority, mediumPriority, noPriority, lowPriority];
54
- }
55
- async visit(table, path = []) {
56
- if (this.temporaryMark.has(table)) {
57
- const cycle = [...path, table].join(" -> ");
58
- this.logger.warn(`Detectado ciclo de dependencias: ${cycle}`);
59
- return;
60
- }
61
- if (this.visitedTables.has(table)) {
62
- return;
63
- }
64
- this.temporaryMark.add(table);
65
- path.push(table);
66
- const dependencies = await this.getTableDependencies(table);
67
- for (const dep of dependencies) {
68
- if (!this.visitedTables.has(dep)) {
69
- await this.visit(dep, [...path]);
70
- }
71
- }
72
- this.temporaryMark.delete(table);
73
- this.visitedTables.add(table);
74
- this.tableOrder.push(table);
75
- }
76
- async getAllTables() {
77
- const query = `
78
- SELECT table_name
79
- FROM information_schema.tables
80
- WHERE table_schema = 'public'
81
- AND table_type = 'BASE TABLE'
82
- `;
83
- const result = await this.sourcePool.query(query);
84
- return result.rows.map((row) => row.table_name);
85
- }
86
- async getTableDependencies(table) {
87
- var _a, _b, _c;
88
- const dependencies = new Set();
89
- const configDeps = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.tables) === null || _b === void 0 ? void 0 : _b[table]) === null || _c === void 0 ? void 0 : _c.dependencies) || [];
90
- configDeps.forEach((dep) => dependencies.add(dep));
91
- const query = `
92
- SELECT
93
- ccu.table_name AS foreign_table
94
- FROM
95
- information_schema.table_constraints tc
96
- JOIN information_schema.constraint_column_usage ccu
97
- ON ccu.constraint_name = tc.constraint_name
98
- WHERE
99
- tc.constraint_type = 'FOREIGN KEY'
100
- AND tc.table_name = $1
101
- AND tc.table_schema = 'public'
102
- `;
103
- try {
104
- const result = await this.sourcePool.query(query, [table]);
105
- result.rows.forEach((row) => dependencies.add(row.foreign_table));
106
- }
107
- catch (error) {
108
- this.logger.warn(`Error obteniendo dependencias para ${table}: ${error.message}`);
109
- }
110
- return Array.from(dependencies);
111
- }
112
- async validateDependencies(table, dependencies) {
113
- for (const dep of dependencies) {
114
- const query = `
115
- SELECT EXISTS (
116
- SELECT 1
117
- FROM information_schema.tables
118
- WHERE table_schema = 'public'
119
- AND table_name = $1
120
- )
121
- `;
122
- const result = await this.sourcePool.query(query, [dep]);
123
- if (!result.rows[0].exists) {
124
- this.logger.warn(`Dependencia ${dep} no encontrada para tabla ${table}`);
125
- return false;
126
- }
127
- }
128
- return true;
129
- }
130
- }
131
- exports.DependencyResolver = DependencyResolver;
132
- //# sourceMappingURL=dependency-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependency-resolver.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/dependency-resolver.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { Pool } from "pg";
2
- import { EntityType } from "./types";
3
- export declare class EntityDiscovery {
4
- private readonly targetPool;
5
- private readonly logger;
6
- constructor(targetPool: Pool);
7
- discoverEntityTypes(schemaName: string, tables: string[]): Promise<EntityType[]>;
8
- private getPrimaryKey;
9
- private getForeignKeys;
10
- private findJoinTables;
11
- }