@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,460 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TableIndexFixer = void 0;
|
|
4
|
-
const fs = require("fs");
|
|
5
|
-
const path = require("path");
|
|
6
|
-
const pg = require("pg");
|
|
7
|
-
const common_1 = require("@nestjs/common");
|
|
8
|
-
const dotenv = require("dotenv");
|
|
9
|
-
dotenv.config();
|
|
10
|
-
class TableIndexFixer {
|
|
11
|
-
constructor(targetUrl = process.env.DATABASE_URL) {
|
|
12
|
-
this.targetUrl = targetUrl;
|
|
13
|
-
this.logger = new common_1.Logger('TableIndexFixer');
|
|
14
|
-
this.fixedIndexes = [];
|
|
15
|
-
if (!this.targetUrl) {
|
|
16
|
-
throw new Error('DATABASE_URL environment variable is required');
|
|
17
|
-
}
|
|
18
|
-
this.targetPool = new pg.Pool({
|
|
19
|
-
connectionString: this.targetUrl,
|
|
20
|
-
});
|
|
21
|
-
this.logDir = path.join(process.cwd(), 'migration-logs');
|
|
22
|
-
if (!fs.existsSync(this.logDir)) {
|
|
23
|
-
fs.mkdirSync(this.logDir, { recursive: true });
|
|
24
|
-
}
|
|
25
|
-
const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\..+/, '');
|
|
26
|
-
this.logPath = path.join(this.logDir, `index-fixes-${timestamp}.json`);
|
|
27
|
-
}
|
|
28
|
-
async fixIndexes() {
|
|
29
|
-
try {
|
|
30
|
-
this.logger.log('Iniciando proceso de corrección de índices');
|
|
31
|
-
const schemas = await this.getSchemas();
|
|
32
|
-
this.logger.log(`Encontrados ${schemas.length} esquemas para procesar`);
|
|
33
|
-
for (const schema of schemas) {
|
|
34
|
-
await this.fixIndexesForSchema(schema);
|
|
35
|
-
}
|
|
36
|
-
this.saveFixLog();
|
|
37
|
-
this.logger.log(`Proceso de corrección de índices completado. Log guardado en: ${this.logPath}`);
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
this.logger.error(`Error durante la corrección de índices: ${error.message}`, error.stack);
|
|
41
|
-
}
|
|
42
|
-
finally {
|
|
43
|
-
await this.cleanup();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async getSchemas() {
|
|
47
|
-
const result = await this.targetPool.query(`
|
|
48
|
-
SELECT schema_name
|
|
49
|
-
FROM information_schema.schemata
|
|
50
|
-
WHERE schema_name NOT IN ('information_schema', 'pg_catalog', 'pg_toast')
|
|
51
|
-
AND schema_name NOT LIKE 'pg_%'
|
|
52
|
-
`);
|
|
53
|
-
return result.rows.map(row => row.schema_name);
|
|
54
|
-
}
|
|
55
|
-
async fixIndexesForSchema(schema) {
|
|
56
|
-
this.logger.log(`Procesando índices para el esquema: ${schema}`);
|
|
57
|
-
try {
|
|
58
|
-
const tables = await this.getTablesForSchema(schema);
|
|
59
|
-
this.logger.log(`Encontradas ${tables.length} tablas en el esquema ${schema}`);
|
|
60
|
-
for (const table of tables) {
|
|
61
|
-
await this.fixIndexesForTable(schema, table);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
this.logger.error(`Error procesando índices para el esquema ${schema}: ${error.message}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async getTablesForSchema(schema) {
|
|
69
|
-
const result = await this.targetPool.query(`
|
|
70
|
-
SELECT table_name
|
|
71
|
-
FROM information_schema.tables
|
|
72
|
-
WHERE table_schema = $1
|
|
73
|
-
AND table_type = 'BASE TABLE'
|
|
74
|
-
`, [schema]);
|
|
75
|
-
return result.rows.map(row => row.table_name);
|
|
76
|
-
}
|
|
77
|
-
async fixIndexesForTable(schema, table) {
|
|
78
|
-
this.logger.log(`Procesando índices para la tabla ${schema}.${table}`);
|
|
79
|
-
try {
|
|
80
|
-
const tableInfo = await this.getTableInfo(schema, table);
|
|
81
|
-
const existingIndexes = await this.getTableIndexes(this.targetPool, schema, table);
|
|
82
|
-
this.logger.log(`Encontrados ${existingIndexes.length} índices en la tabla ${schema}.${table}`);
|
|
83
|
-
if (tableInfo.has_identity_column) {
|
|
84
|
-
await this.fixSequences(schema, table);
|
|
85
|
-
}
|
|
86
|
-
await this.fixCommonIndexIssues(schema, table);
|
|
87
|
-
await this.fixForeignKeyIndexes(schema, table);
|
|
88
|
-
await this.removeRedundantIndexes(schema, table, await this.getTableIndexes(this.targetPool, schema, table));
|
|
89
|
-
if (table === 'users' || table === 'user' || table.includes('user')) {
|
|
90
|
-
await this.ensureCriticalUserTableIndexes(schema, table);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
this.logger.error(`Error procesando índices para la tabla ${schema}.${table}: ${error.message}`);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async ensureCriticalUserTableIndexes(schema, table) {
|
|
98
|
-
try {
|
|
99
|
-
const columns = await this.getTableColumns(schema, table);
|
|
100
|
-
const existingIndexes = await this.getTableIndexes(this.targetPool, schema, table);
|
|
101
|
-
const indexedColumns = new Set(existingIndexes.flatMap(idx => idx.column_names));
|
|
102
|
-
const criticalColumns = ['email', 'username', 'phone', 'id', 'uuid'];
|
|
103
|
-
for (const criticalCol of criticalColumns) {
|
|
104
|
-
const column = columns.find(col => col.column_name === criticalCol);
|
|
105
|
-
if (column && !indexedColumns.has(column.column_name)) {
|
|
106
|
-
const shouldBeUnique = ['email', 'username', 'phone', 'uuid'].includes(column.column_name);
|
|
107
|
-
const indexInfo = {
|
|
108
|
-
schema,
|
|
109
|
-
table,
|
|
110
|
-
index_name: `idx_${table}_${column.column_name}`,
|
|
111
|
-
column_names: [column.column_name],
|
|
112
|
-
is_unique: shouldBeUnique,
|
|
113
|
-
is_primary: false,
|
|
114
|
-
definition: ''
|
|
115
|
-
};
|
|
116
|
-
this.logger.log(`Creando índice crítico para ${column.column_name} en tabla de usuarios ${schema}.${table}`);
|
|
117
|
-
await this.createIndex(schema, table, indexInfo);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
await this.fixUserTableSequences(schema, table);
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
this.logger.error(`Error asegurando índices críticos para tabla de usuarios ${schema}.${table}: ${error.message}`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
async fixUserTableSequences(schema, table) {
|
|
127
|
-
var _a;
|
|
128
|
-
try {
|
|
129
|
-
const columnsQuery = `
|
|
130
|
-
SELECT column_name
|
|
131
|
-
FROM information_schema.columns
|
|
132
|
-
WHERE table_schema = $1
|
|
133
|
-
AND table_name = $2
|
|
134
|
-
AND (is_identity = 'YES' OR column_default LIKE 'nextval%')
|
|
135
|
-
`;
|
|
136
|
-
const columnsResult = await this.targetPool.query(columnsQuery, [schema, table]);
|
|
137
|
-
const identityColumns = columnsResult.rows.map(row => row.column_name);
|
|
138
|
-
for (const column of identityColumns) {
|
|
139
|
-
const sequenceQuery = `
|
|
140
|
-
SELECT pg_get_serial_sequence($1, $2) AS sequence_name
|
|
141
|
-
`;
|
|
142
|
-
const sequenceResult = await this.targetPool.query(sequenceQuery, [`${schema}.${table}`, column]);
|
|
143
|
-
const sequenceName = (_a = sequenceResult.rows[0]) === null || _a === void 0 ? void 0 : _a.sequence_name;
|
|
144
|
-
if (sequenceName) {
|
|
145
|
-
const resetQuery = `
|
|
146
|
-
SELECT setval($1, COALESCE((SELECT MAX(${column}) FROM ${schema}.${table}), 0) + 1, true)
|
|
147
|
-
`;
|
|
148
|
-
await this.targetPool.query(resetQuery, [sequenceName]);
|
|
149
|
-
this.logger.log(`Restablecida secuencia ${sequenceName} para la columna ${column} en ${schema}.${table} (tabla de usuarios)`);
|
|
150
|
-
this.fixedIndexes.push({
|
|
151
|
-
schema,
|
|
152
|
-
table,
|
|
153
|
-
column,
|
|
154
|
-
sequence_name: sequenceName,
|
|
155
|
-
action: 'reset_sequence_user_table',
|
|
156
|
-
timestamp: new Date().toISOString()
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
this.logger.error(`Error restableciendo secuencias para tabla de usuarios ${schema}.${table}: ${error.message}`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
async removeRedundantIndexes(schema, table, indexes) {
|
|
166
|
-
const redundantIndexes = [];
|
|
167
|
-
const criticalIndexPatterns = [
|
|
168
|
-
'email', 'username', 'phone', 'uuid', 'pkey', 'primary',
|
|
169
|
-
'unique', 'user_id', 'auth', 'session', 'token'
|
|
170
|
-
];
|
|
171
|
-
for (let i = 0; i < indexes.length; i++) {
|
|
172
|
-
for (let j = 0; j < indexes.length; j++) {
|
|
173
|
-
if (i !== j && !indexes[i].is_primary && !indexes[j].is_primary) {
|
|
174
|
-
const index1 = indexes[i];
|
|
175
|
-
const index2 = indexes[j];
|
|
176
|
-
if (!Array.isArray(index1.column_names) || !Array.isArray(index2.column_names)) {
|
|
177
|
-
this.logger.warn(`Índice con formato incorrecto en ${schema}.${table}: ${index1.index_name} o ${index2.index_name}`);
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
const isIndex1Critical = criticalIndexPatterns.some(pattern => index1.index_name.toLowerCase().includes(pattern));
|
|
181
|
-
if (isIndex1Critical) {
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
if (index1.column_names.every(col => index2.column_names.includes(col)) &&
|
|
185
|
-
index2.column_names.length > index1.column_names.length) {
|
|
186
|
-
redundantIndexes.push(index1);
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
for (const index of redundantIndexes) {
|
|
193
|
-
try {
|
|
194
|
-
const query = `DROP INDEX IF EXISTS "${schema}"."${index.index_name}"`;
|
|
195
|
-
await this.targetPool.query(query);
|
|
196
|
-
this.logger.log(`Eliminado índice redundante ${index.index_name} en ${schema}.${table}`);
|
|
197
|
-
this.fixedIndexes.push({
|
|
198
|
-
schema,
|
|
199
|
-
table,
|
|
200
|
-
index_name: index.index_name,
|
|
201
|
-
action: 'removed_redundant',
|
|
202
|
-
timestamp: new Date().toISOString()
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
catch (error) {
|
|
206
|
-
this.logger.error(`Error eliminando índice redundante ${index.index_name} en ${schema}.${table}: ${error.message}`);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
async fixSequences(schema, table) {
|
|
211
|
-
var _a;
|
|
212
|
-
try {
|
|
213
|
-
const columnsQuery = `
|
|
214
|
-
SELECT column_name
|
|
215
|
-
FROM information_schema.columns
|
|
216
|
-
WHERE table_schema = $1
|
|
217
|
-
AND table_name = $2
|
|
218
|
-
AND (is_identity = 'YES' OR column_default LIKE 'nextval%')
|
|
219
|
-
`;
|
|
220
|
-
const columnsResult = await this.targetPool.query(columnsQuery, [schema, table]);
|
|
221
|
-
const identityColumns = columnsResult.rows.map(row => row.column_name);
|
|
222
|
-
for (const column of identityColumns) {
|
|
223
|
-
const sequenceQuery = `
|
|
224
|
-
SELECT pg_get_serial_sequence($1, $2) AS sequence_name
|
|
225
|
-
`;
|
|
226
|
-
const sequenceResult = await this.targetPool.query(sequenceQuery, [`${schema}.${table}`, column]);
|
|
227
|
-
const sequenceName = (_a = sequenceResult.rows[0]) === null || _a === void 0 ? void 0 : _a.sequence_name;
|
|
228
|
-
if (sequenceName) {
|
|
229
|
-
const resetQuery = `
|
|
230
|
-
SELECT setval($1, COALESCE((SELECT MAX(${column}) FROM ${schema}.${table}), 0) + 1, true)
|
|
231
|
-
`;
|
|
232
|
-
await this.targetPool.query(resetQuery, [sequenceName]);
|
|
233
|
-
this.logger.log(`Restablecida secuencia ${sequenceName} para la columna ${column} en ${schema}.${table}`);
|
|
234
|
-
this.fixedIndexes.push({
|
|
235
|
-
schema,
|
|
236
|
-
table,
|
|
237
|
-
column,
|
|
238
|
-
sequence_name: sequenceName,
|
|
239
|
-
action: 'reset_sequence',
|
|
240
|
-
timestamp: new Date().toISOString()
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
catch (error) {
|
|
246
|
-
this.logger.error(`Error restableciendo secuencias para ${schema}.${table}: ${error.message}`);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
async getTableInfo(schema, table) {
|
|
250
|
-
var _a;
|
|
251
|
-
try {
|
|
252
|
-
const identityQuery = `
|
|
253
|
-
SELECT EXISTS (
|
|
254
|
-
SELECT 1
|
|
255
|
-
FROM information_schema.columns
|
|
256
|
-
WHERE table_schema = $1
|
|
257
|
-
AND table_name = $2
|
|
258
|
-
AND is_identity = 'YES'
|
|
259
|
-
) AS has_identity_column;
|
|
260
|
-
`;
|
|
261
|
-
const result = await this.targetPool.query(identityQuery, [schema, table]);
|
|
262
|
-
return {
|
|
263
|
-
has_identity_column: ((_a = result.rows[0]) === null || _a === void 0 ? void 0 : _a.has_identity_column) || false
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
catch (error) {
|
|
267
|
-
this.logger.error(`Error obteniendo información de la tabla ${schema}.${table}: ${error.message}`);
|
|
268
|
-
return { has_identity_column: false };
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
async getTableIndexes(pool, schema, table) {
|
|
272
|
-
const query = `
|
|
273
|
-
SELECT
|
|
274
|
-
i.relname AS index_name,
|
|
275
|
-
array_agg(a.attname) AS column_names,
|
|
276
|
-
ix.indisunique AS is_unique,
|
|
277
|
-
ix.indisprimary AS is_primary,
|
|
278
|
-
pg_get_indexdef(ix.indexrelid) AS definition
|
|
279
|
-
FROM
|
|
280
|
-
pg_index ix
|
|
281
|
-
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
282
|
-
JOIN pg_class t ON t.oid = ix.indrelid
|
|
283
|
-
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
284
|
-
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = ANY(ix.indkey)
|
|
285
|
-
WHERE
|
|
286
|
-
n.nspname = $1
|
|
287
|
-
AND t.relname = $2
|
|
288
|
-
GROUP BY
|
|
289
|
-
i.relname, ix.indisunique, ix.indisprimary, ix.indexrelid
|
|
290
|
-
ORDER BY
|
|
291
|
-
i.relname;
|
|
292
|
-
`;
|
|
293
|
-
try {
|
|
294
|
-
const result = await pool.query(query, [schema, table]);
|
|
295
|
-
return result.rows.map(row => ({
|
|
296
|
-
schema,
|
|
297
|
-
table,
|
|
298
|
-
index_name: row.index_name,
|
|
299
|
-
column_names: row.column_names,
|
|
300
|
-
is_unique: row.is_unique,
|
|
301
|
-
is_primary: row.is_primary,
|
|
302
|
-
definition: row.definition
|
|
303
|
-
}));
|
|
304
|
-
}
|
|
305
|
-
catch (error) {
|
|
306
|
-
this.logger.error(`Error obteniendo índices para ${schema}.${table}: ${error.message}`);
|
|
307
|
-
return [];
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
async createIndex(schema, table, indexInfo) {
|
|
311
|
-
try {
|
|
312
|
-
const columnList = indexInfo.column_names.join('_');
|
|
313
|
-
const indexName = `idx_${table}_${columnList}`.substring(0, 63);
|
|
314
|
-
let query = `CREATE`;
|
|
315
|
-
if (indexInfo.is_unique) {
|
|
316
|
-
query += ` UNIQUE`;
|
|
317
|
-
}
|
|
318
|
-
query += ` INDEX IF NOT EXISTS "${indexName}" ON "${schema}"."${table}" (${indexInfo.column_names.map(col => `"${col}"`).join(', ')})`;
|
|
319
|
-
await this.targetPool.query(query);
|
|
320
|
-
this.logger.log(`Creado índice ${indexName} en ${schema}.${table}`);
|
|
321
|
-
this.fixedIndexes.push({
|
|
322
|
-
schema,
|
|
323
|
-
table,
|
|
324
|
-
index_name: indexName,
|
|
325
|
-
columns: indexInfo.column_names,
|
|
326
|
-
is_unique: indexInfo.is_unique,
|
|
327
|
-
timestamp: new Date().toISOString()
|
|
328
|
-
});
|
|
329
|
-
}
|
|
330
|
-
catch (error) {
|
|
331
|
-
this.logger.error(`Error creando índice en ${schema}.${table}: ${error.message}`);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
async fixCommonIndexIssues(schema, table) {
|
|
335
|
-
try {
|
|
336
|
-
const columns = await this.getTableColumns(schema, table);
|
|
337
|
-
const potentialIndexColumns = columns.filter(col => col.column_name.endsWith('_id') ||
|
|
338
|
-
col.column_name === 'id' ||
|
|
339
|
-
col.column_name === 'uuid' ||
|
|
340
|
-
col.column_name === 'slug' ||
|
|
341
|
-
col.column_name === 'email' ||
|
|
342
|
-
col.column_name === 'username' ||
|
|
343
|
-
col.column_name.includes('code') ||
|
|
344
|
-
col.column_name === 'user_id' ||
|
|
345
|
-
col.column_name === 'created_at' ||
|
|
346
|
-
col.column_name === 'updated_at');
|
|
347
|
-
const existingIndexes = await this.getTableIndexes(this.targetPool, schema, table);
|
|
348
|
-
const indexedColumns = new Set(existingIndexes.flatMap(idx => idx.column_names));
|
|
349
|
-
for (const column of potentialIndexColumns) {
|
|
350
|
-
if (!indexedColumns.has(column.column_name)) {
|
|
351
|
-
const shouldBeUnique = ['email', 'username', 'slug', 'uuid'].includes(column.column_name);
|
|
352
|
-
const indexInfo = {
|
|
353
|
-
schema,
|
|
354
|
-
table,
|
|
355
|
-
index_name: `idx_${table}_${column.column_name}`,
|
|
356
|
-
column_names: [column.column_name],
|
|
357
|
-
is_unique: shouldBeUnique,
|
|
358
|
-
is_primary: false,
|
|
359
|
-
definition: ''
|
|
360
|
-
};
|
|
361
|
-
await this.createIndex(schema, table, indexInfo);
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
catch (error) {
|
|
366
|
-
this.logger.error(`Error corrigiendo problemas comunes de índices en ${schema}.${table}: ${error.message}`);
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
async getTableColumns(schema, table) {
|
|
370
|
-
const query = `
|
|
371
|
-
SELECT column_name, data_type, is_nullable
|
|
372
|
-
FROM information_schema.columns
|
|
373
|
-
WHERE table_schema = $1
|
|
374
|
-
AND table_name = $2
|
|
375
|
-
`;
|
|
376
|
-
const result = await this.targetPool.query(query, [schema, table]);
|
|
377
|
-
return result.rows;
|
|
378
|
-
}
|
|
379
|
-
async fixForeignKeyIndexes(schema, table) {
|
|
380
|
-
try {
|
|
381
|
-
const fkQuery = `
|
|
382
|
-
SELECT
|
|
383
|
-
kcu.column_name,
|
|
384
|
-
ccu.table_schema AS foreign_table_schema,
|
|
385
|
-
ccu.table_name AS foreign_table_name,
|
|
386
|
-
ccu.column_name AS foreign_column_name
|
|
387
|
-
FROM
|
|
388
|
-
information_schema.table_constraints AS tc
|
|
389
|
-
JOIN information_schema.key_column_usage AS kcu
|
|
390
|
-
ON tc.constraint_name = kcu.constraint_name
|
|
391
|
-
AND tc.table_schema = kcu.table_schema
|
|
392
|
-
JOIN information_schema.constraint_column_usage AS ccu
|
|
393
|
-
ON ccu.constraint_name = tc.constraint_name
|
|
394
|
-
AND ccu.table_schema = tc.table_schema
|
|
395
|
-
WHERE
|
|
396
|
-
tc.constraint_type = 'FOREIGN KEY'
|
|
397
|
-
AND tc.table_schema = $1
|
|
398
|
-
AND tc.table_name = $2;
|
|
399
|
-
`;
|
|
400
|
-
const fkResult = await this.targetPool.query(fkQuery, [schema, table]);
|
|
401
|
-
const existingIndexes = await this.getTableIndexes(this.targetPool, schema, table);
|
|
402
|
-
const indexedColumns = new Set(existingIndexes.flatMap(idx => idx.column_names));
|
|
403
|
-
for (const fk of fkResult.rows) {
|
|
404
|
-
if (!indexedColumns.has(fk.column_name)) {
|
|
405
|
-
const indexInfo = {
|
|
406
|
-
schema,
|
|
407
|
-
table,
|
|
408
|
-
index_name: `idx_${table}_${fk.column_name}`,
|
|
409
|
-
column_names: [fk.column_name],
|
|
410
|
-
is_unique: false,
|
|
411
|
-
is_primary: false,
|
|
412
|
-
definition: ''
|
|
413
|
-
};
|
|
414
|
-
await this.createIndex(schema, table, indexInfo);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
catch (error) {
|
|
419
|
-
this.logger.error(`Error creando índices para claves foráneas en ${schema}.${table}: ${error.message}`);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
saveFixLog() {
|
|
423
|
-
try {
|
|
424
|
-
const logData = {
|
|
425
|
-
timestamp: new Date().toISOString(),
|
|
426
|
-
targetDatabase: this.targetUrl,
|
|
427
|
-
fixCount: this.fixedIndexes.length,
|
|
428
|
-
fixes: this.fixedIndexes
|
|
429
|
-
};
|
|
430
|
-
fs.writeFileSync(this.logPath, JSON.stringify(logData, null, 2), 'utf8');
|
|
431
|
-
}
|
|
432
|
-
catch (error) {
|
|
433
|
-
this.logger.error(`Error guardando log de correcciones: ${error.message}`);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
async cleanup() {
|
|
437
|
-
try {
|
|
438
|
-
await this.targetPool.end();
|
|
439
|
-
}
|
|
440
|
-
catch (error) {
|
|
441
|
-
this.logger.error(`Error durante la limpieza: ${error.message}`);
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
exports.TableIndexFixer = TableIndexFixer;
|
|
446
|
-
if (require.main === module) {
|
|
447
|
-
const run = async () => {
|
|
448
|
-
try {
|
|
449
|
-
const indexFixer = new TableIndexFixer();
|
|
450
|
-
await indexFixer.fixIndexes();
|
|
451
|
-
process.exit(0);
|
|
452
|
-
}
|
|
453
|
-
catch (error) {
|
|
454
|
-
console.error("Error:", error.message);
|
|
455
|
-
process.exit(1);
|
|
456
|
-
}
|
|
457
|
-
};
|
|
458
|
-
run();
|
|
459
|
-
}
|
|
460
|
-
//# sourceMappingURL=fix-table-indexes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix-table-indexes.js","sourceRoot":"","sources":["../../src/scripts/fix-table-indexes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const client_1 = require("@prisma/client");
|
|
4
|
-
const child_process_1 = require("child_process");
|
|
5
|
-
const util_1 = require("util");
|
|
6
|
-
const dotenv = require("dotenv");
|
|
7
|
-
dotenv.config();
|
|
8
|
-
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
9
|
-
async function migrateSchemaStructure() {
|
|
10
|
-
const sourcePrisma = new client_1.PrismaClient({
|
|
11
|
-
datasources: {
|
|
12
|
-
db: {
|
|
13
|
-
url: process.env.SOURCE_DATABASE_URL,
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
const targetPrisma = new client_1.PrismaClient({
|
|
18
|
-
datasources: {
|
|
19
|
-
db: {
|
|
20
|
-
url: process.env.DATABASE_URL,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
});
|
|
24
|
-
try {
|
|
25
|
-
console.log("Fetching API keys and creating schemas...");
|
|
26
|
-
const apiKeys = await sourcePrisma.api_keys.findMany({
|
|
27
|
-
select: {
|
|
28
|
-
api_key: true,
|
|
29
|
-
providers: {
|
|
30
|
-
select: {
|
|
31
|
-
name: true,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
});
|
|
36
|
-
for (const apiKey of apiKeys) {
|
|
37
|
-
const schemaName = apiKey.api_key;
|
|
38
|
-
await targetPrisma.$executeRawUnsafe(`CREATE SCHEMA IF NOT EXISTS "${schemaName}"`);
|
|
39
|
-
const dbUrl = `${process.env.DATABASE_URL}?schema=${schemaName}`;
|
|
40
|
-
await execAsync(`DATABASE_URL="${dbUrl}" npx prisma db push --schema ./prisma/schema.prisma --skip-generate`);
|
|
41
|
-
const schemaExists = await checkSchemaExists(schemaName);
|
|
42
|
-
if (!schemaExists) {
|
|
43
|
-
throw new Error(`Failed to create schema ${schemaName}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
console.log("Schema structure migration completed successfully");
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
console.error("Error in schema migration process:", error);
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
await sourcePrisma.$disconnect();
|
|
54
|
-
await targetPrisma.$disconnect();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
async function checkSchemaExists(schemaName) {
|
|
58
|
-
const prisma = new client_1.PrismaClient();
|
|
59
|
-
try {
|
|
60
|
-
const result = await prisma.$queryRaw `
|
|
61
|
-
SELECT schema_name
|
|
62
|
-
FROM information_schema.schemata
|
|
63
|
-
WHERE schema_name = ${schemaName}
|
|
64
|
-
`;
|
|
65
|
-
return Array.isArray(result) && result.length > 0;
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
console.error(`Error checking if schema exists: ${error}`);
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
finally {
|
|
72
|
-
await prisma.$disconnect();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
migrateSchemaStructure().catch(console.error);
|
|
76
|
-
//# sourceMappingURL=migrate-schema-structure.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-schema-structure.js","sourceRoot":"","sources":["../../src/scripts/migrate-schema-structure.ts"],"names":[],"mappings":";;AAAA,2CAA8C;AAC9C,iDAAqC;AACrC,+BAAiC;AACjC,iCAAiC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,KAAK,UAAU,sBAAsB;IACnC,MAAM,YAAY,GAAG,IAAI,qBAAY,CAAC;QACpC,WAAW,EAAE;YACX,EAAE,EAAE;gBACF,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;aACrC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,qBAAY,CAAC;QACpC,WAAW,EAAE;YACX,EAAE,EAAE;gBACF,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;aAC9B;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnD,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE;oBACT,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI;qBACX;iBACF;aACF;SACF,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;YAGlC,MAAM,YAAY,CAAC,iBAAiB,CAClC,gCAAgC,UAAU,GAAG,CAC9C,CAAC;YAGF,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,UAAU,EAAE,CAAC;YACjE,MAAM,SAAS,CACb,iBAAiB,KAAK,sEAAsE,CAC7F,CAAC;YAGF,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAA;;;4BAGb,UAAU;KACjC,CAAC;QAEF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,sBAAsB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.migrateUuid = migrateUuid;
|
|
4
|
-
const client_1 = require("@prisma/client");
|
|
5
|
-
const prisma = new client_1.PrismaClient();
|
|
6
|
-
async function migrateUuid() {
|
|
7
|
-
try {
|
|
8
|
-
console.log("🚀 Iniciando migración de UUID...");
|
|
9
|
-
console.log("\n📦 Habilitando extensión uuid-ossp...");
|
|
10
|
-
await prisma.$executeRaw `CREATE EXTENSION IF NOT EXISTS "uuid-ossp";`;
|
|
11
|
-
console.log("\n🔍 Verificando registros sin UUID...");
|
|
12
|
-
const nullUuids = await prisma.$queryRaw `
|
|
13
|
-
SELECT COUNT(*) as count
|
|
14
|
-
FROM transactions
|
|
15
|
-
WHERE uuid IS NULL;
|
|
16
|
-
`;
|
|
17
|
-
if (nullUuids[0].count > 0) {
|
|
18
|
-
console.log(`\n📝 Actualizando ${nullUuids[0].count} registros sin UUID...`);
|
|
19
|
-
await prisma.$executeRaw `
|
|
20
|
-
UPDATE transactions
|
|
21
|
-
SET uuid = uuid_generate_v4()
|
|
22
|
-
WHERE uuid IS NULL;
|
|
23
|
-
`;
|
|
24
|
-
}
|
|
25
|
-
console.log("\n🔍 Verificando registros después de la actualización...");
|
|
26
|
-
const remainingNullUuids = await prisma.$queryRaw `
|
|
27
|
-
SELECT COUNT(*) as count
|
|
28
|
-
FROM transactions
|
|
29
|
-
WHERE uuid IS NULL;
|
|
30
|
-
`;
|
|
31
|
-
if (remainingNullUuids[0].count > 0) {
|
|
32
|
-
throw new Error(`Aún hay ${remainingNullUuids[0].count} registros sin UUID después de la actualización`);
|
|
33
|
-
}
|
|
34
|
-
console.log("\n📝 Haciendo UUID requerido y añadiendo valor por defecto...");
|
|
35
|
-
await prisma.$executeRaw `
|
|
36
|
-
ALTER TABLE transactions
|
|
37
|
-
ALTER COLUMN uuid SET NOT NULL;
|
|
38
|
-
`;
|
|
39
|
-
await prisma.$executeRaw `
|
|
40
|
-
ALTER TABLE transactions
|
|
41
|
-
ALTER COLUMN uuid
|
|
42
|
-
SET DEFAULT uuid_generate_v4();
|
|
43
|
-
`;
|
|
44
|
-
console.log("\n✅ Migración completada exitosamente");
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
console.error("\n❌ Error durante la migración:", error);
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
finally {
|
|
51
|
-
await prisma.$disconnect();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (require.main === module) {
|
|
55
|
-
migrateUuid();
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=migrate-uuid.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-uuid.js","sourceRoot":"","sources":["../../src/scripts/migrate-uuid.ts"],"names":[],"mappings":";;AA2ES,kCAAW;AA1EpB,2CAA8C;AAE9C,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;AAElC,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAGjD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,MAAM,MAAM,CAAC,WAAW,CAAA,6CAA6C,CAAC;QAGtE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAA;;;;KAIvC,CAAC;QAEF,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CACT,qBAAqB,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,wBAAwB,CAChE,CAAC;YACF,MAAM,MAAM,CAAC,WAAW,CAAA;;;;OAIvB,CAAC;QACJ,CAAC;QAGD,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,SAAS,CAAA;;;;KAIhD,CAAC;QAEF,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,WAAW,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,iDAAiD,CACxF,CAAC;QACJ,CAAC;QAGD,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;QACF,MAAM,MAAM,CAAC,WAAW,CAAA;;;KAGvB,CAAC;QAEF,MAAM,MAAM,CAAC,WAAW,CAAA;;;;KAIvB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAGD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,CAAC;AAChB,CAAC"}
|