@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.
- package/.github/CODEOWNERS +1 -1
- package/README.md +269 -269
- package/migration-config.json +63 -63
- package/migration-config.json.bk +95 -95
- package/migrations/add_reserved_amount.sql +7 -7
- package/package.json +44 -44
- package/prisma/migrations/add_uuid_to_transactions.sql +13 -13
- package/prisma/schema.prisma +609 -607
- package/src/index.ts +23 -23
- package/src/prisma-factory.service.ts +40 -40
- package/src/prisma.module.ts +9 -9
- package/src/prisma.service.ts +16 -16
- package/src/scripts/add-uuid-to-table.ts +138 -138
- package/src/scripts/create-tenant-schemas.ts +145 -145
- package/src/scripts/data-migration/batch-migrator.ts +248 -248
- package/src/scripts/data-migration/data-transformer.ts +426 -426
- package/src/scripts/data-migration/db-connector.ts +120 -120
- package/src/scripts/data-migration/dependency-resolver.ts +174 -174
- package/src/scripts/data-migration/entity-discovery.ts +196 -196
- package/src/scripts/data-migration/foreign-key-manager.ts +277 -277
- package/src/scripts/data-migration/migration-config.json +63 -63
- package/src/scripts/data-migration/migration-tool.ts +509 -509
- package/src/scripts/data-migration/schema-utils.ts +248 -248
- package/src/scripts/data-migration/tenant-migrator.ts +201 -201
- package/src/scripts/data-migration/typecast-manager.ts +193 -193
- package/src/scripts/data-migration/types.ts +113 -113
- package/src/scripts/database-initializer.ts +49 -49
- package/src/scripts/drop-database.ts +104 -104
- package/src/scripts/dump-source-db.sh +61 -61
- package/src/scripts/encrypt-user-passwords.ts +36 -36
- package/src/scripts/error-handler.ts +117 -117
- package/src/scripts/fix-data-types.ts +241 -241
- package/src/scripts/fix-enum-values.ts +357 -357
- package/src/scripts/fix-schema-discrepancies.ts +317 -317
- package/src/scripts/fix-table-indexes.ts +601 -601
- package/src/scripts/migrate-schema-structure.ts +90 -90
- package/src/scripts/migrate-uuid.ts +76 -76
- package/src/scripts/post-migration-validator.ts +526 -526
- package/src/scripts/pre-migration-validator.ts +610 -610
- package/src/scripts/reset-database.ts +263 -263
- package/src/scripts/retry-failed-migrations.ts +416 -416
- package/src/scripts/run-migration.ts +707 -707
- package/src/scripts/schema-sync.ts +128 -128
- package/src/scripts/sequence-sync-cli.ts +416 -416
- package/src/scripts/sequence-synchronizer.ts +127 -127
- package/src/scripts/sync-enum-types.ts +170 -170
- package/src/scripts/sync-enum-values.ts +563 -563
- package/src/scripts/truncate-database.ts +123 -123
- package/src/scripts/verify-migration-setup.ts +135 -135
- package/tsconfig.json +17 -17
- 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 -18
- package/prisma/migrations/add_bank_receipt_number.sql +0 -9
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DataMigrationTool = void 0;
|
|
4
|
-
const common_1 = require("@nestjs/common");
|
|
5
|
-
const fs = require("fs");
|
|
6
|
-
const path = require("path");
|
|
7
|
-
const schema_utils_1 = require("./schema-utils");
|
|
8
|
-
const data_transformer_1 = require("./data-transformer");
|
|
9
|
-
const batch_migrator_1 = require("./batch-migrator");
|
|
10
|
-
const foreign_key_manager_1 = require("./foreign-key-manager");
|
|
11
|
-
const dependency_resolver_1 = require("./dependency-resolver");
|
|
12
|
-
class DataMigrationTool {
|
|
13
|
-
constructor(connections, migrationConfig, options = {}) {
|
|
14
|
-
this.connections = connections;
|
|
15
|
-
this.migrationConfig = migrationConfig;
|
|
16
|
-
this.options = options;
|
|
17
|
-
this.logger = new common_1.Logger("DataMigrationTool");
|
|
18
|
-
this.schemaUtils = new schema_utils_1.SchemaUtils(connections);
|
|
19
|
-
this.dataTransformer = new data_transformer_1.DataTransformer(this.schemaUtils, connections.sourcePool, connections);
|
|
20
|
-
this.foreignKeyManager = new foreign_key_manager_1.ForeignKeyManager(connections);
|
|
21
|
-
this.batchMigrator = new batch_migrator_1.BatchMigrator(this.schemaUtils, this.dataTransformer, connections, this.options);
|
|
22
|
-
this.dependencyResolver = new dependency_resolver_1.DependencyResolver(connections.sourcePool, connections.targetPool);
|
|
23
|
-
}
|
|
24
|
-
loadConfig(configPath = "migration-config.json") {
|
|
25
|
-
const fullPath = path.resolve(process.cwd(), configPath);
|
|
26
|
-
if (!fs.existsSync(fullPath)) {
|
|
27
|
-
throw new Error(`Migration config file not found at: ${fullPath}`);
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
const fileContent = fs.readFileSync(fullPath, "utf-8");
|
|
31
|
-
this.migrationConfig = JSON.parse(fileContent);
|
|
32
|
-
this.logger.log(`Loaded migration config from: ${fullPath}`);
|
|
33
|
-
this.dependencyResolver.setConfig(this.migrationConfig);
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
throw new Error(`Error reading or parsing migration config file: ${error.message}`);
|
|
37
|
-
}
|
|
38
|
-
if (!this.migrationConfig.commonSchema ||
|
|
39
|
-
!this.migrationConfig.tables ||
|
|
40
|
-
!this.migrationConfig.tenantInfo) {
|
|
41
|
-
throw new Error("Invalid migration config structure.");
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async migrate() {
|
|
45
|
-
try {
|
|
46
|
-
this.logger.log("Starting data migration process");
|
|
47
|
-
this.loadConfig(this.options.configPath);
|
|
48
|
-
if (this.options.forceSingleTenant || this.options.publicOnly) {
|
|
49
|
-
this.logger.log("Public-only migration requested. Migrating only 'public' type tables...");
|
|
50
|
-
await this.migratePublicTablesOnly();
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
this.logger.log("Multi-tenant migration requested based on config...");
|
|
54
|
-
await this.migrateMultiTenantWithConfig();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
this.logger.error(`Migration failed: ${error.message}`);
|
|
59
|
-
console.error(error);
|
|
60
|
-
throw error;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
async migratePublicTablesOnly() {
|
|
64
|
-
const { commonSchema, tables: tablesConfig } = this.migrationConfig;
|
|
65
|
-
const allTablesInOrder = await this.dependencyResolver.analyzeDependencies();
|
|
66
|
-
const publicTablesToMigrate = allTablesInOrder.filter((t) => { var _a; return ((_a = tablesConfig[t]) === null || _a === void 0 ? void 0 : _a.type) === "public"; });
|
|
67
|
-
this.logger.log(`Migrating public tables to '${commonSchema}' schema: ${publicTablesToMigrate.join(", ")}`);
|
|
68
|
-
if (publicTablesToMigrate.length === 0) {
|
|
69
|
-
this.logger.warn("No tables configured as 'public'. Public-only migration will not process any tables.");
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
await this.connections.targetPool.query(`SET session_replication_role = 'replica';`);
|
|
73
|
-
for (const tableName of publicTablesToMigrate) {
|
|
74
|
-
const config = tablesConfig[tableName];
|
|
75
|
-
if (!config) {
|
|
76
|
-
this.logger.warn(`Config not found for public table ${tableName}, skipping.`);
|
|
77
|
-
continue;
|
|
78
|
-
}
|
|
79
|
-
try {
|
|
80
|
-
await this.batchMigrator.migrateEntityDataInBatches(this.migrationConfig.commonSchema, commonSchema, {
|
|
81
|
-
type: "public",
|
|
82
|
-
idField: config.idField,
|
|
83
|
-
sourceTable: tableName,
|
|
84
|
-
targetTable: tableName,
|
|
85
|
-
}, null);
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
this.logger.error(`Error migrating public table ${tableName}: ${error.message}`);
|
|
89
|
-
throw error;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
await this.connections.targetPool.query(`SET session_replication_role = 'origin';`);
|
|
93
|
-
this.logger.log("Finished migrating public tables.");
|
|
94
|
-
}
|
|
95
|
-
async validateSourceData() {
|
|
96
|
-
this.logger.log("Validating source data...");
|
|
97
|
-
try {
|
|
98
|
-
const { sourceTable, providerIdColumn } = this.migrationConfig.tenantInfo;
|
|
99
|
-
const tablesConfig = this.migrationConfig.tables;
|
|
100
|
-
let transactionTableKey = "transactions";
|
|
101
|
-
let providerTableKey = "providers";
|
|
102
|
-
let transactionProviderFk = providerIdColumn;
|
|
103
|
-
for (const key in tablesConfig) {
|
|
104
|
-
if (tablesConfig[key].type === "filteredPublic" &&
|
|
105
|
-
tablesConfig[key].filterColumn === providerIdColumn &&
|
|
106
|
-
!tablesConfig[key].via) {
|
|
107
|
-
transactionTableKey = key;
|
|
108
|
-
transactionProviderFk = tablesConfig[key].filterColumn;
|
|
109
|
-
}
|
|
110
|
-
if (tablesConfig[key].type === "public" &&
|
|
111
|
-
tablesConfig[key].idField === providerIdColumn) {
|
|
112
|
-
providerTableKey = key;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
this.logger.debug(`Validation check: Using ${transactionTableKey}.${transactionProviderFk} referencing ${providerTableKey}.${providerIdColumn}`);
|
|
116
|
-
const query = `
|
|
117
|
-
SELECT t."${tablesConfig[transactionTableKey].idField}" AS transaction_id, t."${transactionProviderFk}"
|
|
118
|
-
FROM "${transactionTableKey}" t
|
|
119
|
-
LEFT JOIN "${providerTableKey}" p ON t."${transactionProviderFk}" = p."${providerIdColumn}"
|
|
120
|
-
WHERE t."${transactionProviderFk}" IS NOT NULL AND p."${providerIdColumn}" IS NULL;
|
|
121
|
-
`;
|
|
122
|
-
const invalidTransactions = (await this.connections.sourcePrisma.$queryRawUnsafe(query));
|
|
123
|
-
if (invalidTransactions.length > 0) {
|
|
124
|
-
this.logger.error(`${invalidTransactions.length} records found in ${transactionTableKey} with invalid foreign key reference to ${providerTableKey}.${providerIdColumn}`);
|
|
125
|
-
console.error("Invalid records (limit 10):", invalidTransactions.slice(0, 10));
|
|
126
|
-
throw new Error("Source data validation failed: Invalid foreign key references found. Please check the configuration or fix the source data.");
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
this.logger.log(`Source data validation passed: All ${transactionTableKey}.${transactionProviderFk} references are valid.`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
catch (error) {
|
|
133
|
-
this.logger.error("Error during source data validation:");
|
|
134
|
-
console.error(error);
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
async migrateMultiTenantWithConfig() {
|
|
139
|
-
var _a, _b;
|
|
140
|
-
await this.validateSourceData();
|
|
141
|
-
const { commonSchema, tables: tablesConfig, tenantInfo, } = this.migrationConfig;
|
|
142
|
-
const allTablesInOrder = await this.dependencyResolver.analyzeDependencies();
|
|
143
|
-
this.logger.log(`Orden de migración: ${allTablesInOrder.join(" -> ")}`);
|
|
144
|
-
for (const tableName of allTablesInOrder) {
|
|
145
|
-
const config = tablesConfig[tableName];
|
|
146
|
-
if (config === null || config === void 0 ? void 0 : config.dependencies) {
|
|
147
|
-
const valid = await this.dependencyResolver.validateDependencies(tableName, config.dependencies);
|
|
148
|
-
if (!valid) {
|
|
149
|
-
this.logger.warn(`Advertencia: Algunas dependencias para ${tableName} no están disponibles`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
this.logger.log(`Migrando tablas públicas al esquema '${commonSchema}'...`);
|
|
154
|
-
await this.connections.targetPool.query(`SET session_replication_role = 'replica';`);
|
|
155
|
-
const publicTables = allTablesInOrder.filter((t) => { var _a; return ((_a = tablesConfig[t]) === null || _a === void 0 ? void 0 : _a.type) === "public"; });
|
|
156
|
-
for (const tableName of publicTables) {
|
|
157
|
-
const config = tablesConfig[tableName];
|
|
158
|
-
if (!config) {
|
|
159
|
-
this.logger.warn(`Saltando migración de tabla ${tableName}: No encontrada en configuración`);
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
try {
|
|
163
|
-
await this.batchMigrator.migrateEntityDataInBatches(this.migrationConfig.commonSchema, commonSchema, {
|
|
164
|
-
type: "public",
|
|
165
|
-
idField: config.idField,
|
|
166
|
-
sourceTable: tableName,
|
|
167
|
-
targetTable: tableName,
|
|
168
|
-
}, null);
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
this.logger.error(`Error migrando tabla pública ${tableName}: ${error.message}`);
|
|
172
|
-
throw error;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
await this.connections.targetPool.query(`SET session_replication_role = 'origin';`);
|
|
176
|
-
this.logger.log("Finished migrating public tables.");
|
|
177
|
-
this.logger.log(`Fetching tenant info from source table '${tenantInfo.sourceTable}'...`);
|
|
178
|
-
const tenants = await this.connections.sourcePrisma[tenantInfo.sourceTable].findMany({
|
|
179
|
-
select: {
|
|
180
|
-
[tenantInfo.tenantIdColumn]: true,
|
|
181
|
-
[tenantInfo.providerIdColumn]: true,
|
|
182
|
-
},
|
|
183
|
-
});
|
|
184
|
-
this.logger.log(`Found ${tenants.length} potential tenants.`);
|
|
185
|
-
const validTenants = new Map();
|
|
186
|
-
this.logger.log("Ensuring tenant schemas exist (if strategy requires them)...");
|
|
187
|
-
let requiresTenantSchemas = Object.values(tablesConfig).some((t) => t.type === "tenant");
|
|
188
|
-
if (requiresTenantSchemas) {
|
|
189
|
-
this.logger.log("Tenant-specific schemas are required by config.");
|
|
190
|
-
for (const tenant of tenants) {
|
|
191
|
-
const tenantId = tenant[tenantInfo.tenantIdColumn];
|
|
192
|
-
const providerId = (_a = tenant[tenantInfo.providerIdColumn]) !== null && _a !== void 0 ? _a : null;
|
|
193
|
-
if (tenantId &&
|
|
194
|
-
typeof tenantId === "string" &&
|
|
195
|
-
tenantId !== commonSchema) {
|
|
196
|
-
await this.schemaUtils.createSchema(tenantId);
|
|
197
|
-
validTenants.set(tenantId, providerId);
|
|
198
|
-
this.logger.log(`Ensured schema exists for tenant: ${tenantId}`);
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
this.logger.warn(`Skipping invalid/public tenant ID: ${tenantId}`);
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
this.logger.log('No tables configured with type "tenant". Tenant schema creation skipped.');
|
|
207
|
-
for (const tenant of tenants) {
|
|
208
|
-
const tenantId = tenant[tenantInfo.tenantIdColumn];
|
|
209
|
-
const providerId = (_b = tenant[tenantInfo.providerIdColumn]) !== null && _b !== void 0 ? _b : null;
|
|
210
|
-
if (tenantId && typeof tenantId === "string") {
|
|
211
|
-
validTenants.set(tenantId, providerId);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
this.logger.log(`Prepared ${validTenants.size} valid tenants for migration.`);
|
|
216
|
-
const tablesToMigratePerTenant = allTablesInOrder.filter((t) => {
|
|
217
|
-
var _a, _b;
|
|
218
|
-
return ((_a = tablesConfig[t]) === null || _a === void 0 ? void 0 : _a.type) === "filteredPublic" ||
|
|
219
|
-
((_b = tablesConfig[t]) === null || _b === void 0 ? void 0 : _b.type) === "tenant";
|
|
220
|
-
});
|
|
221
|
-
this.logger.log(`Migrating filtered/tenant tables: ${tablesToMigratePerTenant.join(", ")}`);
|
|
222
|
-
for (const [tenantId, providerId] of validTenants.entries()) {
|
|
223
|
-
this.logger.log(`Starting migration pass related to tenant: ${tenantId} (Filtering by Provider ID: ${providerId !== null && providerId !== void 0 ? providerId : "N/A"})`);
|
|
224
|
-
await this.connections.targetPool.query(`SET session_replication_role = 'replica';`);
|
|
225
|
-
for (const tableName of tablesToMigratePerTenant) {
|
|
226
|
-
const config = tablesConfig[tableName];
|
|
227
|
-
if (!config) {
|
|
228
|
-
this.logger.warn(`Skipping migration for table ${tableName} for tenant ${tenantId}: Not found in config.`);
|
|
229
|
-
continue;
|
|
230
|
-
}
|
|
231
|
-
const targetSchemaForTable = config.type === "tenant" ? tenantId : commonSchema;
|
|
232
|
-
try {
|
|
233
|
-
const entity = {
|
|
234
|
-
name: tableName,
|
|
235
|
-
idField: config.idField,
|
|
236
|
-
filterColumn: config.filterColumn,
|
|
237
|
-
filterVia: config.via,
|
|
238
|
-
};
|
|
239
|
-
const tableConfig = {
|
|
240
|
-
type: entity.filterVia ? "filteredPublic" : "tenant",
|
|
241
|
-
idField: entity.idField,
|
|
242
|
-
filterColumn: entity.filterColumn,
|
|
243
|
-
via: entity.filterVia,
|
|
244
|
-
sourceTable: entity.name,
|
|
245
|
-
targetTable: entity.name,
|
|
246
|
-
};
|
|
247
|
-
await this.batchMigrator.migrateEntityDataInBatches(this.migrationConfig.commonSchema, targetSchemaForTable, tableConfig, providerId === null || providerId === void 0 ? void 0 : providerId.toString());
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
this.logger.error(`Error migrating table ${tableName} into schema ${targetSchemaForTable} (related to tenant ${tenantId}): ${error.message}`);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
await this.connections.targetPool.query(`SET session_replication_role = 'origin';`);
|
|
254
|
-
this.logger.log(`Finished migration pass related to tenant: ${tenantId}`);
|
|
255
|
-
}
|
|
256
|
-
this.logger.log("Data migration process completed.");
|
|
257
|
-
}
|
|
258
|
-
async verifyMigration(tenantIds) {
|
|
259
|
-
this.logger.log("Verifying migrated data...");
|
|
260
|
-
try {
|
|
261
|
-
const publicResult = await this.connections.targetPool.query(`SELECT tablename, n_live_tup FROM pg_stat_user_tables WHERE schemaname = $1`, [this.migrationConfig.commonSchema]);
|
|
262
|
-
this.logger.log(`Verification for schema '${this.migrationConfig.commonSchema}':`);
|
|
263
|
-
publicResult.rows.forEach((row) => this.logger.log(` Table: ${row.tablename}, Rows: ${row.n_live_tup}`));
|
|
264
|
-
}
|
|
265
|
-
catch (err) {
|
|
266
|
-
this.logger.error(`Error verifying public schema: ${err.message}`);
|
|
267
|
-
}
|
|
268
|
-
let requiresTenantSchemas = Object.values(this.migrationConfig.tables).some((t) => t.type === "tenant");
|
|
269
|
-
if (requiresTenantSchemas) {
|
|
270
|
-
for (const tenantId of tenantIds) {
|
|
271
|
-
try {
|
|
272
|
-
const tenantResult = await this.connections.targetPool.query(`SELECT tablename, n_live_tup FROM pg_stat_user_tables WHERE schemaname = $1`, [tenantId]);
|
|
273
|
-
this.logger.log(`Verification for tenant schema '${tenantId}':`);
|
|
274
|
-
if (tenantResult.rows.length === 0) {
|
|
275
|
-
this.logger.warn(` Schema ${tenantId} has no tables (or pg_stat_user_tables is empty).`);
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
tenantResult.rows.forEach((row) => this.logger.log(` Table: ${row.tablename}, Rows: ${row.n_live_tup}`));
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
catch (err) {
|
|
282
|
-
this.logger.error(`Error verifying tenant schema ${tenantId}: ${err.message}`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
this.logger.log("Verification finished.");
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
exports.DataMigrationTool = DataMigrationTool;
|
|
290
|
-
//# sourceMappingURL=migration-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migration-tool.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/migration-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { ColumnSchema } from "./types";
|
|
2
|
-
export declare class SchemaUtils {
|
|
3
|
-
private readonly connections;
|
|
4
|
-
private readonly logger;
|
|
5
|
-
constructor(connections: any);
|
|
6
|
-
getTableSchema(tableName: string, dbType: "source" | "target", schema?: string): Promise<ColumnSchema[]>;
|
|
7
|
-
checkSchemaExists(schemaName: string): Promise<boolean>;
|
|
8
|
-
getTargetTables(schemaName: string): Promise<string[]>;
|
|
9
|
-
getEnumValues(schemaName: string, enumName: string): Promise<string[]>;
|
|
10
|
-
executeQuery(query: string, params?: any[]): Promise<any>;
|
|
11
|
-
queryTargetDb(query: string, params: any[]): Promise<{
|
|
12
|
-
rows: any[];
|
|
13
|
-
}>;
|
|
14
|
-
createMissingColumns(tableName: string, schema: string, columns: ColumnSchema[]): Promise<void>;
|
|
15
|
-
createSchema(schemaName: string): Promise<void>;
|
|
16
|
-
private getPublicTables;
|
|
17
|
-
getTableColumns(schema: string, table: string): Promise<ColumnSchema[]>;
|
|
18
|
-
}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SchemaUtils = void 0;
|
|
4
|
-
const common_1 = require("@nestjs/common");
|
|
5
|
-
class SchemaUtils {
|
|
6
|
-
constructor(connections) {
|
|
7
|
-
this.connections = connections;
|
|
8
|
-
this.logger = new common_1.Logger("SchemaUtils");
|
|
9
|
-
}
|
|
10
|
-
async getTableSchema(tableName, dbType, schema = "public") {
|
|
11
|
-
const pool = dbType === "source"
|
|
12
|
-
? this.connections.sourcePool
|
|
13
|
-
: this.connections.targetPool;
|
|
14
|
-
const query = `
|
|
15
|
-
SELECT
|
|
16
|
-
c.table_name,
|
|
17
|
-
c.column_name,
|
|
18
|
-
c.data_type,
|
|
19
|
-
c.udt_name,
|
|
20
|
-
c.character_maximum_length,
|
|
21
|
-
c.is_nullable,
|
|
22
|
-
c.column_default,
|
|
23
|
-
tc.constraint_type
|
|
24
|
-
FROM
|
|
25
|
-
information_schema.columns c
|
|
26
|
-
LEFT JOIN information_schema.constraint_column_usage ccu
|
|
27
|
-
ON c.column_name = ccu.column_name
|
|
28
|
-
AND c.table_name = ccu.table_name
|
|
29
|
-
LEFT JOIN information_schema.table_constraints tc
|
|
30
|
-
ON ccu.constraint_name = tc.constraint_name
|
|
31
|
-
WHERE
|
|
32
|
-
c.table_schema = $1
|
|
33
|
-
AND c.table_name = $2
|
|
34
|
-
ORDER BY
|
|
35
|
-
c.ordinal_position
|
|
36
|
-
`;
|
|
37
|
-
try {
|
|
38
|
-
const result = await pool.query(query, [schema, tableName]);
|
|
39
|
-
return result.rows;
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
this.logger.error(`Error getting schema for ${schema}.${tableName}: ${error.message}`);
|
|
43
|
-
return [];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async checkSchemaExists(schemaName) {
|
|
47
|
-
try {
|
|
48
|
-
const query = `
|
|
49
|
-
SELECT schema_name
|
|
50
|
-
FROM information_schema.schemata
|
|
51
|
-
WHERE schema_name = $1
|
|
52
|
-
`;
|
|
53
|
-
const result = await this.connections.targetPool.query(query, [
|
|
54
|
-
schemaName,
|
|
55
|
-
]);
|
|
56
|
-
return result.rows.length > 0;
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
this.logger.error(`Error checking if schema exists: ${error.message}`);
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
async getTargetTables(schemaName) {
|
|
64
|
-
try {
|
|
65
|
-
const query = `
|
|
66
|
-
SELECT table_name
|
|
67
|
-
FROM information_schema.tables
|
|
68
|
-
WHERE table_schema = $1
|
|
69
|
-
AND table_type = 'BASE TABLE'
|
|
70
|
-
`;
|
|
71
|
-
const result = await this.connections.targetPool.query(query, [
|
|
72
|
-
schemaName,
|
|
73
|
-
]);
|
|
74
|
-
this.logger.log(`Found ${result.rows.length} tables in schema ${schemaName}`);
|
|
75
|
-
result.rows.forEach((row) => {
|
|
76
|
-
this.logger.log(`Table in schema ${schemaName}: ${row.table_name}`);
|
|
77
|
-
});
|
|
78
|
-
return result.rows.map((row) => row.table_name);
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
this.logger.error(`Error getting target tables: ${error.message}`);
|
|
82
|
-
return [];
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
async getEnumValues(schemaName, enumName) {
|
|
86
|
-
try {
|
|
87
|
-
const query = `
|
|
88
|
-
SELECT e.enumlabel
|
|
89
|
-
FROM pg_type t
|
|
90
|
-
JOIN pg_enum e ON t.oid = e.enumtypid
|
|
91
|
-
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
|
|
92
|
-
WHERE t.typname = $1
|
|
93
|
-
AND n.nspname = $2
|
|
94
|
-
`;
|
|
95
|
-
const result = await this.connections.targetPool.query(query, [
|
|
96
|
-
enumName,
|
|
97
|
-
schemaName,
|
|
98
|
-
]);
|
|
99
|
-
return result.rows.map((row) => row.enumlabel);
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
this.logger.error(`Error getting enum values for ${enumName}: ${error.message}`);
|
|
103
|
-
return [];
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
async executeQuery(query, params = []) {
|
|
107
|
-
return this.connections.targetPool.query(query, params);
|
|
108
|
-
}
|
|
109
|
-
async queryTargetDb(query, params) {
|
|
110
|
-
return this.connections.targetPool.query(query, params);
|
|
111
|
-
}
|
|
112
|
-
async createMissingColumns(tableName, schema, columns) {
|
|
113
|
-
for (const column of columns) {
|
|
114
|
-
try {
|
|
115
|
-
const query = `
|
|
116
|
-
ALTER TABLE "${schema}"."${tableName}"
|
|
117
|
-
ADD COLUMN IF NOT EXISTS "${column.column_name}" ${column.data_type}
|
|
118
|
-
${column.is_nullable === "NO" ? "NOT NULL" : ""}
|
|
119
|
-
${column.column_default ? `DEFAULT ${column.column_default}` : ""}
|
|
120
|
-
`;
|
|
121
|
-
await this.connections.targetPool.query(query);
|
|
122
|
-
if (column.constraint_type === "UNIQUE") {
|
|
123
|
-
const constraintName = `${tableName}_${column.column_name}_unique`;
|
|
124
|
-
const uniqueQuery = `
|
|
125
|
-
DO $$
|
|
126
|
-
BEGIN
|
|
127
|
-
IF NOT EXISTS (
|
|
128
|
-
SELECT 1 FROM pg_constraint WHERE conname = '${constraintName}'
|
|
129
|
-
) THEN
|
|
130
|
-
ALTER TABLE "${schema}"."${tableName}"
|
|
131
|
-
ADD CONSTRAINT "${constraintName}" UNIQUE ("${column.column_name}");
|
|
132
|
-
END IF;
|
|
133
|
-
END $$;
|
|
134
|
-
`;
|
|
135
|
-
await this.connections.targetPool.query(uniqueQuery);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
this.logger.error(`Error creating column ${column.column_name}: ${error.message}`);
|
|
140
|
-
throw error;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
async createSchema(schemaName) {
|
|
145
|
-
try {
|
|
146
|
-
await this.connections.targetPool.query(`CREATE SCHEMA IF NOT EXISTS "${schemaName}"`);
|
|
147
|
-
const tables = await this.getPublicTables();
|
|
148
|
-
for (const table of tables) {
|
|
149
|
-
await this.connections.targetPool.query(`
|
|
150
|
-
CREATE TABLE IF NOT EXISTS "${schemaName}"."${table}" (
|
|
151
|
-
LIKE public."${table}" INCLUDING ALL
|
|
152
|
-
);
|
|
153
|
-
`);
|
|
154
|
-
}
|
|
155
|
-
this.logger.log(`Created schema ${schemaName} with all tables`);
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
this.logger.error(`Error creating schema ${schemaName}: ${error.message}`);
|
|
159
|
-
throw error;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
async getPublicTables() {
|
|
163
|
-
const result = await this.connections.targetPool.query(`
|
|
164
|
-
SELECT tablename
|
|
165
|
-
FROM pg_tables
|
|
166
|
-
WHERE schemaname = 'public'
|
|
167
|
-
`);
|
|
168
|
-
return result.rows.map((row) => row.tablename);
|
|
169
|
-
}
|
|
170
|
-
async getTableColumns(schema, table) {
|
|
171
|
-
const query = `
|
|
172
|
-
SELECT
|
|
173
|
-
column_name,
|
|
174
|
-
data_type,
|
|
175
|
-
is_nullable,
|
|
176
|
-
column_default,
|
|
177
|
-
character_maximum_length,
|
|
178
|
-
numeric_precision,
|
|
179
|
-
numeric_scale
|
|
180
|
-
FROM information_schema.columns
|
|
181
|
-
WHERE table_schema = $1
|
|
182
|
-
AND table_name = $2
|
|
183
|
-
ORDER BY ordinal_position;
|
|
184
|
-
`;
|
|
185
|
-
try {
|
|
186
|
-
const result = await this.connections.sourcePool.query(query, [
|
|
187
|
-
schema,
|
|
188
|
-
table,
|
|
189
|
-
]);
|
|
190
|
-
return result.rows.map((row) => ({
|
|
191
|
-
column_name: row.column_name,
|
|
192
|
-
data_type: row.data_type,
|
|
193
|
-
is_nullable: row.is_nullable,
|
|
194
|
-
column_default: row.column_default,
|
|
195
|
-
character_maximum_length: row.character_maximum_length,
|
|
196
|
-
numeric_precision: row.numeric_precision,
|
|
197
|
-
numeric_scale: row.numeric_scale,
|
|
198
|
-
}));
|
|
199
|
-
}
|
|
200
|
-
catch (error) {
|
|
201
|
-
this.logger.error(`Error obteniendo columnas para ${schema}.${table}: ${error.message}`);
|
|
202
|
-
throw error;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
exports.SchemaUtils = SchemaUtils;
|
|
207
|
-
//# sourceMappingURL=schema-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/schema-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { SchemaUtils } from "./schema-utils";
|
|
2
|
-
import { EntityDiscovery } from "./entity-discovery";
|
|
3
|
-
import { BatchMigrator } from "./batch-migrator";
|
|
4
|
-
import { DatabaseConnections } from "./types";
|
|
5
|
-
export declare class TenantMigrator {
|
|
6
|
-
private readonly schemaUtils;
|
|
7
|
-
private readonly entityDiscovery;
|
|
8
|
-
private readonly batchMigrator;
|
|
9
|
-
private readonly connections;
|
|
10
|
-
private readonly logger;
|
|
11
|
-
private readonly dependencyResolver;
|
|
12
|
-
constructor(schemaUtils: SchemaUtils, entityDiscovery: EntityDiscovery, batchMigrator: BatchMigrator, connections: DatabaseConnections);
|
|
13
|
-
verifyPhaseDependencies(tenantId: string, tables: string[]): Promise<boolean>;
|
|
14
|
-
migrateDataForTenant(tenantId: string, providerId: number, includeTables?: string[] | null, excludeTables?: string[] | null): Promise<void>;
|
|
15
|
-
}
|