@javalabs/prisma-client 1.0.30 → 1.0.31

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 (80) hide show
  1. package/.github/CODEOWNERS +1 -1
  2. package/README.md +269 -269
  3. package/dist/scripts/add-uuid-to-table.js +32 -32
  4. package/dist/scripts/data-migration/batch-migrator.js +12 -12
  5. package/dist/scripts/data-migration/data-transformer.js +14 -14
  6. package/dist/scripts/data-migration/dependency-resolver.js +23 -23
  7. package/dist/scripts/data-migration/entity-discovery.js +68 -68
  8. package/dist/scripts/data-migration/foreign-key-manager.js +23 -23
  9. package/dist/scripts/data-migration/migration-tool.js +5 -5
  10. package/dist/scripts/data-migration/schema-utils.js +74 -74
  11. package/dist/scripts/data-migration/typecast-manager.js +4 -4
  12. package/dist/scripts/database-initializer.js +5 -5
  13. package/dist/scripts/drop-database.js +5 -5
  14. package/dist/scripts/fix-data-types.js +53 -53
  15. package/dist/scripts/fix-enum-values.js +34 -34
  16. package/dist/scripts/fix-schema-discrepancies.js +40 -40
  17. package/dist/scripts/fix-table-indexes.js +81 -81
  18. package/dist/scripts/migrate-schema-structure.js +4 -4
  19. package/dist/scripts/migrate-uuid.js +19 -19
  20. package/dist/scripts/post-migration-validator.js +49 -49
  21. package/dist/scripts/pre-migration-validator.js +107 -107
  22. package/dist/scripts/reset-database.js +21 -21
  23. package/dist/scripts/retry-failed-migrations.js +28 -28
  24. package/dist/scripts/run-migration.js +5 -5
  25. package/dist/scripts/schema-sync.js +18 -18
  26. package/dist/scripts/sequence-sync-cli.js +55 -55
  27. package/dist/scripts/sequence-synchronizer.js +20 -20
  28. package/dist/scripts/sync-enum-types.js +30 -30
  29. package/dist/scripts/sync-enum-values.js +52 -52
  30. package/dist/scripts/truncate-database.js +10 -10
  31. package/dist/scripts/verify-migration-setup.js +10 -10
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/migration-config.json +63 -63
  34. package/migration-config.json.bk +95 -95
  35. package/migrations/add_reserved_amount.sql +7 -7
  36. package/package.json +44 -44
  37. package/prisma/migrations/add_uuid_to_transactions.sql +13 -13
  38. package/prisma/schema.prisma +636 -609
  39. package/src/index.ts +23 -23
  40. package/src/prisma-factory.service.ts +40 -40
  41. package/src/prisma.module.ts +9 -9
  42. package/src/prisma.service.ts +16 -16
  43. package/src/scripts/add-uuid-to-table.ts +138 -138
  44. package/src/scripts/create-tenant-schemas.ts +145 -145
  45. package/src/scripts/data-migration/batch-migrator.ts +248 -248
  46. package/src/scripts/data-migration/data-transformer.ts +426 -426
  47. package/src/scripts/data-migration/db-connector.ts +120 -120
  48. package/src/scripts/data-migration/dependency-resolver.ts +174 -174
  49. package/src/scripts/data-migration/entity-discovery.ts +196 -196
  50. package/src/scripts/data-migration/foreign-key-manager.ts +277 -277
  51. package/src/scripts/data-migration/migration-config.json +63 -63
  52. package/src/scripts/data-migration/migration-tool.ts +509 -509
  53. package/src/scripts/data-migration/schema-utils.ts +248 -248
  54. package/src/scripts/data-migration/tenant-migrator.ts +201 -201
  55. package/src/scripts/data-migration/typecast-manager.ts +193 -193
  56. package/src/scripts/data-migration/types.ts +113 -113
  57. package/src/scripts/database-initializer.ts +49 -49
  58. package/src/scripts/drop-database.ts +104 -104
  59. package/src/scripts/dump-source-db.sh +61 -61
  60. package/src/scripts/encrypt-user-passwords.ts +36 -36
  61. package/src/scripts/error-handler.ts +117 -117
  62. package/src/scripts/fix-data-types.ts +241 -241
  63. package/src/scripts/fix-enum-values.ts +357 -357
  64. package/src/scripts/fix-schema-discrepancies.ts +317 -317
  65. package/src/scripts/fix-table-indexes.ts +601 -601
  66. package/src/scripts/migrate-schema-structure.ts +90 -90
  67. package/src/scripts/migrate-uuid.ts +76 -76
  68. package/src/scripts/post-migration-validator.ts +526 -526
  69. package/src/scripts/pre-migration-validator.ts +610 -610
  70. package/src/scripts/reset-database.ts +263 -263
  71. package/src/scripts/retry-failed-migrations.ts +416 -416
  72. package/src/scripts/run-migration.ts +707 -707
  73. package/src/scripts/schema-sync.ts +128 -128
  74. package/src/scripts/sequence-sync-cli.ts +416 -416
  75. package/src/scripts/sequence-synchronizer.ts +127 -127
  76. package/src/scripts/sync-enum-types.ts +170 -170
  77. package/src/scripts/sync-enum-values.ts +563 -563
  78. package/src/scripts/truncate-database.ts +123 -123
  79. package/src/scripts/verify-migration-setup.ts +135 -135
  80. package/tsconfig.json +17 -17
