@javalabs/prisma-client 1.0.25 → 1.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/prisma/schema.prisma +0 -4
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -34
- package/dist/index.js.map +0 -1
- package/dist/prisma-factory.service.d.ts +0 -9
- package/dist/prisma-factory.service.js +0 -47
- package/dist/prisma-factory.service.js.map +0 -1
- package/dist/prisma.module.d.ts +0 -2
- package/dist/prisma.module.js +0 -23
- package/dist/prisma.module.js.map +0 -1
- package/dist/prisma.service.d.ts +0 -6
- package/dist/prisma.service.js +0 -27
- package/dist/prisma.service.js.map +0 -1
- package/dist/scripts/add-uuid-to-table.d.ts +0 -8
- package/dist/scripts/add-uuid-to-table.js +0 -98
- package/dist/scripts/add-uuid-to-table.js.map +0 -1
- package/dist/scripts/create-tenant-schemas.d.ts +0 -1
- package/dist/scripts/create-tenant-schemas.js +0 -117
- package/dist/scripts/create-tenant-schemas.js.map +0 -1
- package/dist/scripts/data-migration/batch-migrator.d.ts +0 -20
- package/dist/scripts/data-migration/batch-migrator.js +0 -134
- package/dist/scripts/data-migration/batch-migrator.js.map +0 -1
- package/dist/scripts/data-migration/data-transformer.d.ts +0 -26
- package/dist/scripts/data-migration/data-transformer.js +0 -278
- package/dist/scripts/data-migration/data-transformer.js.map +0 -1
- package/dist/scripts/data-migration/db-connector.d.ts +0 -12
- package/dist/scripts/data-migration/db-connector.js +0 -94
- package/dist/scripts/data-migration/db-connector.js.map +0 -1
- package/dist/scripts/data-migration/dependency-resolver.d.ts +0 -18
- package/dist/scripts/data-migration/dependency-resolver.js +0 -132
- package/dist/scripts/data-migration/dependency-resolver.js.map +0 -1
- package/dist/scripts/data-migration/entity-discovery.d.ts +0 -11
- package/dist/scripts/data-migration/entity-discovery.js +0 -152
- package/dist/scripts/data-migration/entity-discovery.js.map +0 -1
- package/dist/scripts/data-migration/foreign-key-manager.d.ts +0 -18
- package/dist/scripts/data-migration/foreign-key-manager.js +0 -160
- package/dist/scripts/data-migration/foreign-key-manager.js.map +0 -1
- package/dist/scripts/data-migration/migration-tool.d.ts +0 -48
- package/dist/scripts/data-migration/migration-tool.js +0 -290
- package/dist/scripts/data-migration/migration-tool.js.map +0 -1
- package/dist/scripts/data-migration/schema-utils.d.ts +0 -18
- package/dist/scripts/data-migration/schema-utils.js +0 -207
- package/dist/scripts/data-migration/schema-utils.js.map +0 -1
- package/dist/scripts/data-migration/tenant-migrator.d.ts +0 -15
- package/dist/scripts/data-migration/tenant-migrator.js +0 -117
- package/dist/scripts/data-migration/tenant-migrator.js.map +0 -1
- package/dist/scripts/data-migration/typecast-manager.d.ts +0 -9
- package/dist/scripts/data-migration/typecast-manager.js +0 -179
- package/dist/scripts/data-migration/typecast-manager.js.map +0 -1
- package/dist/scripts/data-migration/types.d.ts +0 -100
- package/dist/scripts/data-migration/types.js +0 -3
- package/dist/scripts/data-migration/types.js.map +0 -1
- package/dist/scripts/database-initializer.d.ts +0 -5
- package/dist/scripts/database-initializer.js +0 -45
- package/dist/scripts/database-initializer.js.map +0 -1
- package/dist/scripts/drop-database.d.ts +0 -10
- package/dist/scripts/drop-database.js +0 -81
- package/dist/scripts/drop-database.js.map +0 -1
- package/dist/scripts/encrypt-user-passwords.d.ts +0 -1
- package/dist/scripts/encrypt-user-passwords.js +0 -33
- package/dist/scripts/encrypt-user-passwords.js.map +0 -1
- package/dist/scripts/error-handler.d.ts +0 -12
- package/dist/scripts/error-handler.js +0 -82
- package/dist/scripts/error-handler.js.map +0 -1
- package/dist/scripts/fix-data-types.d.ts +0 -10
- package/dist/scripts/fix-data-types.js +0 -185
- package/dist/scripts/fix-data-types.js.map +0 -1
- package/dist/scripts/fix-enum-values.d.ts +0 -17
- package/dist/scripts/fix-enum-values.js +0 -234
- package/dist/scripts/fix-enum-values.js.map +0 -1
- package/dist/scripts/fix-schema-discrepancies.d.ts +0 -21
- package/dist/scripts/fix-schema-discrepancies.js +0 -240
- package/dist/scripts/fix-schema-discrepancies.js.map +0 -1
- package/dist/scripts/fix-table-indexes.d.ts +0 -26
- package/dist/scripts/fix-table-indexes.js +0 -460
- package/dist/scripts/fix-table-indexes.js.map +0 -1
- package/dist/scripts/migrate-schema-structure.d.ts +0 -1
- package/dist/scripts/migrate-schema-structure.js +0 -76
- package/dist/scripts/migrate-schema-structure.js.map +0 -1
- package/dist/scripts/migrate-uuid.d.ts +0 -2
- package/dist/scripts/migrate-uuid.js +0 -57
- package/dist/scripts/migrate-uuid.js.map +0 -1
- package/dist/scripts/post-migration-validator.d.ts +0 -34
- package/dist/scripts/post-migration-validator.js +0 -363
- package/dist/scripts/post-migration-validator.js.map +0 -1
- package/dist/scripts/pre-migration-validator.d.ts +0 -25
- package/dist/scripts/pre-migration-validator.js +0 -491
- package/dist/scripts/pre-migration-validator.js.map +0 -1
- package/dist/scripts/reset-database.d.ts +0 -17
- package/dist/scripts/reset-database.js +0 -202
- package/dist/scripts/reset-database.js.map +0 -1
- package/dist/scripts/retry-failed-migrations.d.ts +0 -14
- package/dist/scripts/retry-failed-migrations.js +0 -301
- package/dist/scripts/retry-failed-migrations.js.map +0 -1
- package/dist/scripts/run-migration.d.ts +0 -1
- package/dist/scripts/run-migration.js +0 -512
- package/dist/scripts/run-migration.js.map +0 -1
- package/dist/scripts/schema-sync.d.ts +0 -1
- package/dist/scripts/schema-sync.js +0 -85
- package/dist/scripts/schema-sync.js.map +0 -1
- package/dist/scripts/sequence-sync-cli.d.ts +0 -2
- package/dist/scripts/sequence-sync-cli.js +0 -287
- package/dist/scripts/sequence-sync-cli.js.map +0 -1
- package/dist/scripts/sequence-synchronizer.d.ts +0 -8
- package/dist/scripts/sequence-synchronizer.js +0 -88
- package/dist/scripts/sequence-synchronizer.js.map +0 -1
- package/dist/scripts/sync-enum-types.d.ts +0 -13
- package/dist/scripts/sync-enum-types.js +0 -139
- package/dist/scripts/sync-enum-types.js.map +0 -1
- package/dist/scripts/sync-enum-values.d.ts +0 -20
- package/dist/scripts/sync-enum-values.js +0 -336
- package/dist/scripts/sync-enum-values.js.map +0 -1
- package/dist/scripts/truncate-database.d.ts +0 -10
- package/dist/scripts/truncate-database.js +0 -100
- package/dist/scripts/truncate-database.js.map +0 -1
- package/dist/scripts/verify-migration-setup.d.ts +0 -11
- package/dist/scripts/verify-migration-setup.js +0 -120
- package/dist/scripts/verify-migration-setup.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/prisma/migrations/add_athena_match_fields.sql +0 -13
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch-migrator.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/batch-migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { ColumnSchema, EnumCastValue } from "./types";
|
|
2
|
-
import { SchemaUtils } from "./schema-utils";
|
|
3
|
-
import { DatabaseConnections } from "./types";
|
|
4
|
-
export declare class DataTransformer {
|
|
5
|
-
private readonly logger;
|
|
6
|
-
private readonly schemaUtils;
|
|
7
|
-
private readonly sourceConnection;
|
|
8
|
-
private connections;
|
|
9
|
-
private migrationConfig;
|
|
10
|
-
private options;
|
|
11
|
-
private foreignKeyManager;
|
|
12
|
-
private readonly typecastManager;
|
|
13
|
-
constructor(schemaUtils: SchemaUtils, sourceConnection: any, connections: DatabaseConnections);
|
|
14
|
-
validateEnumValue(tableName: string, columnName: string, value: string | null, isNullable?: boolean): Promise<string | null>;
|
|
15
|
-
private getEnumTypeName;
|
|
16
|
-
transformToNumeric(value: any): number | null;
|
|
17
|
-
private getDefaultEnumValue;
|
|
18
|
-
prepareEnumValue(tenantId: string, enumType: string, value: string): Promise<EnumCastValue | null>;
|
|
19
|
-
transformColumnValue(value: any, columnName: string, targetColumn: ColumnSchema & {
|
|
20
|
-
source_type?: string;
|
|
21
|
-
}, tenantId: string): Promise<any>;
|
|
22
|
-
private getDefaultValue;
|
|
23
|
-
private extractEnumValueFromObject;
|
|
24
|
-
private handleEnumType;
|
|
25
|
-
transformRecord(record: any, sourceSchema: ColumnSchema[], targetSchema: ColumnSchema[], tenantId: string): Promise<any>;
|
|
26
|
-
}
|
|
@@ -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
|
-
}
|