@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.
- package/LICENSE +21 -0
- package/LICENSE.es +21 -0
- package/LICENSE.pt-BR +21 -0
- package/README.es.md +155 -0
- package/README.md +155 -0
- package/README.pt-BR.md +155 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +314 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/AppConfig.d.ts +19 -0
- package/dist/config/AppConfig.d.ts.map +1 -0
- package/dist/config/AppConfig.js +142 -0
- package/dist/config/AppConfig.js.map +1 -0
- package/dist/config/ConfigInitializer.d.ts +10 -0
- package/dist/config/ConfigInitializer.d.ts.map +1 -0
- package/dist/config/ConfigInitializer.js +37 -0
- package/dist/config/ConfigInitializer.js.map +1 -0
- package/dist/config/ConfigLoader.d.ts +7 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +94 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/database/ConnectionFactory.d.ts +5 -0
- package/dist/database/ConnectionFactory.d.ts.map +1 -0
- package/dist/database/ConnectionFactory.js +22 -0
- package/dist/database/ConnectionFactory.js.map +1 -0
- package/dist/database/SqlSafety.d.ts +7 -0
- package/dist/database/SqlSafety.d.ts.map +1 -0
- package/dist/database/SqlSafety.js +47 -0
- package/dist/database/SqlSafety.js.map +1 -0
- package/dist/database/connectors/MssqlConnector.d.ts +13 -0
- package/dist/database/connectors/MssqlConnector.d.ts.map +1 -0
- package/dist/database/connectors/MssqlConnector.js +72 -0
- package/dist/database/connectors/MssqlConnector.js.map +1 -0
- package/dist/database/connectors/MysqlConnector.d.ts +12 -0
- package/dist/database/connectors/MysqlConnector.d.ts.map +1 -0
- package/dist/database/connectors/MysqlConnector.js +70 -0
- package/dist/database/connectors/MysqlConnector.js.map +1 -0
- package/dist/database/connectors/PostgresConnector.d.ts +12 -0
- package/dist/database/connectors/PostgresConnector.d.ts.map +1 -0
- package/dist/database/connectors/PostgresConnector.js +65 -0
- package/dist/database/connectors/PostgresConnector.js.map +1 -0
- package/dist/errors/DbUtilityError.d.ts +7 -0
- package/dist/errors/DbUtilityError.d.ts.map +1 -0
- package/dist/errors/DbUtilityError.js +15 -0
- package/dist/errors/DbUtilityError.js.map +1 -0
- package/dist/generators/GeneratorTypes.d.ts +15 -0
- package/dist/generators/GeneratorTypes.d.ts.map +1 -0
- package/dist/generators/GeneratorTypes.js +3 -0
- package/dist/generators/GeneratorTypes.js.map +1 -0
- package/dist/generators/GeneratorWriter.d.ts +6 -0
- package/dist/generators/GeneratorWriter.d.ts.map +1 -0
- package/dist/generators/GeneratorWriter.js +25 -0
- package/dist/generators/GeneratorWriter.js.map +1 -0
- package/dist/generators/MongooseGenerator.d.ts +10 -0
- package/dist/generators/MongooseGenerator.d.ts.map +1 -0
- package/dist/generators/MongooseGenerator.js +75 -0
- package/dist/generators/MongooseGenerator.js.map +1 -0
- package/dist/generators/PrismaGenerator.d.ts +9 -0
- package/dist/generators/PrismaGenerator.d.ts.map +1 -0
- package/dist/generators/PrismaGenerator.js +87 -0
- package/dist/generators/PrismaGenerator.js.map +1 -0
- package/dist/generators/SequelizeGenerator.d.ts +12 -0
- package/dist/generators/SequelizeGenerator.d.ts.map +1 -0
- package/dist/generators/SequelizeGenerator.js +243 -0
- package/dist/generators/SequelizeGenerator.js.map +1 -0
- package/dist/generators/TypeORMGenerator.d.ts +12 -0
- package/dist/generators/TypeORMGenerator.d.ts.map +1 -0
- package/dist/generators/TypeORMGenerator.js +216 -0
- package/dist/generators/TypeORMGenerator.js.map +1 -0
- package/dist/i18n/messages.d.ts +49 -0
- package/dist/i18n/messages.d.ts.map +1 -0
- package/dist/i18n/messages.js +149 -0
- package/dist/i18n/messages.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/introspection/DataExtractor.d.ts +10 -0
- package/dist/introspection/DataExtractor.d.ts.map +1 -0
- package/dist/introspection/DataExtractor.js +52 -0
- package/dist/introspection/DataExtractor.js.map +1 -0
- package/dist/introspection/IntrospectionLogger.d.ts +7 -0
- package/dist/introspection/IntrospectionLogger.d.ts.map +1 -0
- package/dist/introspection/IntrospectionLogger.js +30 -0
- package/dist/introspection/IntrospectionLogger.js.map +1 -0
- package/dist/introspection/IntrospectionService.d.ts +10 -0
- package/dist/introspection/IntrospectionService.d.ts.map +1 -0
- package/dist/introspection/IntrospectionService.js +37 -0
- package/dist/introspection/IntrospectionService.js.map +1 -0
- package/dist/introspection/Introspector.d.ts +11 -0
- package/dist/introspection/Introspector.d.ts.map +1 -0
- package/dist/introspection/Introspector.js +11 -0
- package/dist/introspection/Introspector.js.map +1 -0
- package/dist/introspection/MssqlIntrospector.d.ts +11 -0
- package/dist/introspection/MssqlIntrospector.d.ts.map +1 -0
- package/dist/introspection/MssqlIntrospector.js +193 -0
- package/dist/introspection/MssqlIntrospector.js.map +1 -0
- package/dist/introspection/MysqlIntrospector.d.ts +10 -0
- package/dist/introspection/MysqlIntrospector.d.ts.map +1 -0
- package/dist/introspection/MysqlIntrospector.js +175 -0
- package/dist/introspection/MysqlIntrospector.js.map +1 -0
- package/dist/introspection/PostgresIntrospector.d.ts +11 -0
- package/dist/introspection/PostgresIntrospector.d.ts.map +1 -0
- package/dist/introspection/PostgresIntrospector.js +192 -0
- package/dist/introspection/PostgresIntrospector.js.map +1 -0
- package/dist/testing/ContainerManager.d.ts +7 -0
- package/dist/testing/ContainerManager.d.ts.map +1 -0
- package/dist/testing/ContainerManager.js +68 -0
- package/dist/testing/ContainerManager.js.map +1 -0
- package/dist/testing/MigrationTester.d.ts +18 -0
- package/dist/testing/MigrationTester.d.ts.map +1 -0
- package/dist/testing/MigrationTester.js +399 -0
- package/dist/testing/MigrationTester.js.map +1 -0
- package/dist/testing/runners/MigrationRunner.d.ts +5 -0
- package/dist/testing/runners/MigrationRunner.d.ts.map +1 -0
- package/dist/testing/runners/MigrationRunner.js +3 -0
- package/dist/testing/runners/MigrationRunner.js.map +1 -0
- package/dist/testing/runners/SequelizeRunner.d.ts +8 -0
- package/dist/testing/runners/SequelizeRunner.d.ts.map +1 -0
- package/dist/testing/runners/SequelizeRunner.js +71 -0
- package/dist/testing/runners/SequelizeRunner.js.map +1 -0
- package/dist/testing/runners/TypeORMRunner.d.ts +8 -0
- package/dist/testing/runners/TypeORMRunner.d.ts.map +1 -0
- package/dist/testing/runners/TypeORMRunner.js +91 -0
- package/dist/testing/runners/TypeORMRunner.js.map +1 -0
- package/dist/types/database.d.ts +22 -0
- package/dist/types/database.d.ts.map +1 -0
- package/dist/types/database.js +3 -0
- package/dist/types/database.js.map +1 -0
- package/dist/types/introspection.d.ts +43 -0
- package/dist/types/introspection.d.ts.map +1 -0
- package/dist/types/introspection.js +3 -0
- package/dist/types/introspection.js.map +1 -0
- package/dist/utils/PackageManager.d.ts +13 -0
- package/dist/utils/PackageManager.d.ts.map +1 -0
- package/dist/utils/PackageManager.js +114 -0
- package/dist/utils/PackageManager.js.map +1 -0
- package/dist/utils/topologicalSort.d.ts +3 -0
- package/dist/utils/topologicalSort.d.ts.map +1 -0
- package/dist/utils/topologicalSort.js +37 -0
- package/dist/utils/topologicalSort.js.map +1 -0
- 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
|
+
[](https://www.npmjs.com/package/@codemastersolutions/db-utility)
|
|
6
|
+
[](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
|
+
[](https://www.npmjs.com/package/@codemastersolutions/db-utility)
|
|
6
|
+
[](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.
|
package/README.pt-BR.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# DbUtility
|
|
2
|
+
|
|
3
|
+
> O mais poderoso utilitário de banco de dados.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@codemastersolutions/db-utility)
|
|
6
|
+
[](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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|