@@ -1,129 +1,129 @@
1
- import { Logger } from "@nestjs/common";
2
- import { DatabaseConnector } from "./data-migration/db-connector";
3
- import * as fs from "fs";
4
- import * as path from "path";
5
-
6
- async function main() {
7
- const logger = new Logger("SchemaSyncTool");
8
- logger.log("Starting schema synchronization");
9
-
10
- // Crear conexiones a las bases de datos
11
- const connections = DatabaseConnector.createConnections();
12
-
13
- try {
14
- // Obtener todas las tablas de la base de datos origen
15
- const sourceTables = await getTablesFromDatabase(connections.sourcePool);
16
- logger.log(`Found ${sourceTables.length} tables in source database`);
17
-
18
- // Obtener todas las tablas de la base de datos destino
19
- const targetTables = await getTablesFromDatabase(connections.targetPool);
20
- logger.log(`Found ${targetTables.length} tables in target database`);
21
-
22
- // Comparar esquemas y generar SQL para sincronizar
23
- const syncScript = await generateSyncScript(
24
- connections.sourcePool,
25
- connections.targetPool,
26
- sourceTables,
27
- targetTables
28
- );
29
-
30
- // Guardar el script SQL
31
- const timestamp = new Date().toISOString().replace(/:/g, "-").split(".")[0];
32
- const filePath = path.join(
33
- process.cwd(),
34
- `schema-sync-${timestamp}.sql`
35
- );
36
- fs.writeFileSync(filePath, syncScript);
37
-
38
- logger.log(`Schema synchronization script saved to ${filePath}`);
39
- logger.log("Review the script and execute it manually to synchronize schemas");
40
-
41
- } catch (error) {
42
- logger.error(`Error in schema synchronization: ${error.message}`, error.stack);
43
- } finally {
44
- // Cerrar conexiones
45
- await DatabaseConnector.cleanup(connections);
46
- }
47
- }
48
-
49
- async function getTablesFromDatabase(pool: any): Promise<string[]> {
50
- const query = `
51
- SELECT table_name
52
- FROM information_schema.tables
53
- WHERE table_schema = 'public'
54
- AND table_type = 'BASE TABLE'
55
- `;
56
-
57
- const result = await pool.query(query);
58
- return result.rows.map(row => row.table_name);
59
- }
60
-
61
- async function generateSyncScript(
62
- sourcePool: any,
63
- targetPool: any,
64
- sourceTables: string[],
65
- targetTables: string[]
66
- ): Promise<string> {
67
- let script = "-- Schema synchronization script\n\n";
68
-
69
- // Procesar cada tabla de la fuente
70
- for (const table of sourceTables) {
71
- // Obtener columnas de la tabla fuente
72
- const sourceColumns = await getTableColumns(sourcePool, table);
73
-
74
- if (targetTables.includes(table)) {
75
- // La tabla existe en ambas bases de datos, comparar columnas
76
- const targetColumns = await getTableColumns(targetPool, table);
77
-
78
- // Encontrar columnas que faltan en el destino
79
- const missingColumns = sourceColumns.filter(
80
- sourceCol => !targetColumns.some(targetCol => targetCol.column_name === sourceCol.column_name)
81
- );
82
-
83
- // Generar SQL para agregar columnas faltantes
84
- for (const column of missingColumns) {
85
- script += `-- Adding missing column ${column.column_name} to table ${table}\n`;
86
- script += `ALTER TABLE "${table}" ADD COLUMN "${column.column_name}" ${column.data_type}`;
87
-
88
- // Agregar restricciones si es necesario
89
- if (column.is_nullable === 'NO') {
90
- script += " NOT NULL";
91
- }
92
-
93
- script += ";\n\n";
94
- }
95
- } else {
96
- // La tabla no existe en el destino, generar SQL para crearla
97
- script += `-- Table ${table} does not exist in target database\n`;
98
- script += `-- Consider running a full schema migration instead\n\n`;
99
- }
100
- }
101
-
102
- return script;
103
- }
104
-
105
- async function getTableColumns(pool: any, table: string): Promise<any[]> {
106
- const query = `
107
- SELECT
108
- column_name,
109
- data_type,
110
- is_nullable,
111
- column_default
112
- FROM
113
- information_schema.columns
114
- WHERE
115
- table_schema = 'public'
116
- AND table_name = $1
117
- ORDER BY
118
- ordinal_position
119
- `;
120
-
121
- const result = await pool.query(query, [table]);
122
- return result.rows;
123
- }
124
-
125
- // Ejecutar el script
126
- main().catch(e => {
127
- console.error(e);
128
- process.exit(1);
1
+ import { Logger } from "@nestjs/common";
2
+ import { DatabaseConnector } from "./data-migration/db-connector";
3
+ import * as fs from "fs";
4
+ import * as path from "path";
5
+
6
+ async function main() {
7
+ const logger = new Logger("SchemaSyncTool");
8
+ logger.log("Starting schema synchronization");
9
+
10
+ // Crear conexiones a las bases de datos
11
+ const connections = DatabaseConnector.createConnections();
12
+
13
+ try {
14
+ // Obtener todas las tablas de la base de datos origen
15
+ const sourceTables = await getTablesFromDatabase(connections.sourcePool);
16
+ logger.log(`Found ${sourceTables.length} tables in source database`);
17
+
18
+ // Obtener todas las tablas de la base de datos destino
19
+ const targetTables = await getTablesFromDatabase(connections.targetPool);
20
+ logger.log(`Found ${targetTables.length} tables in target database`);
21
+
22
+ // Comparar esquemas y generar SQL para sincronizar
23
+ const syncScript = await generateSyncScript(
24
+ connections.sourcePool,
25
+ connections.targetPool,
26
+ sourceTables,
27
+ targetTables
28
+ );
29
+
30
+ // Guardar el script SQL
31
+ const timestamp = new Date().toISOString().replace(/:/g, "-").split(".")[0];
32
+ const filePath = path.join(
33
+ process.cwd(),
34
+ `schema-sync-${timestamp}.sql`
35
+ );
36
+ fs.writeFileSync(filePath, syncScript);
37
+
38
+ logger.log(`Schema synchronization script saved to ${filePath}`);
39
+ logger.log("Review the script and execute it manually to synchronize schemas");
40
+
41
+ } catch (error) {
42
+ logger.error(`Error in schema synchronization: ${error.message}`, error.stack);
43
+ } finally {
44
+ // Cerrar conexiones
45
+ await DatabaseConnector.cleanup(connections);
46
+ }
47
+ }
48
+
49
+ async function getTablesFromDatabase(pool: any): Promise<string[]> {
50
+ const query = `
51
+ SELECT table_name
52
+ FROM information_schema.tables
53
+ WHERE table_schema = 'public'
54
+ AND table_type = 'BASE TABLE'
55
+ `;
56
+
57
+ const result = await pool.query(query);
58
+ return result.rows.map(row => row.table_name);
59
+ }
60
+
61
+ async function generateSyncScript(
62
+ sourcePool: any,
63
+ targetPool: any,
64
+ sourceTables: string[],
65
+ targetTables: string[]
66
+ ): Promise<string> {
67
+ let script = "-- Schema synchronization script\n\n";
68
+
69
+ // Procesar cada tabla de la fuente
70
+ for (const table of sourceTables) {
71
+ // Obtener columnas de la tabla fuente
72
+ const sourceColumns = await getTableColumns(sourcePool, table);
73
+
74
+ if (targetTables.includes(table)) {
75
+ // La tabla existe en ambas bases de datos, comparar columnas
76
+ const targetColumns = await getTableColumns(targetPool, table);
77
+
78
+ // Encontrar columnas que faltan en el destino
79
+ const missingColumns = sourceColumns.filter(
80
+ sourceCol => !targetColumns.some(targetCol => targetCol.column_name === sourceCol.column_name)
81
+ );
82
+
83
+ // Generar SQL para agregar columnas faltantes
84
+ for (const column of missingColumns) {
85
+ script += `-- Adding missing column ${column.column_name} to table ${table}\n`;
86
+ script += `ALTER TABLE "${table}" ADD COLUMN "${column.column_name}" ${column.data_type}`;
87
+
88
+ // Agregar restricciones si es necesario
89
+ if (column.is_nullable === 'NO') {
90
+ script += " NOT NULL";
91
+ }
92
+
93
+ script += ";\n\n";
94
+ }
95
+ } else {
96
+ // La tabla no existe en el destino, generar SQL para crearla
97
+ script += `-- Table ${table} does not exist in target database\n`;
98
+ script += `-- Consider running a full schema migration instead\n\n`;
99
+ }
100
+ }
101
+
102
+ return script;
103
+ }
104
+
105
+ async function getTableColumns(pool: any, table: string): Promise<any[]> {
106
+ const query = `
107
+ SELECT
108
+ column_name,
109
+ data_type,
110
+ is_nullable,
111
+ column_default
112
+ FROM
113
+ information_schema.columns
114
+ WHERE
115
+ table_schema = 'public'
116
+ AND table_name = $1
117
+ ORDER BY
118
+ ordinal_position
119
+ `;
120
+
121
+ const result = await pool.query(query, [table]);
122
+ return result.rows;
123
+ }
124
+
125
+ // Ejecutar el script
126
+ main().catch(e => {
127
+ console.error(e);
128
+ process.exit(1);
129
129
  });