@javalabs/prisma-client 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/scripts/data-migration/batch-migrator.d.ts +14 -19
  2. package/dist/scripts/data-migration/batch-migrator.js +98 -297
  3. package/dist/scripts/data-migration/batch-migrator.js.map +1 -1
  4. package/dist/scripts/data-migration/data-transformer.d.ts +16 -7
  5. package/dist/scripts/data-migration/data-transformer.js +169 -133
  6. package/dist/scripts/data-migration/data-transformer.js.map +1 -1
  7. package/dist/scripts/data-migration/db-connector.d.ts +6 -1
  8. package/dist/scripts/data-migration/db-connector.js +44 -8
  9. package/dist/scripts/data-migration/db-connector.js.map +1 -1
  10. package/dist/scripts/data-migration/dependency-resolver.d.ts +10 -10
  11. package/dist/scripts/data-migration/dependency-resolver.js +92 -211
  12. package/dist/scripts/data-migration/dependency-resolver.js.map +1 -1
  13. package/dist/scripts/data-migration/foreign-key-manager.d.ts +6 -5
  14. package/dist/scripts/data-migration/foreign-key-manager.js +108 -18
  15. package/dist/scripts/data-migration/foreign-key-manager.js.map +1 -1
  16. package/dist/scripts/data-migration/migration-config.json +63 -0
  17. package/dist/scripts/data-migration/migration-tool.d.ts +25 -6
  18. package/dist/scripts/data-migration/migration-tool.js +78 -38
  19. package/dist/scripts/data-migration/migration-tool.js.map +1 -1
  20. package/dist/scripts/data-migration/multi-source-migrator.d.ts +17 -0
  21. package/dist/scripts/data-migration/multi-source-migrator.js +130 -0
  22. package/dist/scripts/data-migration/multi-source-migrator.js.map +1 -0
  23. package/dist/scripts/data-migration/schema-utils.d.ts +3 -3
  24. package/dist/scripts/data-migration/schema-utils.js +62 -19
  25. package/dist/scripts/data-migration/schema-utils.js.map +1 -1
  26. package/dist/scripts/data-migration/tenant-migrator.js +9 -2
  27. package/dist/scripts/data-migration/tenant-migrator.js.map +1 -1
  28. package/dist/scripts/data-migration/typecast-manager.d.ts +7 -3
  29. package/dist/scripts/data-migration/typecast-manager.js +169 -25
  30. package/dist/scripts/data-migration/typecast-manager.js.map +1 -1
  31. package/dist/scripts/data-migration/types.d.ts +68 -2
  32. package/dist/scripts/fix-table-indexes.d.ts +26 -0
  33. package/dist/scripts/fix-table-indexes.js +460 -0
  34. package/dist/scripts/fix-table-indexes.js.map +1 -0
  35. package/dist/scripts/multi-db-migration.d.ts +1 -0
  36. package/dist/scripts/multi-db-migration.js +55 -0
  37. package/dist/scripts/multi-db-migration.js.map +1 -0
  38. package/dist/scripts/run-migration.js +41 -75
  39. package/dist/scripts/run-migration.js.map +1 -1
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/migration-config.json +40 -72
  42. package/{migration-config-public.json → migration-config.json.bk} +14 -14
  43. package/package.json +6 -3
  44. package/src/scripts/data-migration/batch-migrator.ts +192 -513
  45. package/src/scripts/data-migration/data-transformer.ts +252 -203
  46. package/src/scripts/data-migration/db-connector.ts +66 -13
  47. package/src/scripts/data-migration/dependency-resolver.ts +121 -266
  48. package/src/scripts/data-migration/foreign-key-manager.ts +214 -32
  49. package/src/scripts/data-migration/migration-config.json +63 -0
  50. package/src/scripts/data-migration/migration-tool.ts +377 -225
  51. package/src/scripts/data-migration/schema-utils.ts +94 -32
  52. package/src/scripts/data-migration/tenant-migrator.ts +12 -5
  53. package/src/scripts/data-migration/typecast-manager.ts +186 -31
  54. package/src/scripts/data-migration/types.ts +78 -5
  55. package/src/scripts/dumps/source_dump_20250428_145606.sql +323 -0
  56. package/src/scripts/fix-table-indexes.ts +602 -0
  57. package/src/scripts/post-migration-validator.ts +206 -107
  58. package/src/scripts/run-migration.ts +87 -101
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SchemaUtils = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  class SchemaUtils {
6
- constructor(sourcePool, targetPool) {
7
- this.sourcePool = sourcePool;
8
- this.targetPool = targetPool;
6
+ constructor(connections) {
7
+ this.connections = connections;
9
8
  this.logger = new common_1.Logger("SchemaUtils");
10
9
  }
11
10
  async getTableSchema(tableName, dbType, schema = "public") {
12
- const pool = dbType === "source" ? this.sourcePool : this.targetPool;
11
+ const pool = dbType === "source"
12
+ ? this.connections.sourcePool
13
+ : this.connections.targetPool;
13
14
  const query = `
14
15
  SELECT
15
16
  c.table_name,
@@ -49,7 +50,9 @@ class SchemaUtils {
49
50
  FROM information_schema.schemata
50
51
  WHERE schema_name = $1
51
52
  `;
52
- const result = await this.targetPool.query(query, [schemaName]);
53
+ const result = await this.connections.targetPool.query(query, [
54
+ schemaName,
55
+ ]);
53
56
  return result.rows.length > 0;
54
57
  }
55
58
  catch (error) {
@@ -65,9 +68,11 @@ class SchemaUtils {
65
68
  WHERE table_schema = $1
66
69
  AND table_type = 'BASE TABLE'
67
70
  `;
68
- const result = await this.targetPool.query(query, [schemaName]);
71
+ const result = await this.connections.targetPool.query(query, [
72
+ schemaName,
73
+ ]);
69
74
  this.logger.log(`Found ${result.rows.length} tables in schema ${schemaName}`);
70
- result.rows.forEach(row => {
75
+ result.rows.forEach((row) => {
71
76
  this.logger.log(`Table in schema ${schemaName}: ${row.table_name}`);
72
77
  });
73
78
  return result.rows.map((row) => row.table_name);
@@ -87,7 +92,10 @@ class SchemaUtils {
87
92
  WHERE t.typname = $1
88
93
  AND n.nspname = $2
89
94
  `;
90
- const result = await this.targetPool.query(query, [enumName, schemaName]);
95
+ const result = await this.connections.targetPool.query(query, [
96
+ enumName,
97
+ schemaName,
98
+ ]);
91
99
  return result.rows.map((row) => row.enumlabel);
92
100
  }
93
101
  catch (error) {
@@ -96,10 +104,10 @@ class SchemaUtils {
96
104
  }
97
105
  }
98
106
  async executeQuery(query, params = []) {
99
- return this.targetPool.query(query, params);
107
+ return this.connections.targetPool.query(query, params);
100
108
  }
101
109
  async queryTargetDb(query, params) {
102
- return this.targetPool.query(query, params);
110
+ return this.connections.targetPool.query(query, params);
103
111
  }
104
112
  async createMissingColumns(tableName, schema, columns) {
105
113
  for (const column of columns) {
@@ -107,11 +115,11 @@ class SchemaUtils {
107
115
  const query = `
108
116
  ALTER TABLE "${schema}"."${tableName}"
109
117
  ADD COLUMN IF NOT EXISTS "${column.column_name}" ${column.data_type}
110
- ${column.is_nullable === 'NO' ? 'NOT NULL' : ''}
111
- ${column.column_default ? `DEFAULT ${column.column_default}` : ''}
118
+ ${column.is_nullable === "NO" ? "NOT NULL" : ""}
119
+ ${column.column_default ? `DEFAULT ${column.column_default}` : ""}
112
120
  `;
113
- await this.targetPool.query(query);
114
- if (column.constraint_type === 'UNIQUE') {
121
+ await this.connections.targetPool.query(query);
122
+ if (column.constraint_type === "UNIQUE") {
115
123
  const constraintName = `${tableName}_${column.column_name}_unique`;
116
124
  const uniqueQuery = `
117
125
  DO $$
@@ -124,7 +132,7 @@ class SchemaUtils {
124
132
  END IF;
125
133
  END $$;
126
134
  `;
127
- await this.targetPool.query(uniqueQuery);
135
+ await this.connections.targetPool.query(uniqueQuery);
128
136
  }
129
137
  }
130
138
  catch (error) {
@@ -135,10 +143,10 @@ class SchemaUtils {
135
143
  }
136
144
  async createSchema(schemaName) {
137
145
  try {
138
- await this.targetPool.query(`CREATE SCHEMA IF NOT EXISTS "${schemaName}"`);
146
+ await this.connections.targetPool.query(`CREATE SCHEMA IF NOT EXISTS "${schemaName}"`);
139
147
  const tables = await this.getPublicTables();
140
148
  for (const table of tables) {
141
- await this.targetPool.query(`
149
+ await this.connections.targetPool.query(`
142
150
  CREATE TABLE IF NOT EXISTS "${schemaName}"."${table}" (
143
151
  LIKE public."${table}" INCLUDING ALL
144
152
  );
@@ -152,12 +160,47 @@ class SchemaUtils {
152
160
  }
153
161
  }
154
162
  async getPublicTables() {
155
- const result = await this.targetPool.query(`
163
+ const result = await this.connections.targetPool.query(`
156
164
  SELECT tablename
157
165
  FROM pg_tables
158
166
  WHERE schemaname = 'public'
159
167
  `);
160
- return result.rows.map(row => row.tablename);
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
+ }
161
204
  }
162
205
  }
163
206
  exports.SchemaUtils = SchemaUtils;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/schema-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/schema-utils.ts"],"names":[],"mappings":"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"}
@@ -90,11 +90,18 @@ class TenantMigrator {
90
90
  const bIndex = sortedTables.indexOf(b.name);
91
91
  return aIndex - bIndex;
92
92
  })
93
- .filter(entity => sortedTables.includes(entity.name));
93
+ .filter((entity) => sortedTables.includes(entity.name));
94
94
  this.logger.log(`Migration order: ${orderedEntities.map((e) => e.name).join(" -> ")}`);
95
95
  this.logger.log(`Discovered ${entityTypes.length} entity types for migration`);
96
96
  for (const entity of orderedEntities) {
97
- await this.batchMigrator.migrateEntityDataInBatches(tenantPrisma, entity, providerId, tenantId);
97
+ await this.batchMigrator.migrateEntityDataInBatches("public", tenantId, {
98
+ type: "tenant",
99
+ idField: entity.idField,
100
+ sourceTable: entity.name,
101
+ targetTable: entity.name,
102
+ filterColumn: entity.filterColumn,
103
+ via: entity.filterVia,
104
+ }, providerId === null || providerId === void 0 ? void 0 : providerId.toString());
98
105
  }
99
106
  this.logger.log(`Completed migration for tenant ${tenantId}`);
100
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-migrator.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/tenant-migrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant-migrator.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/tenant-migrator.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
- import { ColumnSchema } from "./types";
2
1
  export declare class TypecastManager {
3
- getTypecastForColumn(column: ColumnSchema): string;
4
- getEnumCastExpression(schemaName: string, enumType: string, paramIndex: number): string;
2
+ private readonly prisma;
3
+ private readonly cache;
4
+ private readonly compatibilityMap;
5
+ getTypecastForColumn(tableName: string, columnName: string): Promise<string | undefined>;
6
+ private loadTableSchema;
7
+ areTypesCompatible(sourceType: string, targetType: string): boolean;
8
+ castValue(value: any, sourceType: string, targetType: string): any;
5
9
  }
@@ -1,34 +1,178 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TypecastManager = void 0;
4
+ const client_1 = require("@prisma/client");
4
5
  class TypecastManager {
5
- getTypecastForColumn(column) {
6
- var _a;
7
- switch (column.data_type.toLowerCase()) {
8
- case "numeric":
9
- case "decimal":
10
- return "::numeric";
11
- case "integer":
12
- return "::integer";
13
- case "bigint":
14
- return "::bigint";
15
- case "boolean":
16
- return "::boolean";
17
- case "timestamp":
18
- return "::timestamp";
19
- case "timestamptz":
20
- return "::timestamptz";
21
- case "user-defined":
22
- if ((_a = column.udt_name) === null || _a === void 0 ? void 0 : _a.startsWith("enum_")) {
23
- return `::${column.udt_name}`;
24
- }
25
- return "";
26
- default:
27
- return "";
6
+ constructor() {
7
+ this.prisma = new client_1.PrismaClient();
8
+ this.cache = new Map();
9
+ this.compatibilityMap = {
10
+ integer: ["bigint", "smallint", "numeric", "decimal"],
11
+ bigint: ["integer", "numeric", "decimal"],
12
+ smallint: ["integer", "bigint", "numeric", "decimal"],
13
+ numeric: [
14
+ "integer",
15
+ "bigint",
16
+ "smallint",
17
+ "decimal",
18
+ "real",
19
+ "double precision",
20
+ ],
21
+ decimal: [
22
+ "numeric",
23
+ "integer",
24
+ "bigint",
25
+ "smallint",
26
+ "real",
27
+ "double precision",
28
+ ],
29
+ real: ["numeric", "decimal", "double precision"],
30
+ "double precision": ["numeric", "decimal", "real"],
31
+ "character varying": ["text", "char", "varchar"],
32
+ varchar: ["text", "character varying", "char"],
33
+ char: ["text", "character varying", "varchar"],
34
+ text: ["character varying", "varchar", "char"],
35
+ timestamp: [
36
+ "timestamptz",
37
+ "timestamp without time zone",
38
+ "timestamp with time zone",
39
+ ],
40
+ timestamptz: [
41
+ "timestamp",
42
+ "timestamp without time zone",
43
+ "timestamp with time zone",
44
+ ],
45
+ date: ["timestamp", "timestamptz"],
46
+ boolean: ["bool"],
47
+ json: ["jsonb"],
48
+ jsonb: ["json"],
49
+ };
50
+ }
51
+ async getTypecastForColumn(tableName, columnName) {
52
+ if (!this.cache.has(tableName)) {
53
+ await this.loadTableSchema(tableName);
54
+ }
55
+ const tableSchema = this.cache.get(tableName);
56
+ return tableSchema === null || tableSchema === void 0 ? void 0 : tableSchema.get(columnName);
57
+ }
58
+ async loadTableSchema(tableName) {
59
+ const columns = await this.prisma.$queryRawUnsafe(`
60
+ SELECT column_name, data_type, udt_name, is_nullable
61
+ FROM information_schema.columns
62
+ WHERE table_name = '${tableName}'
63
+ `);
64
+ const tableSchema = new Map();
65
+ for (const column of columns) {
66
+ const { column_name, data_type, udt_name, is_nullable } = column;
67
+ let typecast;
68
+ switch (data_type.toLowerCase()) {
69
+ case "timestamp with time zone":
70
+ case "timestamp without time zone":
71
+ case "timestamptz":
72
+ typecast = "::timestamp with time zone";
73
+ break;
74
+ case "timestamp":
75
+ typecast = "::timestamp";
76
+ break;
77
+ case "integer":
78
+ typecast = "::integer";
79
+ break;
80
+ case "bigint":
81
+ typecast = "::bigint";
82
+ break;
83
+ case "boolean":
84
+ typecast = "::boolean";
85
+ break;
86
+ case "numeric":
87
+ case "decimal":
88
+ typecast = "::numeric";
89
+ break;
90
+ case "double precision":
91
+ typecast = "::double precision";
92
+ break;
93
+ case "text":
94
+ case "character varying":
95
+ case "varchar":
96
+ typecast = "::text";
97
+ break;
98
+ case "date":
99
+ typecast = "::date";
100
+ break;
101
+ case "time":
102
+ case "time without time zone":
103
+ typecast = "::time";
104
+ break;
105
+ case "time with time zone":
106
+ typecast = "::timetz";
107
+ break;
108
+ case "json":
109
+ typecast = "::json";
110
+ break;
111
+ case "jsonb":
112
+ typecast = "::jsonb";
113
+ break;
114
+ case "uuid":
115
+ typecast = "::uuid";
116
+ break;
117
+ default:
118
+ if (udt_name.startsWith("_")) {
119
+ typecast = `::${udt_name.substring(1)}[]`;
120
+ }
121
+ else if (udt_name.startsWith("enum_")) {
122
+ typecast = `::${udt_name}`;
123
+ }
124
+ else {
125
+ typecast = undefined;
126
+ }
127
+ }
128
+ tableSchema.set(column_name, typecast);
129
+ }
130
+ this.cache.set(tableName, tableSchema);
131
+ }
132
+ areTypesCompatible(sourceType, targetType) {
133
+ if (sourceType.toLowerCase() === targetType.toLowerCase()) {
134
+ return true;
28
135
  }
136
+ const compatibleTypes = this.compatibilityMap[sourceType.toLowerCase()] || [];
137
+ return compatibleTypes.includes(targetType.toLowerCase());
29
138
  }
30
- getEnumCastExpression(schemaName, enumType, paramIndex) {
31
- return `CAST($${paramIndex} AS "${schemaName}".${enumType})`;
139
+ castValue(value, sourceType, targetType) {
140
+ if (value === null || value === undefined) {
141
+ return null;
142
+ }
143
+ try {
144
+ switch (targetType.toLowerCase()) {
145
+ case "integer":
146
+ case "bigint":
147
+ case "smallint":
148
+ return parseInt(value, 10);
149
+ case "numeric":
150
+ case "decimal":
151
+ case "real":
152
+ case "double precision":
153
+ return parseFloat(value);
154
+ case "boolean":
155
+ return Boolean(value);
156
+ case "json":
157
+ case "jsonb":
158
+ return typeof value === "string" ? JSON.parse(value) : value;
159
+ case "timestamp":
160
+ case "timestamptz":
161
+ return new Date(value).toISOString();
162
+ case "date":
163
+ return new Date(value).toISOString().split("T")[0];
164
+ case "text":
165
+ case "character varying":
166
+ case "varchar":
167
+ case "char":
168
+ return String(value);
169
+ default:
170
+ return value;
171
+ }
172
+ }
173
+ catch (error) {
174
+ throw new Error(`Error al convertir valor "${value}" de ${sourceType} a ${targetType}: ${error.message}`);
175
+ }
32
176
  }
33
177
  }
34
178
  exports.TypecastManager = TypecastManager;
@@ -1 +1 @@
1
- {"version":3,"file":"typecast-manager.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/typecast-manager.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAC1B,oBAAoB,CAAC,MAAoB;;QACvC,QAAQ,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;YACvC,KAAK,SAAS,CAAC;YACf,KAAK,SAAS;gBACZ,OAAO,WAAW,CAAC;YACrB,KAAK,SAAS;gBACZ,OAAO,WAAW,CAAC;YACrB,KAAK,QAAQ;gBACX,OAAO,UAAU,CAAC;YACpB,KAAK,SAAS;gBACZ,OAAO,WAAW,CAAC;YACrB,KAAK,WAAW;gBACd,OAAO,aAAa,CAAC;YACvB,KAAK,aAAa;gBAChB,OAAO,eAAe,CAAC;YACzB,KAAK,cAAc;gBAEjB,IAAI,MAAA,MAAM,CAAC,QAAQ,0CAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzC,OAAO,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAChC,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAGD,qBAAqB,CACnB,UAAkB,EAClB,QAAgB,EAChB,UAAkB;QAElB,OAAO,SAAS,UAAU,QAAQ,UAAU,KAAK,QAAQ,GAAG,CAAC;IAC/D,CAAC;CACF;AAnCD,0CAmCC"}
1
+ {"version":3,"file":"typecast-manager.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/typecast-manager.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  import { Pool } from "pg";
2
2
  import { PrismaClient } from "@prisma/client";
3
+ export interface DatabaseConnection {
4
+ pool?: Pool;
5
+ prisma?: PrismaClient;
6
+ query: (sql: string, params?: any[]) => Promise<any>;
7
+ sourceId: string;
8
+ }
3
9
  export interface DatabaseConnections {
4
- sourcePool: Pool;
10
+ sourceConnections?: DatabaseConnection[];
11
+ sourcePool?: Pool;
5
12
  targetPool: Pool;
6
- sourcePrisma: PrismaClient;
7
13
  targetPrisma: PrismaClient;
14
+ sourcePrisma?: PrismaClient;
8
15
  }
9
16
  export interface ColumnSchema {
10
17
  table_name: string;
@@ -32,3 +39,62 @@ export interface EnumCastValue {
32
39
  value: any;
33
40
  enumType: string;
34
41
  }
42
+ export interface MigrationOptions {
43
+ publicOnly?: boolean;
44
+ multiTenant?: boolean;
45
+ sourceSchema?: string;
46
+ targetSchema?: string;
47
+ forceSingleTenant?: boolean;
48
+ configPath?: string;
49
+ batchSize?: number;
50
+ retryAttempts?: number;
51
+ validateData?: boolean;
52
+ logLevel?: "debug" | "info" | "warn" | "error";
53
+ }
54
+ export interface ColumnConfig {
55
+ sourceColumn?: string;
56
+ targetColumn?: string;
57
+ type?: string;
58
+ nullable?: boolean;
59
+ defaultValue?: any;
60
+ transform?: (value: any) => any;
61
+ }
62
+ export interface TableConfig {
63
+ type: "public" | "filteredPublic" | "tenantInfo" | "tenant";
64
+ idField: string;
65
+ filterColumn?: string;
66
+ via?: string;
67
+ providerLink?: string;
68
+ tenantKey?: string;
69
+ dependencies?: string[];
70
+ sourceTable?: string;
71
+ targetTable?: string;
72
+ columns?: Record<string, ColumnConfig>;
73
+ skipIfExists?: boolean;
74
+ batchSize?: number;
75
+ }
76
+ export interface ExtendedTableConfig extends TableConfig {
77
+ processed?: boolean;
78
+ retryCount?: number;
79
+ lastError?: Error;
80
+ }
81
+ export interface ExtendedMigrationConfig {
82
+ tables: Record<string, ExtendedTableConfig>;
83
+ version: string;
84
+ sourceSchema?: string;
85
+ targetSchema?: string;
86
+ }
87
+ export interface MigrationConfig {
88
+ commonSchema: string;
89
+ tables: Record<string, TableConfig>;
90
+ tenantInfo: {
91
+ sourceTable: string;
92
+ tenantIdColumn: string;
93
+ providerIdColumn: string;
94
+ };
95
+ migrationPriorities?: {
96
+ high?: string[];
97
+ medium?: string[];
98
+ low?: string[];
99
+ };
100
+ }
@@ -0,0 +1,26 @@
1
+ export declare class TableIndexFixer {
2
+ private readonly targetUrl;
3
+ private readonly logger;
4
+ private readonly targetPool;
5
+ private readonly logDir;
6
+ private readonly logPath;
7
+ private fixedIndexes;
8
+ constructor(targetUrl?: string);
9
+ fixIndexes(): Promise<void>;
10
+ private getSchemas;
11
+ private fixIndexesForSchema;
12
+ private getTablesForSchema;
13
+ private fixIndexesForTable;
14
+ private ensureCriticalUserTableIndexes;
15
+ private fixUserTableSequences;
16
+ private removeRedundantIndexes;
17
+ private fixSequences;
18
+ private getTableInfo;
19
+ private getTableIndexes;
20
+ private createIndex;
21
+ private fixCommonIndexIssues;
22
+ private getTableColumns;
23
+ private fixForeignKeyIndexes;
24
+ private saveFixLog;
25
+ private cleanup;
26
+ }