orasql-gen 0.1.0
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/.orasql.example +12 -0
- package/LICENSE +21 -0
- package/README.md +320 -0
- package/dist/commands/gen.d.ts +3 -0
- package/dist/commands/gen.d.ts.map +1 -0
- package/dist/commands/gen.js +281 -0
- package/dist/commands/gen.js.map +1 -0
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +65 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/inspect.d.ts +3 -0
- package/dist/commands/inspect.d.ts.map +1 -0
- package/dist/commands/inspect.js +80 -0
- package/dist/commands/inspect.js.map +1 -0
- package/dist/commands/profile.d.ts +3 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +86 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/schemas.d.ts +3 -0
- package/dist/commands/schemas.d.ts.map +1 -0
- package/dist/commands/schemas.js +62 -0
- package/dist/commands/schemas.js.map +1 -0
- package/dist/core/connection.d.ts +6 -0
- package/dist/core/connection.d.ts.map +1 -0
- package/dist/core/connection.js +54 -0
- package/dist/core/connection.js.map +1 -0
- package/dist/core/inspector.d.ts +27 -0
- package/dist/core/inspector.d.ts.map +1 -0
- package/dist/core/inspector.js +135 -0
- package/dist/core/inspector.js.map +1 -0
- package/dist/generators/insert.d.ts +3 -0
- package/dist/generators/insert.d.ts.map +1 -0
- package/dist/generators/insert.js +51 -0
- package/dist/generators/insert.js.map +1 -0
- package/dist/generators/interactive.d.ts +3 -0
- package/dist/generators/interactive.d.ts.map +1 -0
- package/dist/generators/interactive.js +118 -0
- package/dist/generators/interactive.js.map +1 -0
- package/dist/generators/select.d.ts +3 -0
- package/dist/generators/select.d.ts.map +1 -0
- package/dist/generators/select.js +63 -0
- package/dist/generators/select.js.map +1 -0
- package/dist/generators/update.d.ts +3 -0
- package/dist/generators/update.d.ts.map +1 -0
- package/dist/generators/update.js +39 -0
- package/dist/generators/update.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +13 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/config.d.ts +12 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +42 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/history.d.ts +11 -0
- package/dist/utils/history.d.ts.map +1 -0
- package/dist/utils/history.js +51 -0
- package/dist/utils/history.js.map +1 -0
- package/dist/utils/profiles.d.ts +11 -0
- package/dist/utils/profiles.d.ts.map +1 -0
- package/dist/utils/profiles.js +47 -0
- package/dist/utils/profiles.js.map +1 -0
- package/dist/utils/topology.d.ts +8 -0
- package/dist/utils/topology.d.ts.map +1 -0
- package/dist/utils/topology.js +63 -0
- package/dist/utils/topology.js.map +1 -0
- package/package.json +61 -0
package/.orasql.example
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"host": "localhost",
|
|
3
|
+
"port": 1521,
|
|
4
|
+
"sid": "ORCL",
|
|
5
|
+
"serviceName": "mi_servicio.dominio.com",
|
|
6
|
+
"user": "my_user",
|
|
7
|
+
"password": "my_password",
|
|
8
|
+
"schema": "MY_SCHEMA",
|
|
9
|
+
"instantClientDir": "/usr/local/lib/oracle/instantclient_18_1"
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Nota: usa "sid" o "serviceName", no ambos.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jaime De Leon
|
|
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/README.md
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
# orasql-gen
|
|
2
|
+
|
|
3
|
+
CLI para generar sentencias SQL automáticamente a partir de tablas Oracle 12+.
|
|
4
|
+
|
|
5
|
+
Elimina el trabajo manual de escribir INSERTs, UPDATEs y SELECTs consultando la estructura de tus tablas directamente desde la base de datos.
|
|
6
|
+
|
|
7
|
+
## Inicio rápido
|
|
8
|
+
|
|
9
|
+
> Tutorial paso a paso para empezar a usar `orasql-gen` en menos de 5 minutos.
|
|
10
|
+
|
|
11
|
+
### Paso 1 — Instalar
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g orasql-gen
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Paso 2 — Instalar Oracle Instant Client (requerido para Oracle 12)
|
|
18
|
+
|
|
19
|
+
Descarga el paquete **Basic** desde la página oficial de Oracle según tu sistema operativo:
|
|
20
|
+
|
|
21
|
+
- **macOS Intel**: https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html
|
|
22
|
+
- **macOS Apple Silicon**: https://www.oracle.com/database/technologies/instant-client/macos-arm-mvme-downloads.html
|
|
23
|
+
- **Linux x64**: https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
|
|
24
|
+
- **Windows**: https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
|
|
25
|
+
|
|
26
|
+
Descomprímelo en una ruta fija, por ejemplo `/usr/local/lib/oracle/instantclient_19_8`.
|
|
27
|
+
|
|
28
|
+
> En macOS es necesario remover la cuarentena y re-firmar las librerías:
|
|
29
|
+
> ```bash
|
|
30
|
+
> sudo xattr -r -d com.apple.quarantine /usr/local/lib/oracle/instantclient_18_1/
|
|
31
|
+
> sudo find /usr/local/lib/oracle/instantclient_18_1/ -name "*.dylib" -exec codesign --force --sign - {} \;
|
|
32
|
+
> ```
|
|
33
|
+
|
|
34
|
+
### Paso 3 — Crear el archivo de configuración
|
|
35
|
+
|
|
36
|
+
En el directorio de tu proyecto, crea un archivo `.orasql` con tus datos de conexión:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"host": "192.168.1.100",
|
|
41
|
+
"port": 1521,
|
|
42
|
+
"serviceName": "MISERVICIO",
|
|
43
|
+
"user": "mi_usuario",
|
|
44
|
+
"password": "mi_password",
|
|
45
|
+
"schema": "MI_SCHEMA",
|
|
46
|
+
"instantClientDir": "/usr/local/lib/oracle/instantclient_18_1"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
> Usa `"sid"` en lugar de `"serviceName"` si tu base de datos usa SID en vez de nombre de servicio.
|
|
51
|
+
|
|
52
|
+
### Paso 4 — Verificar la conexión
|
|
53
|
+
|
|
54
|
+
Si no sabes cuál es tu schema, el siguiente comando lista todos los schemas accesibles con tu usuario:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
orasql-gen schemas
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Busca en qué schema está una tabla específica:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
orasql-gen schemas --tabla CLIENTES
|
|
64
|
+
# Tabla "CLIENTES" encontrada en:
|
|
65
|
+
# APP_SCHEMA (filas aprox: 5000)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Actualiza `"schema"` en tu `.orasql` con el valor encontrado.
|
|
69
|
+
|
|
70
|
+
### Paso 5 — Inspeccionar una tabla
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
orasql-gen inspect CLIENTES
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Verás la estructura completa: columnas, tipos, si es nullable, PKs, FKs y secuencias detectadas automáticamente:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Tabla: APP_SCHEMA.CLIENTES
|
|
80
|
+
────────────────────────────────────────────────────────────────────────────
|
|
81
|
+
Columna Tipo Null Flags
|
|
82
|
+
────────────────────────────────────────────────────────────────────────────
|
|
83
|
+
ID_CLIENTE NUMBER(10) NO [PK] [SEQ:SEQ_CLIENTES]
|
|
84
|
+
NOMBRE VARCHAR2(100) NO
|
|
85
|
+
EMAIL VARCHAR2(200) YES
|
|
86
|
+
FECHA_ALTA DATE NO [DEFAULT:SYSDATE]
|
|
87
|
+
ACTIVO NUMBER(1) NO [DEFAULT:1]
|
|
88
|
+
────────────────────────────────────────────────────────────────────────────
|
|
89
|
+
Total: 5 columnas
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Paso 6 — Generar tu primer INSERT
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
orasql-gen gen insert CLIENTES
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Resultado:
|
|
99
|
+
|
|
100
|
+
```sql
|
|
101
|
+
-- INSERT generado para APP_SCHEMA.CLIENTES
|
|
102
|
+
INSERT INTO APP_SCHEMA.CLIENTES (
|
|
103
|
+
ID_CLIENTE,
|
|
104
|
+
NOMBRE,
|
|
105
|
+
EMAIL,
|
|
106
|
+
FECHA_ALTA,
|
|
107
|
+
ACTIVO
|
|
108
|
+
) VALUES (
|
|
109
|
+
SEQ_CLIENTES.NEXTVAL, -- PK
|
|
110
|
+
/* ':NOMBRE' (VARCHAR2 max 100) */,
|
|
111
|
+
NULL,
|
|
112
|
+
SYSDATE -- default,
|
|
113
|
+
1 -- default
|
|
114
|
+
);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
El resultado incluye:
|
|
118
|
+
- `SEQ_CLIENTES.NEXTVAL` detectado automáticamente para la PK
|
|
119
|
+
- `SYSDATE` y valores por defecto del schema aplicados
|
|
120
|
+
- Placeholders claros para cada campo requerido
|
|
121
|
+
- `NULL` en campos opcionales
|
|
122
|
+
|
|
123
|
+
### Paso 7 — Generar INSERTs con tablas relacionadas
|
|
124
|
+
|
|
125
|
+
Cuando necesitas insertar en múltiples tablas relacionadas, usa `--related`. El CLI detecta las FKs y ordena los INSERTs automáticamente:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
orasql-gen gen insert CLIENTES --related PEDIDOS
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Salida:
|
|
132
|
+
|
|
133
|
+
```sql
|
|
134
|
+
-- INSERT generado para APP_SCHEMA.CLIENTES
|
|
135
|
+
INSERT INTO APP_SCHEMA.CLIENTES (
|
|
136
|
+
ID_CLIENTE,
|
|
137
|
+
NOMBRE,
|
|
138
|
+
EMAIL,
|
|
139
|
+
FECHA_ALTA,
|
|
140
|
+
ACTIVO
|
|
141
|
+
) VALUES (
|
|
142
|
+
SEQ_CLIENTES.NEXTVAL, -- PK
|
|
143
|
+
/* ':NOMBRE' (VARCHAR2 max 100) */,
|
|
144
|
+
NULL,
|
|
145
|
+
SYSDATE -- default,
|
|
146
|
+
1 -- default
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
-- INSERT generado para APP_SCHEMA.PEDIDOS
|
|
150
|
+
INSERT INTO APP_SCHEMA.PEDIDOS (
|
|
151
|
+
ID_PEDIDO,
|
|
152
|
+
ID_CLIENTE,
|
|
153
|
+
FECHA_PEDIDO,
|
|
154
|
+
TOTAL
|
|
155
|
+
) VALUES (
|
|
156
|
+
SEQ_PEDIDOS.NEXTVAL, -- PK
|
|
157
|
+
/* :ID_CLIENTE — FK → CLIENTES.ID_CLIENTE */,
|
|
158
|
+
SYSDATE -- default,
|
|
159
|
+
/* :TOTAL (NUMBER) */
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
-- Tablas en orden de inserción: CLIENTES → PEDIDOS
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Paso 8 — Copiar al portapapeles y pegar en tu cliente SQL
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
orasql-gen gen insert CLIENTES --related PEDIDOS --clipboard
|
|
169
|
+
# ✓ SQL copiado al portapapeles.
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Pega directamente en SQL Developer, DBeaver, Toad o cualquier cliente SQL y reemplaza los placeholders.
|
|
173
|
+
|
|
174
|
+
### Flujo de trabajo completo
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# 1. Ver la estructura de las tablas involucradas
|
|
178
|
+
orasql-gen inspect CLIENTES
|
|
179
|
+
orasql-gen inspect PEDIDOS
|
|
180
|
+
|
|
181
|
+
# 2. Generar el script completo (SELECT + INSERT + UPDATE)
|
|
182
|
+
orasql-gen gen script CLIENTES --related PEDIDOS --clipboard
|
|
183
|
+
|
|
184
|
+
# 3. Pegar en tu cliente SQL y completar los valores
|
|
185
|
+
|
|
186
|
+
# 4. Si necesitas repetirlo, recuperarlo del historial
|
|
187
|
+
orasql-gen history
|
|
188
|
+
orasql-gen history --clipboard 3
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Trabajar con múltiples ambientes (DEV / QA / PROD)
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Guardar configuración actual como perfil DEV
|
|
195
|
+
orasql-gen profile save DEV
|
|
196
|
+
|
|
197
|
+
# Configurar conexión a QA en .orasql y guardarla
|
|
198
|
+
orasql-gen profile save QA
|
|
199
|
+
|
|
200
|
+
# Cambiar entre ambientes en segundos
|
|
201
|
+
orasql-gen profile use QA
|
|
202
|
+
orasql-gen gen insert CLIENTES --clipboard
|
|
203
|
+
|
|
204
|
+
orasql-gen profile use DEV
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Instalación
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
npm install -g orasql-gen
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Configuración
|
|
216
|
+
|
|
217
|
+
Copia el archivo de ejemplo y completa tus datos de conexión:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
cp .orasql.example .orasql
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
```json
|
|
224
|
+
{
|
|
225
|
+
"host": "tu_host",
|
|
226
|
+
"port": 1521,
|
|
227
|
+
"serviceName": "tu_servicio",
|
|
228
|
+
"user": "tu_usuario",
|
|
229
|
+
"password": "tu_password",
|
|
230
|
+
"schema": "TU_SCHEMA",
|
|
231
|
+
"instantClientDir": "/ruta/a/instantclient"
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
> El archivo `.orasql` está en `.gitignore` — tus credenciales nunca se suben al repositorio.
|
|
236
|
+
|
|
237
|
+
## Comandos
|
|
238
|
+
|
|
239
|
+
### Inspeccionar estructura de una tabla
|
|
240
|
+
```bash
|
|
241
|
+
orasql-gen inspect CLIENTES
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Generar INSERT
|
|
245
|
+
```bash
|
|
246
|
+
# Template con placeholders
|
|
247
|
+
orasql-gen gen insert CLIENTES
|
|
248
|
+
|
|
249
|
+
# Con tablas relacionadas (ordenadas por FK automáticamente)
|
|
250
|
+
orasql-gen gen insert CLIENTES --related PEDIDOS
|
|
251
|
+
orasql-gen gen insert CLIENTES --related PEDIDOS,DETALLE_PEDIDO
|
|
252
|
+
|
|
253
|
+
# Modo interactivo (te pide el valor de cada campo)
|
|
254
|
+
orasql-gen gen insert CLIENTES --interactive
|
|
255
|
+
|
|
256
|
+
# Guardar en archivo
|
|
257
|
+
orasql-gen gen insert CLIENTES --output nuevo_cliente.sql
|
|
258
|
+
|
|
259
|
+
# Copiar directamente al portapapeles
|
|
260
|
+
orasql-gen gen insert CLIENTES --clipboard
|
|
261
|
+
orasql-gen gen insert CLIENTES --related PEDIDOS --clipboard
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Generar UPDATE
|
|
265
|
+
```bash
|
|
266
|
+
orasql-gen gen update CLIENTES
|
|
267
|
+
orasql-gen gen update CLIENTES --output actualizar_cliente.sql
|
|
268
|
+
orasql-gen gen update CLIENTES --clipboard
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Generar SELECT con JOINs automáticos
|
|
272
|
+
```bash
|
|
273
|
+
orasql-gen gen select CLIENTES --related PEDIDOS
|
|
274
|
+
orasql-gen gen select CLIENTES --related PEDIDOS --clipboard
|
|
275
|
+
orasql-gen gen select CLIENTES --related PEDIDOS --output consulta.sql
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Script completo (SELECT + INSERT + UPDATE)
|
|
279
|
+
```bash
|
|
280
|
+
orasql-gen gen script CLIENTES
|
|
281
|
+
orasql-gen gen script CLIENTES --related PEDIDOS
|
|
282
|
+
orasql-gen gen script CLIENTES --related PEDIDOS --output script.sql
|
|
283
|
+
orasql-gen gen script CLIENTES --related PEDIDOS --clipboard
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
> **Tip:** La opción `--clipboard` está disponible en todos los comandos de generación (`insert`, `update`, `select`, `script`) y copia el SQL directamente al portapapeles, listo para pegar en tu cliente SQL.
|
|
287
|
+
|
|
288
|
+
### Descubrir schemas y tablas
|
|
289
|
+
```bash
|
|
290
|
+
orasql-gen schemas
|
|
291
|
+
orasql-gen schemas --tabla CLIENTES
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Historial de queries generados
|
|
295
|
+
```bash
|
|
296
|
+
orasql-gen history
|
|
297
|
+
orasql-gen history --last 20
|
|
298
|
+
orasql-gen history --get 5
|
|
299
|
+
orasql-gen history --clipboard 5
|
|
300
|
+
orasql-gen history --clear
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Perfiles de conexión (DEV / QA / PROD)
|
|
304
|
+
```bash
|
|
305
|
+
orasql-gen profile save DEV
|
|
306
|
+
orasql-gen profile save PROD
|
|
307
|
+
orasql-gen profile list
|
|
308
|
+
orasql-gen profile use PROD
|
|
309
|
+
orasql-gen profile delete DEV
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Requisitos
|
|
313
|
+
|
|
314
|
+
- Node.js 18+
|
|
315
|
+
- Oracle Instant Client 18+ (para Thick mode con Oracle 12)
|
|
316
|
+
- Acceso a una base de datos Oracle 12+
|
|
317
|
+
|
|
318
|
+
## Licencia
|
|
319
|
+
|
|
320
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gen.d.ts","sourceRoot":"","sources":["../../src/commands/gen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4QlD"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerGen = registerGen;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const config_1 = require("../utils/config");
|
|
11
|
+
const connection_1 = require("../core/connection");
|
|
12
|
+
const inspector_1 = require("../core/inspector");
|
|
13
|
+
const insert_1 = require("../generators/insert");
|
|
14
|
+
const select_1 = require("../generators/select");
|
|
15
|
+
const update_1 = require("../generators/update");
|
|
16
|
+
const interactive_1 = require("../generators/interactive");
|
|
17
|
+
const topology_1 = require("../utils/topology");
|
|
18
|
+
const history_1 = require("../utils/history");
|
|
19
|
+
const clipboard_1 = require("../utils/clipboard");
|
|
20
|
+
function registerGen(program) {
|
|
21
|
+
const gen = program
|
|
22
|
+
.command('gen')
|
|
23
|
+
.description('Genera sentencias SQL para una tabla Oracle');
|
|
24
|
+
// gen insert <tabla>
|
|
25
|
+
gen
|
|
26
|
+
.command('insert <tabla>')
|
|
27
|
+
.description('Genera un template INSERT con todos los campos de la tabla')
|
|
28
|
+
.option('-s, --schema <schema>', 'Schema a usar (sobreescribe el del archivo .orasql)')
|
|
29
|
+
.option('-o, --output <archivo>', 'Guardar el resultado en un archivo .sql')
|
|
30
|
+
.option('-r, --related <tablas>', 'Tablas relacionadas separadas por coma (ej: USUARIOROL,OTRATABLA)')
|
|
31
|
+
.option('-i, --interactive', 'Modo interactivo: pide el valor de cada campo')
|
|
32
|
+
.option('--clipboard', 'Copiar el SQL al portapapeles')
|
|
33
|
+
.action(async (tabla, options) => {
|
|
34
|
+
var _a, _b, _c;
|
|
35
|
+
let connection;
|
|
36
|
+
try {
|
|
37
|
+
const config = (0, config_1.loadConfig)();
|
|
38
|
+
const schema = (_a = options.schema) !== null && _a !== void 0 ? _a : config.schema;
|
|
39
|
+
const sid = (_c = (_b = config.sid) !== null && _b !== void 0 ? _b : config.serviceName) !== null && _c !== void 0 ? _c : '';
|
|
40
|
+
console.log(chalk_1.default.cyan(`\nConectando a Oracle ${config.host}:${config.port}/${sid}...`));
|
|
41
|
+
connection = await (0, connection_1.getConnection)(config);
|
|
42
|
+
console.log(chalk_1.default.green('✓ Conectado\n'));
|
|
43
|
+
// Inspeccionar tabla principal
|
|
44
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${tabla.toUpperCase()}...`));
|
|
45
|
+
const mainTable = await (0, inspector_1.inspectTable)(connection, tabla, schema);
|
|
46
|
+
// Inspeccionar tablas relacionadas
|
|
47
|
+
const relatedNames = options.related
|
|
48
|
+
? options.related.split(',').map((t) => t.trim()).filter(Boolean)
|
|
49
|
+
: [];
|
|
50
|
+
const relatedTables = [];
|
|
51
|
+
for (const relName of relatedNames) {
|
|
52
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${relName.toUpperCase()}...`));
|
|
53
|
+
relatedTables.push(await (0, inspector_1.inspectTable)(connection, relName, schema));
|
|
54
|
+
}
|
|
55
|
+
await (0, connection_1.closeConnection)(connection);
|
|
56
|
+
connection = undefined;
|
|
57
|
+
// Ordenar todas las tablas por dependencias FK
|
|
58
|
+
const allTables = [mainTable, ...relatedTables];
|
|
59
|
+
const ordered = relatedNames.length > 0 ? (0, topology_1.sortByDependencies)(allTables) : allTables;
|
|
60
|
+
let sql = '';
|
|
61
|
+
if (options.interactive) {
|
|
62
|
+
// Modo interactivo: pedir valores campo por campo
|
|
63
|
+
for (const t of ordered) {
|
|
64
|
+
sql += await (0, interactive_1.generateInsertInteractive)(t);
|
|
65
|
+
sql += '\n';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Modo template: generar con placeholders
|
|
70
|
+
for (const t of ordered) {
|
|
71
|
+
sql += (0, insert_1.generateInsert)(t);
|
|
72
|
+
sql += '\n';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Guardar en historial
|
|
76
|
+
(0, history_1.saveToHistory)('gen insert', tabla, sql);
|
|
77
|
+
if (options.output) {
|
|
78
|
+
const outputPath = path_1.default.resolve(process.cwd(), options.output);
|
|
79
|
+
fs_1.default.writeFileSync(outputPath, sql, 'utf-8');
|
|
80
|
+
console.log(chalk_1.default.green(`\n✓ INSERT(s) guardado(s) en: ${outputPath}\n`));
|
|
81
|
+
}
|
|
82
|
+
else if (options.clipboard) {
|
|
83
|
+
(0, clipboard_1.copyToClipboard)(sql);
|
|
84
|
+
console.log(chalk_1.default.green('\n✓ SQL copiado al portapapeles.\n'));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log(chalk_1.default.bold.white('\n-- SQL Generado:'));
|
|
88
|
+
console.log(chalk_1.default.gray('─'.repeat(80)));
|
|
89
|
+
console.log(chalk_1.default.yellow(sql));
|
|
90
|
+
console.log(chalk_1.default.gray('─'.repeat(80)));
|
|
91
|
+
if (relatedNames.length > 0) {
|
|
92
|
+
console.log(chalk_1.default.gray(`Tablas en orden de inserción: ${ordered.map((t) => t.name).join(' → ')}\n`));
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk_1.default.gray('Tip: usa --output archivo.sql o --clipboard para otras opciones de salida\n'));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
if (connection)
|
|
103
|
+
await (0, connection_1.closeConnection)(connection);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
// gen select <tabla>
|
|
107
|
+
gen
|
|
108
|
+
.command('select <tabla>')
|
|
109
|
+
.description('Genera un SELECT con JOINs automáticos basados en las FKs')
|
|
110
|
+
.option('-s, --schema <schema>', 'Schema a usar (sobreescribe el del archivo .orasql)')
|
|
111
|
+
.option('-o, --output <archivo>', 'Guardar el resultado en un archivo .sql')
|
|
112
|
+
.option('-r, --related <tablas>', 'Tablas adicionales para incluir en los JOINs')
|
|
113
|
+
.option('--clipboard', 'Copiar el SQL al portapapeles')
|
|
114
|
+
.action(async (tabla, options) => {
|
|
115
|
+
var _a, _b, _c;
|
|
116
|
+
let connection;
|
|
117
|
+
try {
|
|
118
|
+
const config = (0, config_1.loadConfig)();
|
|
119
|
+
const schema = (_a = options.schema) !== null && _a !== void 0 ? _a : config.schema;
|
|
120
|
+
const sid = (_c = (_b = config.sid) !== null && _b !== void 0 ? _b : config.serviceName) !== null && _c !== void 0 ? _c : '';
|
|
121
|
+
console.log(chalk_1.default.cyan(`\nConectando a Oracle ${config.host}:${config.port}/${sid}...`));
|
|
122
|
+
connection = await (0, connection_1.getConnection)(config);
|
|
123
|
+
console.log(chalk_1.default.green('✓ Conectado\n'));
|
|
124
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${tabla.toUpperCase()}...`));
|
|
125
|
+
const mainTable = await (0, inspector_1.inspectTable)(connection, tabla, schema);
|
|
126
|
+
const relatedNames = options.related
|
|
127
|
+
? options.related.split(',').map((t) => t.trim()).filter(Boolean)
|
|
128
|
+
: [];
|
|
129
|
+
const relatedTables = [];
|
|
130
|
+
for (const relName of relatedNames) {
|
|
131
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${relName.toUpperCase()}...`));
|
|
132
|
+
relatedTables.push(await (0, inspector_1.inspectTable)(connection, relName, schema));
|
|
133
|
+
}
|
|
134
|
+
await (0, connection_1.closeConnection)(connection);
|
|
135
|
+
connection = undefined;
|
|
136
|
+
const sql = (0, select_1.generateSelect)(mainTable, relatedTables);
|
|
137
|
+
(0, history_1.saveToHistory)('gen select', tabla, sql);
|
|
138
|
+
if (options.output) {
|
|
139
|
+
const outputPath = path_1.default.resolve(process.cwd(), options.output);
|
|
140
|
+
fs_1.default.writeFileSync(outputPath, sql, 'utf-8');
|
|
141
|
+
console.log(chalk_1.default.green(`\n✓ SELECT guardado en: ${outputPath}\n`));
|
|
142
|
+
}
|
|
143
|
+
else if (options.clipboard) {
|
|
144
|
+
(0, clipboard_1.copyToClipboard)(sql);
|
|
145
|
+
console.log(chalk_1.default.green('\n✓ SQL copiado al portapapeles.\n'));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
console.log(chalk_1.default.bold.white('\n-- SQL Generado:'));
|
|
149
|
+
console.log(chalk_1.default.gray('─'.repeat(80)));
|
|
150
|
+
console.log(chalk_1.default.yellow(sql));
|
|
151
|
+
console.log(chalk_1.default.gray('─'.repeat(80) + '\n'));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
if (connection)
|
|
160
|
+
await (0, connection_1.closeConnection)(connection);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
// gen update <tabla>
|
|
164
|
+
gen
|
|
165
|
+
.command('update <tabla>')
|
|
166
|
+
.description('Genera un template UPDATE por PK para la tabla')
|
|
167
|
+
.option('-s, --schema <schema>', 'Schema a usar')
|
|
168
|
+
.option('-o, --output <archivo>', 'Guardar en un archivo .sql')
|
|
169
|
+
.option('--clipboard', 'Copiar al portapapeles')
|
|
170
|
+
.action(async (tabla, options) => {
|
|
171
|
+
var _a, _b, _c;
|
|
172
|
+
let connection;
|
|
173
|
+
try {
|
|
174
|
+
const config = (0, config_1.loadConfig)();
|
|
175
|
+
const schema = (_a = options.schema) !== null && _a !== void 0 ? _a : config.schema;
|
|
176
|
+
const sid = (_c = (_b = config.sid) !== null && _b !== void 0 ? _b : config.serviceName) !== null && _c !== void 0 ? _c : '';
|
|
177
|
+
console.log(chalk_1.default.cyan(`\nConectando a Oracle ${config.host}:${config.port}/${sid}...`));
|
|
178
|
+
connection = await (0, connection_1.getConnection)(config);
|
|
179
|
+
console.log(chalk_1.default.green('✓ Conectado\n'));
|
|
180
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${tabla.toUpperCase()}...`));
|
|
181
|
+
const tableInfo = await (0, inspector_1.inspectTable)(connection, tabla, schema);
|
|
182
|
+
await (0, connection_1.closeConnection)(connection);
|
|
183
|
+
connection = undefined;
|
|
184
|
+
const sql = (0, update_1.generateUpdate)(tableInfo);
|
|
185
|
+
(0, history_1.saveToHistory)('gen update', tabla, sql);
|
|
186
|
+
if (options.output) {
|
|
187
|
+
const outputPath = path_1.default.resolve(process.cwd(), options.output);
|
|
188
|
+
fs_1.default.writeFileSync(outputPath, sql, 'utf-8');
|
|
189
|
+
console.log(chalk_1.default.green(`\n✓ UPDATE guardado en: ${outputPath}\n`));
|
|
190
|
+
}
|
|
191
|
+
else if (options.clipboard) {
|
|
192
|
+
(0, clipboard_1.copyToClipboard)(sql);
|
|
193
|
+
console.log(chalk_1.default.green('\n✓ SQL copiado al portapapeles.\n'));
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
console.log(chalk_1.default.bold.white('\n-- SQL Generado:'));
|
|
197
|
+
console.log(chalk_1.default.gray('─'.repeat(80)));
|
|
198
|
+
console.log(chalk_1.default.yellow(sql));
|
|
199
|
+
console.log(chalk_1.default.gray('─'.repeat(80) + '\n'));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
finally {
|
|
207
|
+
if (connection)
|
|
208
|
+
await (0, connection_1.closeConnection)(connection);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
// gen script <tabla> — SELECT + INSERT + UPDATE juntos
|
|
212
|
+
gen
|
|
213
|
+
.command('script <tabla>')
|
|
214
|
+
.description('Genera el script completo (SELECT + INSERT + UPDATE) para una entidad')
|
|
215
|
+
.option('-s, --schema <schema>', 'Schema a usar')
|
|
216
|
+
.option('-r, --related <tablas>', 'Tablas relacionadas separadas por coma')
|
|
217
|
+
.option('-o, --output <archivo>', 'Guardar en un archivo .sql')
|
|
218
|
+
.option('--clipboard', 'Copiar al portapapeles')
|
|
219
|
+
.action(async (tabla, options) => {
|
|
220
|
+
var _a, _b, _c;
|
|
221
|
+
let connection;
|
|
222
|
+
try {
|
|
223
|
+
const config = (0, config_1.loadConfig)();
|
|
224
|
+
const schema = (_a = options.schema) !== null && _a !== void 0 ? _a : config.schema;
|
|
225
|
+
const sid = (_c = (_b = config.sid) !== null && _b !== void 0 ? _b : config.serviceName) !== null && _c !== void 0 ? _c : '';
|
|
226
|
+
console.log(chalk_1.default.cyan(`\nConectando a Oracle ${config.host}:${config.port}/${sid}...`));
|
|
227
|
+
connection = await (0, connection_1.getConnection)(config);
|
|
228
|
+
console.log(chalk_1.default.green('✓ Conectado\n'));
|
|
229
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${tabla.toUpperCase()}...`));
|
|
230
|
+
const mainTable = await (0, inspector_1.inspectTable)(connection, tabla, schema);
|
|
231
|
+
const relatedNames = options.related
|
|
232
|
+
? options.related.split(',').map((t) => t.trim()).filter(Boolean)
|
|
233
|
+
: [];
|
|
234
|
+
const relatedTables = [];
|
|
235
|
+
for (const relName of relatedNames) {
|
|
236
|
+
console.log(chalk_1.default.cyan(`Inspeccionando ${schema}.${relName.toUpperCase()}...`));
|
|
237
|
+
relatedTables.push(await (0, inspector_1.inspectTable)(connection, relName, schema));
|
|
238
|
+
}
|
|
239
|
+
await (0, connection_1.closeConnection)(connection);
|
|
240
|
+
connection = undefined;
|
|
241
|
+
const divider = (label) => `\n-- ${'─'.repeat(30)} ${label} ${'─'.repeat(30)}\n`;
|
|
242
|
+
const allTables = [mainTable, ...relatedTables];
|
|
243
|
+
const ordered = relatedNames.length > 0 ? (0, topology_1.sortByDependencies)(allTables) : allTables;
|
|
244
|
+
let sql = `-- SCRIPT COMPLETO: ${schema}.${mainTable.name}\n`;
|
|
245
|
+
sql += `-- Generado: ${new Date().toLocaleString('es-MX')}\n`;
|
|
246
|
+
sql += divider('SELECT');
|
|
247
|
+
sql += (0, select_1.generateSelect)(mainTable, relatedTables);
|
|
248
|
+
sql += divider('INSERT');
|
|
249
|
+
for (const t of ordered)
|
|
250
|
+
sql += (0, insert_1.generateInsert)(t) + '\n';
|
|
251
|
+
sql += divider('UPDATE');
|
|
252
|
+
for (const t of ordered)
|
|
253
|
+
sql += (0, update_1.generateUpdate)(t) + '\n';
|
|
254
|
+
(0, history_1.saveToHistory)('gen script', tabla, sql);
|
|
255
|
+
if (options.output) {
|
|
256
|
+
const outputPath = path_1.default.resolve(process.cwd(), options.output);
|
|
257
|
+
fs_1.default.writeFileSync(outputPath, sql, 'utf-8');
|
|
258
|
+
console.log(chalk_1.default.green(`\n✓ Script guardado en: ${outputPath}\n`));
|
|
259
|
+
}
|
|
260
|
+
else if (options.clipboard) {
|
|
261
|
+
(0, clipboard_1.copyToClipboard)(sql);
|
|
262
|
+
console.log(chalk_1.default.green('\n✓ Script copiado al portapapeles.\n'));
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
console.log(chalk_1.default.bold.white('\n-- Script Completo:'));
|
|
266
|
+
console.log(chalk_1.default.gray('─'.repeat(80)));
|
|
267
|
+
console.log(chalk_1.default.yellow(sql));
|
|
268
|
+
console.log(chalk_1.default.gray('─'.repeat(80) + '\n'));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
catch (err) {
|
|
272
|
+
console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
|
|
273
|
+
process.exit(1);
|
|
274
|
+
}
|
|
275
|
+
finally {
|
|
276
|
+
if (connection)
|
|
277
|
+
await (0, connection_1.closeConnection)(connection);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=gen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gen.js","sourceRoot":"","sources":["../../src/commands/gen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkEtD"}
|