@codemastersolutions/db-utility 0.0.1

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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSE.es +21 -0
  3. package/LICENSE.pt-BR +21 -0
  4. package/README.es.md +155 -0
  5. package/README.md +155 -0
  6. package/README.pt-BR.md +155 -0
  7. package/dist/cli/index.d.ts +3 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +314 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/config/AppConfig.d.ts +19 -0
  12. package/dist/config/AppConfig.d.ts.map +1 -0
  13. package/dist/config/AppConfig.js +142 -0
  14. package/dist/config/AppConfig.js.map +1 -0
  15. package/dist/config/ConfigInitializer.d.ts +10 -0
  16. package/dist/config/ConfigInitializer.d.ts.map +1 -0
  17. package/dist/config/ConfigInitializer.js +37 -0
  18. package/dist/config/ConfigInitializer.js.map +1 -0
  19. package/dist/config/ConfigLoader.d.ts +7 -0
  20. package/dist/config/ConfigLoader.d.ts.map +1 -0
  21. package/dist/config/ConfigLoader.js +94 -0
  22. package/dist/config/ConfigLoader.js.map +1 -0
  23. package/dist/database/ConnectionFactory.d.ts +5 -0
  24. package/dist/database/ConnectionFactory.d.ts.map +1 -0
  25. package/dist/database/ConnectionFactory.js +22 -0
  26. package/dist/database/ConnectionFactory.js.map +1 -0
  27. package/dist/database/SqlSafety.d.ts +7 -0
  28. package/dist/database/SqlSafety.d.ts.map +1 -0
  29. package/dist/database/SqlSafety.js +47 -0
  30. package/dist/database/SqlSafety.js.map +1 -0
  31. package/dist/database/connectors/MssqlConnector.d.ts +13 -0
  32. package/dist/database/connectors/MssqlConnector.d.ts.map +1 -0
  33. package/dist/database/connectors/MssqlConnector.js +72 -0
  34. package/dist/database/connectors/MssqlConnector.js.map +1 -0
  35. package/dist/database/connectors/MysqlConnector.d.ts +12 -0
  36. package/dist/database/connectors/MysqlConnector.d.ts.map +1 -0
  37. package/dist/database/connectors/MysqlConnector.js +70 -0
  38. package/dist/database/connectors/MysqlConnector.js.map +1 -0
  39. package/dist/database/connectors/PostgresConnector.d.ts +12 -0
  40. package/dist/database/connectors/PostgresConnector.d.ts.map +1 -0
  41. package/dist/database/connectors/PostgresConnector.js +65 -0
  42. package/dist/database/connectors/PostgresConnector.js.map +1 -0
  43. package/dist/errors/DbUtilityError.d.ts +7 -0
  44. package/dist/errors/DbUtilityError.d.ts.map +1 -0
  45. package/dist/errors/DbUtilityError.js +15 -0
  46. package/dist/errors/DbUtilityError.js.map +1 -0
  47. package/dist/generators/GeneratorTypes.d.ts +15 -0
  48. package/dist/generators/GeneratorTypes.d.ts.map +1 -0
  49. package/dist/generators/GeneratorTypes.js +3 -0
  50. package/dist/generators/GeneratorTypes.js.map +1 -0
  51. package/dist/generators/GeneratorWriter.d.ts +6 -0
  52. package/dist/generators/GeneratorWriter.d.ts.map +1 -0
  53. package/dist/generators/GeneratorWriter.js +25 -0
  54. package/dist/generators/GeneratorWriter.js.map +1 -0
  55. package/dist/generators/MongooseGenerator.d.ts +10 -0
  56. package/dist/generators/MongooseGenerator.d.ts.map +1 -0
  57. package/dist/generators/MongooseGenerator.js +75 -0
  58. package/dist/generators/MongooseGenerator.js.map +1 -0
  59. package/dist/generators/PrismaGenerator.d.ts +9 -0
  60. package/dist/generators/PrismaGenerator.d.ts.map +1 -0
  61. package/dist/generators/PrismaGenerator.js +87 -0
  62. package/dist/generators/PrismaGenerator.js.map +1 -0
  63. package/dist/generators/SequelizeGenerator.d.ts +12 -0
  64. package/dist/generators/SequelizeGenerator.d.ts.map +1 -0
  65. package/dist/generators/SequelizeGenerator.js +243 -0
  66. package/dist/generators/SequelizeGenerator.js.map +1 -0
  67. package/dist/generators/TypeORMGenerator.d.ts +12 -0
  68. package/dist/generators/TypeORMGenerator.d.ts.map +1 -0
  69. package/dist/generators/TypeORMGenerator.js +216 -0
  70. package/dist/generators/TypeORMGenerator.js.map +1 -0
  71. package/dist/i18n/messages.d.ts +49 -0
  72. package/dist/i18n/messages.d.ts.map +1 -0
  73. package/dist/i18n/messages.js +149 -0
  74. package/dist/i18n/messages.js.map +1 -0
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +8 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/introspection/DataExtractor.d.ts +10 -0
  80. package/dist/introspection/DataExtractor.d.ts.map +1 -0
  81. package/dist/introspection/DataExtractor.js +52 -0
  82. package/dist/introspection/DataExtractor.js.map +1 -0
  83. package/dist/introspection/IntrospectionLogger.d.ts +7 -0
  84. package/dist/introspection/IntrospectionLogger.d.ts.map +1 -0
  85. package/dist/introspection/IntrospectionLogger.js +30 -0
  86. package/dist/introspection/IntrospectionLogger.js.map +1 -0
  87. package/dist/introspection/IntrospectionService.d.ts +10 -0
  88. package/dist/introspection/IntrospectionService.d.ts.map +1 -0
  89. package/dist/introspection/IntrospectionService.js +37 -0
  90. package/dist/introspection/IntrospectionService.js.map +1 -0
  91. package/dist/introspection/Introspector.d.ts +11 -0
  92. package/dist/introspection/Introspector.d.ts.map +1 -0
  93. package/dist/introspection/Introspector.js +11 -0
  94. package/dist/introspection/Introspector.js.map +1 -0
  95. package/dist/introspection/MssqlIntrospector.d.ts +11 -0
  96. package/dist/introspection/MssqlIntrospector.d.ts.map +1 -0
  97. package/dist/introspection/MssqlIntrospector.js +193 -0
  98. package/dist/introspection/MssqlIntrospector.js.map +1 -0
  99. package/dist/introspection/MysqlIntrospector.d.ts +10 -0
  100. package/dist/introspection/MysqlIntrospector.d.ts.map +1 -0
  101. package/dist/introspection/MysqlIntrospector.js +175 -0
  102. package/dist/introspection/MysqlIntrospector.js.map +1 -0
  103. package/dist/introspection/PostgresIntrospector.d.ts +11 -0
  104. package/dist/introspection/PostgresIntrospector.d.ts.map +1 -0
  105. package/dist/introspection/PostgresIntrospector.js +192 -0
  106. package/dist/introspection/PostgresIntrospector.js.map +1 -0
  107. package/dist/testing/ContainerManager.d.ts +7 -0
  108. package/dist/testing/ContainerManager.d.ts.map +1 -0
  109. package/dist/testing/ContainerManager.js +68 -0
  110. package/dist/testing/ContainerManager.js.map +1 -0
  111. package/dist/testing/MigrationTester.d.ts +18 -0
  112. package/dist/testing/MigrationTester.d.ts.map +1 -0
  113. package/dist/testing/MigrationTester.js +399 -0
  114. package/dist/testing/MigrationTester.js.map +1 -0
  115. package/dist/testing/runners/MigrationRunner.d.ts +5 -0
  116. package/dist/testing/runners/MigrationRunner.d.ts.map +1 -0
  117. package/dist/testing/runners/MigrationRunner.js +3 -0
  118. package/dist/testing/runners/MigrationRunner.js.map +1 -0
  119. package/dist/testing/runners/SequelizeRunner.d.ts +8 -0
  120. package/dist/testing/runners/SequelizeRunner.d.ts.map +1 -0
  121. package/dist/testing/runners/SequelizeRunner.js +71 -0
  122. package/dist/testing/runners/SequelizeRunner.js.map +1 -0
  123. package/dist/testing/runners/TypeORMRunner.d.ts +8 -0
  124. package/dist/testing/runners/TypeORMRunner.d.ts.map +1 -0
  125. package/dist/testing/runners/TypeORMRunner.js +91 -0
  126. package/dist/testing/runners/TypeORMRunner.js.map +1 -0
  127. package/dist/types/database.d.ts +22 -0
  128. package/dist/types/database.d.ts.map +1 -0
  129. package/dist/types/database.js +3 -0
  130. package/dist/types/database.js.map +1 -0
  131. package/dist/types/introspection.d.ts +43 -0
  132. package/dist/types/introspection.d.ts.map +1 -0
  133. package/dist/types/introspection.js +3 -0
  134. package/dist/types/introspection.js.map +1 -0
  135. package/dist/utils/PackageManager.d.ts +13 -0
  136. package/dist/utils/PackageManager.d.ts.map +1 -0
  137. package/dist/utils/PackageManager.js +114 -0
  138. package/dist/utils/PackageManager.js.map +1 -0
  139. package/dist/utils/topologicalSort.d.ts +3 -0
  140. package/dist/utils/topologicalSort.d.ts.map +1 -0
  141. package/dist/utils/topologicalSort.js +37 -0
  142. package/dist/utils/topologicalSort.js.map +1 -0
  143. package/package.json +98 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 CodeMaster Soluções
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/LICENSE.es ADDED
@@ -0,0 +1,21 @@
1
+ Licencia MIT
2
+
3
+ Copyright (c) 2024 CodeMaster Soluções
4
+
5
+ Por la presente se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia
6
+ de este software y de los archivos de documentación asociados (el "Software"), para tratar
7
+ con el Software sin restricciones, incluidos, sin limitación, los derechos
8
+ de uso, copia, modificación, fusión, publicación, distribución, sublicencia y/o venta
9
+ de copias del Software, y para permitir a las personas a las que se les proporcione el Software
10
+ que lo hagan, sujeto a las siguientes condiciones:
11
+
12
+ El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas
13
+ las copias o partes sustanciales del Software.
14
+
15
+ EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O
16
+ IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD,
17
+ IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS
18
+ AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRA
19
+ RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE OTRO TIPO, QUE SURJA DE,
20
+ FUERA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIACIONES EN EL
21
+ SOFTWARE.
package/LICENSE.pt-BR ADDED
@@ -0,0 +1,21 @@
1
+ Licença MIT
2
+
3
+ Copyright (c) 2024 CodeMaster Soluções
4
+
5
+ A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia
6
+ deste software e dos arquivos de documentação associados (o "Software"), para lidar
7
+ com o Software sem restrições, incluindo, sem limitação, os direitos
8
+ de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender
9
+ cópias do Software, e permitir que as pessoas a quem o Software é
10
+ fornecido o façam, sujeito às seguintes condições:
11
+
12
+ O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas
13
+ as cópias ou partes substanciais do Software.
14
+
15
+ O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU
16
+ IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO,
17
+ ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS
18
+ AUTORES OU TITULARES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANOS OU OUTRA
19
+ RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE,
20
+ FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO
21
+ SOFTWARE.
package/README.es.md ADDED
@@ -0,0 +1,155 @@
1
+ # DbUtility
2
+
3
+ > La utilidad de base de datos más poderosa.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@codemastersolutions/db-utility.svg)](https://www.npmjs.com/package/@codemastersolutions/db-utility)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ **[🇺🇸 English](./README.md) | [🇧🇷 Português](./README.pt-BR.md)**
9
+
10
+ DbUtility es una utilidad poderosa para manipular bases de datos Microsoft SQL Server, MySQL y PostgreSQL. Desarrollada en Node.js y TypeScript, su objetivo es simplificar la conexión a bases de datos, introspección, exportación de modelos y creación de migraciones.
11
+
12
+ ## Características
13
+
14
+ - **Soporte Multi-Base de Datos**: Conéctese a Microsoft SQL Server, MySQL y PostgreSQL utilizando controladores oficiales (`mssql`, `mysql2`, `pg`).
15
+ - **Configuración Flexible**: Detalles de conexión a través de CLI, `.env`, archivos de configuración JSON.
16
+ - **Introspección**: Analice su base de datos para listar tablas, vistas, procedimientos almacenados, funciones y disparadores.
17
+ - **Exportación de Modelos**: Exporte tablas de base de datos a modelos de Sequelize, TypeORM y Prisma (Próximamente).
18
+ - **Generación de Migraciones**: Cree migraciones a partir de tablas existentes en la base de datos para Sequelize, TypeORM y Prisma (Próximamente).
19
+
20
+ ## Instalación
21
+
22
+ ```bash
23
+ npm install @codemastersolutions/db-utility
24
+ # o globalmente
25
+ npm install -g @codemastersolutions/db-utility
26
+ ```
27
+
28
+ ## Configuración
29
+
30
+ ### Inicialización
31
+
32
+ Puede inicializar un archivo de configuración predeterminado utilizando el comando CLI:
33
+
34
+ ```bash
35
+ dbutility --init
36
+ ```
37
+
38
+ Si el archivo ya existe, puede forzar la recreación con valores predeterminados:
39
+
40
+ ```bash
41
+ dbutility --init -f
42
+ # o
43
+ dbutility --init --force
44
+ ```
45
+
46
+ ### Archivo de Configuración (dbutility.config.json)
47
+
48
+ El archivo de configuración permite definir el idioma de la CLI, directorios de salida y patrones de nombres.
49
+
50
+ ```json
51
+ {
52
+ "language": "es",
53
+ "introspection": {
54
+ "outputDir": "db-utility-introspect"
55
+ },
56
+ "migrations": {
57
+ "outputDir": "db-utility-migrations",
58
+ "fileNamePattern": "timestamp-prefix"
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Variables de Entorno (.env)
64
+
65
+ También puede configurar DbUtility utilizando variables de entorno. Las configuraciones en el archivo JSON tienen prioridad sobre las variables de entorno si ambos están presentes.
66
+
67
+ ```env
68
+ # Idioma (pt-BR, en, es)
69
+ DB_UTILITY_LANG=es
70
+
71
+ # Directorios de Salida
72
+ DB_UTILITY_INTROSPECTION_OUTPUT_DIR=mi-directorio-introspect
73
+ DB_UTILITY_MIGRATIONS_OUTPUT_DIR=mi-directorio-migrations
74
+
75
+ # Patrón de Nombre de Archivo de Migración (timestamp-prefix, prefix-timestamp)
76
+ DB_UTILITY_MIGRATIONS_FILE_NAME_PATTERN=prefix-timestamp
77
+ ```
78
+
79
+ ## CLI - Interfaz de Línea de Comandos
80
+
81
+ > **Nota de Seguridad**: Recomendamos encarecidamente utilizar un usuario de base de datos con permisos de **solo lectura** (SELECT) para realizar operaciones de introspección y exportación. Esto minimiza el riesgo de modificaciones accidentales de datos. La biblioteca DbUtility solo ejecuta consultas de metadatos (estructura de la base de datos) y bloquea comandos que puedan modificar datos o leer filas de tablas de negocio.
82
+
83
+ DbUtility ofrece una CLI robusta para interactuar con sus bases de datos.
84
+
85
+ ### Conectar a la Base de Datos
86
+
87
+ Pruebe la conexión a su base de datos.
88
+
89
+ ```bash
90
+ dbutility connect -t postgres -H localhost -P 5432 -u usuario -p contraseña -d nombre_base_datos --ssl
91
+ ```
92
+
93
+ ### Realizar Introspección
94
+
95
+ Analice el esquema de la base de datos y genere informes de introspección.
96
+
97
+ ```bash
98
+ dbutility introspect -t mysql -H localhost -P 3306 -u usuario -p contraseña -d nombre_base_datos
99
+ ```
100
+
101
+ ### Exportar Modelos
102
+
103
+ Exporte la estructura de la base de datos a modelos ORM.
104
+
105
+ ```bash
106
+ dbutility export --target sequelize --output ./src/models -t postgres ...
107
+ ```
108
+
109
+ ### Generar Migraciones
110
+
111
+ Genere migraciones a partir de la estructura existente de la base de datos. Este comando limpia el directorio de salida antes de generar nuevos archivos.
112
+
113
+ ```bash
114
+ dbutility migrate --target sequelize --output ./migrations -t postgres ...
115
+ ```
116
+
117
+ Opciones:
118
+ - `--data`: Genera migraciones de datos (seeds) para las tablas especificadas.
119
+ - `--only-data`: Genera SOLO migraciones de datos (seeds).
120
+ - `--tables <tables>`: Lista de tablas separadas por comas para exportar datos.
121
+
122
+ Al usar `--data`, los archivos de seed se generan inmediatamente después de la migración de creación de la tabla correspondiente.
123
+
124
+ ### Probar Migraciones
125
+
126
+ Pruebe las migraciones generadas utilizando contenedores Docker.
127
+
128
+ ```bash
129
+ dbutility test --target sequelize --dir ./migrations/sequelize --engines postgres:14
130
+ ```
131
+
132
+ Opciones:
133
+ - `--target <target>`: ORM objetivo (sequelize, typeorm).
134
+ - `--dir <dir>`: Directorio que contiene las migraciones (opcional).
135
+ - `--engines <engines>`: Lista separada por comas de motores de base de datos para probar (ej: postgres:14, mysql:8). Si se omite, intenta leer `database-info.json` generado por el comando migrate.
136
+
137
+ Requisitos:
138
+ - Docker debe estar instalado y en ejecución.
139
+
140
+ ### Opciones de la CLI
141
+
142
+ - `-t, --type <type>`: Tipo de base de datos (postgres, mysql, mssql)
143
+ - `-H, --host <host>`: Host de la base de datos
144
+ - `-P, --port <port>`: Puerto de la base de datos
145
+ - `-u, --username <username>`: Usuario de la base de datos
146
+ - `-p, --password <password>`: Contraseña de la base de datos
147
+ - `-d, --database <database>`: Nombre de la base de datos
148
+ - `--ssl`: Habilitar SSL (opcional)
149
+ - `-c, --config <path>`: Ruta a un archivo de configuración específico
150
+
151
+ ## Licencia
152
+
153
+ MIT © [CodeMaster Soluções](https://github.com/codemastersolutions)
154
+
155
+ Ver [LICENSE.es](./LICENSE.es) para más información.
package/README.md ADDED
@@ -0,0 +1,155 @@
1
+ # DbUtility
2
+
3
+ > The most powerful database utility.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@codemastersolutions/db-utility.svg)](https://www.npmjs.com/package/@codemastersolutions/db-utility)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ **[🇧🇷 Português](./README.pt-BR.md) | [🇪🇸 Español](./README.es.md)**
9
+
10
+ DbUtility is a powerful utility for manipulating Microsoft SQL Server, MySQL, and PostgreSQL databases. Developed in Node.js and TypeScript, it aims to simplify database connection, introspection, model export, and migration creation.
11
+
12
+ ## Features
13
+
14
+ - **Multi-Database Support**: Connect to Microsoft SQL Server, MySQL, and PostgreSQL using official drivers (`mssql`, `mysql2`, `pg`).
15
+ - **Flexible Configuration**: Connection details via CLI, `.env`, JSON configuration files.
16
+ - **Introspection**: Analyze your database to list tables, views, stored procedures, functions, and triggers.
17
+ - **Model Export**: Export database tables to Sequelize, TypeORM, and Prisma models (Coming soon).
18
+ - **Migration Generation**: Create migrations from existing database tables for Sequelize, TypeORM, and Prisma (Coming soon).
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ npm install @codemastersolutions/db-utility
24
+ # or globally
25
+ npm install -g @codemastersolutions/db-utility
26
+ ```
27
+
28
+ ## Configuration
29
+
30
+ ### Initialization
31
+
32
+ You can initialize a default configuration file using the CLI command:
33
+
34
+ ```bash
35
+ dbutility --init
36
+ ```
37
+
38
+ If the file already exists, you can force recreation with default values:
39
+
40
+ ```bash
41
+ dbutility --init -f
42
+ # or
43
+ dbutility --init --force
44
+ ```
45
+
46
+ ### Configuration File (dbutility.config.json)
47
+
48
+ The configuration file allows you to define CLI language, output directories, and naming patterns.
49
+
50
+ ```json
51
+ {
52
+ "language": "en",
53
+ "introspection": {
54
+ "outputDir": "db-utility-introspect"
55
+ },
56
+ "migrations": {
57
+ "outputDir": "db-utility-migrations",
58
+ "fileNamePattern": "timestamp-prefix"
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Environment Variables (.env)
64
+
65
+ You can also configure DbUtility using environment variables. JSON file configurations take precedence over environment variables if both are present.
66
+
67
+ ```env
68
+ # Language (pt-BR, en, es)
69
+ DB_UTILITY_LANG=en
70
+
71
+ # Output Directories
72
+ DB_UTILITY_INTROSPECTION_OUTPUT_DIR=my-introspect-dir
73
+ DB_UTILITY_MIGRATIONS_OUTPUT_DIR=my-migrations-dir
74
+
75
+ # Migration File Name Pattern (timestamp-prefix, prefix-timestamp)
76
+ DB_UTILITY_MIGRATIONS_FILE_NAME_PATTERN=prefix-timestamp
77
+ ```
78
+
79
+ ## CLI - Command Line Interface
80
+
81
+ > **Security Note**: We strongly recommend using a database user with **read-only** permissions (SELECT) when performing introspection and export operations. This minimizes the risk of accidental data modifications. The DbUtility library only executes metadata queries (database structure) and blocks commands that could modify data or read business table rows.
82
+
83
+ DbUtility offers a robust CLI to interact with your databases.
84
+
85
+ ### Connect to Database
86
+
87
+ Test connection to your database.
88
+
89
+ ```bash
90
+ dbutility connect -t postgres -H localhost -P 5432 -u username -p password -d database_name --ssl
91
+ ```
92
+
93
+ ### Perform Introspection
94
+
95
+ Analyze database schema and generate introspection reports.
96
+
97
+ ```bash
98
+ dbutility introspect -t mysql -H localhost -P 3306 -u username -p password -d database_name
99
+ ```
100
+
101
+ ### Export Models
102
+
103
+ Export database structure to ORM models.
104
+
105
+ ```bash
106
+ dbutility export --target sequelize --output ./src/models -t postgres ...
107
+ ```
108
+
109
+ ### Generate Migrations
110
+
111
+ Generate migrations from existing database structure. This command cleans the output directory before generating new files.
112
+
113
+ ```bash
114
+ dbutility migrate --target sequelize --output ./migrations -t postgres ...
115
+ ```
116
+
117
+ Options:
118
+ - `--data`: Generate data migrations (seeds) for specified tables.
119
+ - `--only-data`: Generate ONLY data migrations (seeds).
120
+ - `--tables <tables>`: Comma-separated list of tables to export data from.
121
+
122
+ When using `--data`, seed files are generated immediately after their corresponding table creation migration.
123
+
124
+ ### Test Migrations
125
+
126
+ Test generated migrations using Docker containers.
127
+
128
+ ```bash
129
+ dbutility test --target sequelize --dir ./migrations/sequelize --engines postgres:14
130
+ ```
131
+
132
+ Options:
133
+ - `--target <target>`: Target ORM (sequelize, typeorm).
134
+ - `--dir <dir>`: Directory containing migrations (optional).
135
+ - `--engines <engines>`: Comma-separated list of database engines to test (e.g., postgres:14, mysql:8). If omitted, it tries to read `database-info.json` generated by the migrate command.
136
+
137
+ Requirements:
138
+ - Docker must be installed and running.
139
+
140
+ ### CLI Options
141
+
142
+ - `-t, --type <type>`: Database type (postgres, mysql, mssql)
143
+ - `-H, --host <host>`: Database host
144
+ - `-P, --port <port>`: Database port
145
+ - `-u, --username <username>`: Database username
146
+ - `-p, --password <password>`: Database password
147
+ - `-d, --database <database>`: Database name
148
+ - `--ssl`: Enable SSL (optional)
149
+ - `-c, --config <path>`: Path to a specific configuration file
150
+
151
+ ## License
152
+
153
+ MIT © [CodeMaster Soluções](https://github.com/codemastersolutions)
154
+
155
+ See [LICENSE](./LICENSE) for more information.
@@ -0,0 +1,155 @@
1
+ # DbUtility
2
+
3
+ > O mais poderoso utilitário de banco de dados.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@codemastersolutions/db-utility.svg)](https://www.npmjs.com/package/@codemastersolutions/db-utility)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ **[🇺🇸 English](./README.md) | [🇪🇸 Español](./README.es.md)**
9
+
10
+ DbUtility é um utilitário poderoso para manipulação de bancos de dados Microsoft SQL Server, MySQL e PostgreSQL. Desenvolvido em Node.js e TypeScript, visa simplificar a conexão com banco de dados, introspecção, exportação de models e criação de migrations.
11
+
12
+ ## Funcionalidades
13
+
14
+ - **Suporte Multi-Banco**: Conecte-se ao Microsoft SQL Server, MySQL e PostgreSQL usando drivers oficiais (`mssql`, `mysql2`, `pg`).
15
+ - **Configuração Flexível**: Detalhes de conexão via CLI, `.env`, arquivos de configuração JSON.
16
+ - **Introspecção**: Analise seu banco de dados para listar tabelas, views, stored procedures, funções e triggers.
17
+ - **Exportação de Models**: Exporte tabelas do banco de dados para models do Sequelize, TypeORM e Prisma (Em breve).
18
+ - **Geração de Migrations**: Crie migrations a partir de tabelas existentes no banco de dados para Sequelize, TypeORM e Prisma (Em breve).
19
+
20
+ ## Instalação
21
+
22
+ ```bash
23
+ npm install @codemastersolutions/db-utility
24
+ # ou globalmente
25
+ npm install -g @codemastersolutions/db-utility
26
+ ```
27
+
28
+ ## Configuração
29
+
30
+ ### Inicialização
31
+
32
+ Você pode inicializar um arquivo de configuração padrão usando o comando CLI:
33
+
34
+ ```bash
35
+ dbutility --init
36
+ ```
37
+
38
+ Se o arquivo já existir, você pode forçar a recriação com os valores padrão:
39
+
40
+ ```bash
41
+ dbutility --init -f
42
+ # ou
43
+ dbutility --init --force
44
+ ```
45
+
46
+ ### Arquivo de Configuração (dbutility.config.json)
47
+
48
+ O arquivo de configuração permite definir o idioma da CLI, diretórios de saída e padrões de nomenclatura.
49
+
50
+ ```json
51
+ {
52
+ "language": "pt-BR",
53
+ "introspection": {
54
+ "outputDir": "db-utility-introspect"
55
+ },
56
+ "migrations": {
57
+ "outputDir": "db-utility-migrations",
58
+ "fileNamePattern": "timestamp-prefix"
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Variáveis de Ambiente (.env)
64
+
65
+ Você também pode configurar o DbUtility usando variáveis de ambiente. As configurações no arquivo JSON têm prioridade sobre as variáveis de ambiente se ambos estiverem presentes.
66
+
67
+ ```env
68
+ # Idioma (pt-BR, en, es)
69
+ DB_UTILITY_LANG=pt-BR
70
+
71
+ # Diretórios de Saída
72
+ DB_UTILITY_INTROSPECTION_OUTPUT_DIR=meu-diretorio-introspect
73
+ DB_UTILITY_MIGRATIONS_OUTPUT_DIR=meu-diretorio-migrations
74
+
75
+ # Padrão de Nome de Arquivo de Migration (timestamp-prefix, prefix-timestamp)
76
+ DB_UTILITY_MIGRATIONS_FILE_NAME_PATTERN=prefix-timestamp
77
+ ```
78
+
79
+ ## CLI - Interface de Linha de Comando
80
+
81
+ > **Nota de Segurança**: Recomendamos fortemente o uso de um usuário de banco de dados com permissões de **somente leitura** (SELECT) para realizar operações de introspecção e exportação. Isso minimiza riscos de alterações acidentais nos dados. A biblioteca DbUtility executa apenas consultas de metadados (estrutura do banco) e bloqueia comandos que possam alterar dados ou ler registros das tabelas de negócio.
82
+
83
+ O DbUtility oferece uma CLI robusta para interagir com seus bancos de dados.
84
+
85
+ ### Conectar ao Banco de Dados
86
+
87
+ Teste a conexão com seu banco de dados.
88
+
89
+ ```bash
90
+ dbutility connect -t postgres -H localhost -P 5432 -u usuario -p senha -d banco_dados --ssl
91
+ ```
92
+
93
+ ### Realizar Introspecção
94
+
95
+ Analise o esquema do banco de dados e gere relatórios de introspecção.
96
+
97
+ ```bash
98
+ dbutility introspect -t mysql -H localhost -P 3306 -u usuario -p senha -d banco_dados
99
+ ```
100
+
101
+ ### Exportar Models
102
+
103
+ Exporte a estrutura do banco de dados para models de ORM.
104
+
105
+ ```bash
106
+ dbutility export --target sequelize --output ./src/models -t postgres ...
107
+ ```
108
+
109
+ ### Gerar Migrations
110
+
111
+ Gere migrations a partir da estrutura existente do banco de dados. Este comando limpa o diretório de saída antes de gerar novos arquivos.
112
+
113
+ ```bash
114
+ dbutility migrate --target sequelize --output ./migrations -t postgres ...
115
+ ```
116
+
117
+ Opções:
118
+ - `--data`: Gera migrations de dados (seeds) para as tabelas especificadas.
119
+ - `--only-data`: Gera APENAS migrations de dados (seeds).
120
+ - `--tables <tables>`: Lista de tabelas separadas por vírgula para exportar dados.
121
+
122
+ Ao usar `--data`, os arquivos de seed são gerados imediatamente após a migration de criação da tabela correspondente.
123
+
124
+ ### Testar Migrations
125
+
126
+ Teste as migrations geradas usando containers Docker.
127
+
128
+ ```bash
129
+ dbutility test --target sequelize --dir ./migrations/sequelize --engines postgres:14
130
+ ```
131
+
132
+ Opções:
133
+ - `--target <target>`: ORM alvo (sequelize, typeorm).
134
+ - `--dir <dir>`: Diretório contendo as migrations (opcional).
135
+ - `--engines <engines>`: Lista separada por vírgula de engines de banco de dados para testar (ex: postgres:14, mysql:8). Se omitido, tenta ler `database-info.json` gerado pelo comando migrate.
136
+
137
+ Requisitos:
138
+ - Docker deve estar instalado e em execução.
139
+
140
+ ### Opções da CLI
141
+
142
+ - `-t, --type <type>`: Tipo de banco de dados (postgres, mysql, mssql)
143
+ - `-H, --host <host>`: Host do banco de dados
144
+ - `-P, --port <port>`: Porta do banco de dados
145
+ - `-u, --username <username>`: Usuário do banco de dados
146
+ - `-p, --password <password>`: Senha do banco de dados
147
+ - `-d, --database <database>`: Nome do banco de dados
148
+ - `--ssl`: Habilitar SSL (opcional)
149
+ - `-c, --config <path>`: Caminho para um arquivo de configuração específico
150
+
151
+ ## Licença
152
+
153
+ MIT © [CodeMaster Soluções](https://github.com/codemastersolutions)
154
+
155
+ Veja [LICENSE.pt-BR](./LICENSE.pt-BR) para mais informações.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}