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.
Files changed (72) hide show
  1. package/.orasql.example +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +320 -0
  4. package/dist/commands/gen.d.ts +3 -0
  5. package/dist/commands/gen.d.ts.map +1 -0
  6. package/dist/commands/gen.js +281 -0
  7. package/dist/commands/gen.js.map +1 -0
  8. package/dist/commands/history.d.ts +3 -0
  9. package/dist/commands/history.d.ts.map +1 -0
  10. package/dist/commands/history.js +65 -0
  11. package/dist/commands/history.js.map +1 -0
  12. package/dist/commands/inspect.d.ts +3 -0
  13. package/dist/commands/inspect.d.ts.map +1 -0
  14. package/dist/commands/inspect.js +80 -0
  15. package/dist/commands/inspect.js.map +1 -0
  16. package/dist/commands/profile.d.ts +3 -0
  17. package/dist/commands/profile.d.ts.map +1 -0
  18. package/dist/commands/profile.js +86 -0
  19. package/dist/commands/profile.js.map +1 -0
  20. package/dist/commands/schemas.d.ts +3 -0
  21. package/dist/commands/schemas.d.ts.map +1 -0
  22. package/dist/commands/schemas.js +62 -0
  23. package/dist/commands/schemas.js.map +1 -0
  24. package/dist/core/connection.d.ts +6 -0
  25. package/dist/core/connection.d.ts.map +1 -0
  26. package/dist/core/connection.js +54 -0
  27. package/dist/core/connection.js.map +1 -0
  28. package/dist/core/inspector.d.ts +27 -0
  29. package/dist/core/inspector.d.ts.map +1 -0
  30. package/dist/core/inspector.js +135 -0
  31. package/dist/core/inspector.js.map +1 -0
  32. package/dist/generators/insert.d.ts +3 -0
  33. package/dist/generators/insert.d.ts.map +1 -0
  34. package/dist/generators/insert.js +51 -0
  35. package/dist/generators/insert.js.map +1 -0
  36. package/dist/generators/interactive.d.ts +3 -0
  37. package/dist/generators/interactive.d.ts.map +1 -0
  38. package/dist/generators/interactive.js +118 -0
  39. package/dist/generators/interactive.js.map +1 -0
  40. package/dist/generators/select.d.ts +3 -0
  41. package/dist/generators/select.d.ts.map +1 -0
  42. package/dist/generators/select.js +63 -0
  43. package/dist/generators/select.js.map +1 -0
  44. package/dist/generators/update.d.ts +3 -0
  45. package/dist/generators/update.d.ts.map +1 -0
  46. package/dist/generators/update.js +39 -0
  47. package/dist/generators/update.js.map +1 -0
  48. package/dist/index.d.ts +3 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +22 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/utils/clipboard.d.ts +2 -0
  53. package/dist/utils/clipboard.d.ts.map +1 -0
  54. package/dist/utils/clipboard.js +13 -0
  55. package/dist/utils/clipboard.js.map +1 -0
  56. package/dist/utils/config.d.ts +12 -0
  57. package/dist/utils/config.d.ts.map +1 -0
  58. package/dist/utils/config.js +42 -0
  59. package/dist/utils/config.js.map +1 -0
  60. package/dist/utils/history.d.ts +11 -0
  61. package/dist/utils/history.d.ts.map +1 -0
  62. package/dist/utils/history.js +51 -0
  63. package/dist/utils/history.js.map +1 -0
  64. package/dist/utils/profiles.d.ts +11 -0
  65. package/dist/utils/profiles.d.ts.map +1 -0
  66. package/dist/utils/profiles.js +47 -0
  67. package/dist/utils/profiles.js.map +1 -0
  68. package/dist/utils/topology.d.ts +8 -0
  69. package/dist/utils/topology.d.ts.map +1 -0
  70. package/dist/utils/topology.js +63 -0
  71. package/dist/utils/topology.js.map +1 -0
  72. package/package.json +61 -0
@@ -0,0 +1,65 @@
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.registerHistory = registerHistory;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const history_1 = require("../utils/history");
9
+ const clipboard_1 = require("../utils/clipboard");
10
+ function registerHistory(program) {
11
+ program
12
+ .command('history')
13
+ .description('Muestra el historial de queries generados')
14
+ .option('-n, --last <n>', 'Mostrar los últimos N queries', '10')
15
+ .option('--clear', 'Limpiar el historial')
16
+ .option('--get <id>', 'Mostrar el SQL de una entrada específica por ID')
17
+ .option('--clipboard <id>', 'Copiar el SQL de una entrada al portapapeles')
18
+ .action((options) => {
19
+ if (options.clear) {
20
+ (0, history_1.clearHistory)();
21
+ console.log(chalk_1.default.green('\n✓ Historial limpiado.\n'));
22
+ return;
23
+ }
24
+ const entries = (0, history_1.readHistory)();
25
+ if (options.clipboard) {
26
+ const id = parseInt(options.clipboard);
27
+ const entry = entries.find((e) => e.id === id);
28
+ if (!entry) {
29
+ console.error(chalk_1.default.red(`\n✗ No se encontró la entrada con ID ${id}.\n`));
30
+ process.exit(1);
31
+ }
32
+ (0, clipboard_1.copyToClipboard)(entry.sql);
33
+ console.log(chalk_1.default.green(`\n✓ SQL del ID ${id} copiado al portapapeles.\n`));
34
+ return;
35
+ }
36
+ if (options.get) {
37
+ const id = parseInt(options.get);
38
+ const entry = entries.find((e) => e.id === id);
39
+ if (!entry) {
40
+ console.error(chalk_1.default.red(`\n✗ No se encontró la entrada con ID ${id}.\n`));
41
+ process.exit(1);
42
+ }
43
+ console.log(chalk_1.default.bold.white(`\n[#${entry.id}] ${entry.command} — ${entry.table} — ${entry.timestamp}\n`));
44
+ console.log(chalk_1.default.gray('─'.repeat(80)));
45
+ console.log(chalk_1.default.yellow(entry.sql));
46
+ console.log(chalk_1.default.gray('─'.repeat(80) + '\n'));
47
+ return;
48
+ }
49
+ if (entries.length === 0) {
50
+ console.log(chalk_1.default.gray('\nNo hay historial de queries todavía.\n'));
51
+ return;
52
+ }
53
+ const n = parseInt(options.last);
54
+ const recent = entries.slice(-n).reverse();
55
+ console.log(chalk_1.default.bold.white(`\nÚltimos ${recent.length} queries generados:\n`));
56
+ console.log(chalk_1.default.bold(`${'ID'.padEnd(6)}${'Comando'.padEnd(15)}${'Tabla'.padEnd(25)}Fecha`));
57
+ console.log(chalk_1.default.gray('─'.repeat(70)));
58
+ for (const e of recent) {
59
+ const date = new Date(e.timestamp).toLocaleString('es-MX');
60
+ console.log(`${chalk_1.default.yellow(`#${e.id}`.padEnd(6))}${chalk_1.default.cyan(e.command.padEnd(15))}${chalk_1.default.white(e.table.padEnd(25))}${chalk_1.default.gray(date)}`);
61
+ }
62
+ console.log(chalk_1.default.gray(`\nTip: usa --get <ID> para ver el SQL completo, --clipboard <ID> para copiar.\n`));
63
+ });
64
+ }
65
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerInspect(program: Command): void;
3
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmDtD"}
@@ -0,0 +1,80 @@
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.registerInspect = registerInspect;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../utils/config");
9
+ const connection_1 = require("../core/connection");
10
+ const inspector_1 = require("../core/inspector");
11
+ function registerInspect(program) {
12
+ program
13
+ .command('inspect <tabla>')
14
+ .description('Muestra la estructura de una tabla Oracle (columnas, tipos, PKs, FKs, secuencias)')
15
+ .option('-s, --schema <schema>', 'Schema a usar (sobreescribe el del archivo .orasql)')
16
+ .action(async (tabla, options) => {
17
+ var _a;
18
+ let connection;
19
+ try {
20
+ const config = (0, config_1.loadConfig)();
21
+ const schema = (_a = options.schema) !== null && _a !== void 0 ? _a : config.schema;
22
+ console.log(chalk_1.default.cyan(`\nConectando a Oracle ${config.host}:${config.port}/${config.sid}...`));
23
+ connection = await (0, connection_1.getConnection)(config);
24
+ console.log(chalk_1.default.green('✓ Conectado\n'));
25
+ const tableInfo = await (0, inspector_1.inspectTable)(connection, tabla, schema);
26
+ // Header
27
+ console.log(chalk_1.default.bold.white(`Tabla: ${chalk_1.default.yellow(tableInfo.schema)}.${chalk_1.default.yellow(tableInfo.name)}`));
28
+ console.log(chalk_1.default.gray(`${'─'.repeat(80)}`));
29
+ // Column headers
30
+ const col1 = 'Columna'.padEnd(30);
31
+ const col2 = 'Tipo'.padEnd(22);
32
+ const col3 = 'Null'.padEnd(6);
33
+ const col4 = 'Flags';
34
+ console.log(chalk_1.default.bold(`${col1}${col2}${col3}${col4}`));
35
+ console.log(chalk_1.default.gray(`${'─'.repeat(80)}`));
36
+ // Rows
37
+ for (const col of tableInfo.columns) {
38
+ const flags = buildFlags(col);
39
+ const typeStr = formatType(col);
40
+ const nullStr = col.nullable ? 'YES' : 'NO';
41
+ const name = col.name.padEnd(30);
42
+ const type = typeStr.padEnd(22);
43
+ const nullable = (col.nullable ? chalk_1.default.gray(nullStr) : chalk_1.default.red(nullStr)).padEnd(15);
44
+ console.log(`${chalk_1.default.white(name)}${chalk_1.default.cyan(type)}${nullable}${flags}`);
45
+ }
46
+ console.log(chalk_1.default.gray(`${'─'.repeat(80)}`));
47
+ console.log(chalk_1.default.gray(`Total: ${tableInfo.columns.length} columnas\n`));
48
+ }
49
+ catch (err) {
50
+ console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
51
+ process.exit(1);
52
+ }
53
+ finally {
54
+ if (connection)
55
+ await (0, connection_1.closeConnection)(connection);
56
+ }
57
+ });
58
+ }
59
+ function formatType(col) {
60
+ if (col.dataType === 'NUMBER' && col.dataPrecision !== null) {
61
+ return `NUMBER(${col.dataPrecision}${col.dataScale ? `,${col.dataScale}` : ''})`;
62
+ }
63
+ if (['VARCHAR2', 'CHAR', 'NVARCHAR2'].includes(col.dataType) && col.dataLength) {
64
+ return `${col.dataType}(${col.dataLength})`;
65
+ }
66
+ return col.dataType;
67
+ }
68
+ function buildFlags(col) {
69
+ const flags = [];
70
+ if (col.isPrimaryKey)
71
+ flags.push(chalk_1.default.yellow('[PK]'));
72
+ if (col.isForeignKey)
73
+ flags.push(chalk_1.default.blue(`[FK→${col.referencedTable}]`));
74
+ if (col.sequence)
75
+ flags.push(chalk_1.default.magenta(`[SEQ:${col.sequence}]`));
76
+ if (col.dataDefault && !col.sequence)
77
+ flags.push(chalk_1.default.gray(`[DEFAULT:${col.dataDefault.trim()}]`));
78
+ return flags.join(' ');
79
+ }
80
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerProfile(program: Command): void;
3
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6EtD"}
@@ -0,0 +1,86 @@
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.registerProfile = registerProfile;
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 profiles_1 = require("../utils/profiles");
12
+ const ORASQL_FILE = path_1.default.resolve(process.cwd(), '.orasql');
13
+ function registerProfile(program) {
14
+ const profile = program
15
+ .command('profile')
16
+ .description('Gestiona perfiles de conexión (DEV, QA, PROD, etc.)');
17
+ // profile save <nombre>
18
+ profile
19
+ .command('save <nombre>')
20
+ .description('Guarda la configuración actual de .orasql como un perfil')
21
+ .action((nombre) => {
22
+ try {
23
+ const config = (0, config_1.loadConfig)();
24
+ (0, profiles_1.saveProfile)(nombre.toUpperCase(), config);
25
+ console.log(chalk_1.default.green(`\n✓ Perfil "${nombre.toUpperCase()}" guardado.\n`));
26
+ }
27
+ catch (err) {
28
+ console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
29
+ process.exit(1);
30
+ }
31
+ });
32
+ // profile use <nombre>
33
+ profile
34
+ .command('use <nombre>')
35
+ .description('Carga un perfil guardado y lo aplica al .orasql actual')
36
+ .action((nombre) => {
37
+ var _a, _b;
38
+ const found = (0, profiles_1.getProfile)(nombre.toUpperCase());
39
+ if (!found) {
40
+ console.error(chalk_1.default.red(`\n✗ Perfil "${nombre.toUpperCase()}" no encontrado.\n`));
41
+ console.log(chalk_1.default.gray('Usa "orasql-gen profile list" para ver los perfiles disponibles.\n'));
42
+ process.exit(1);
43
+ }
44
+ fs_1.default.writeFileSync(ORASQL_FILE, JSON.stringify(found.config, null, 2), 'utf-8');
45
+ const id = (_b = (_a = found.config.serviceName) !== null && _a !== void 0 ? _a : found.config.sid) !== null && _b !== void 0 ? _b : '';
46
+ console.log(chalk_1.default.green(`\n✓ Perfil "${found.name}" activado.`));
47
+ console.log(chalk_1.default.gray(` Host: ${found.config.host}:${found.config.port}/${id}`));
48
+ console.log(chalk_1.default.gray(` Schema: ${found.config.schema}\n`));
49
+ });
50
+ // profile list
51
+ profile
52
+ .command('list')
53
+ .description('Lista todos los perfiles guardados')
54
+ .action(() => {
55
+ var _a, _b;
56
+ const profiles = (0, profiles_1.readProfiles)();
57
+ if (profiles.length === 0) {
58
+ console.log(chalk_1.default.gray('\nNo hay perfiles guardados todavía.\n'));
59
+ console.log(chalk_1.default.gray('Usa "orasql-gen profile save <nombre>" para guardar uno.\n'));
60
+ return;
61
+ }
62
+ console.log(chalk_1.default.bold.white('\nPerfiles de conexión guardados:\n'));
63
+ console.log(chalk_1.default.bold(`${'Nombre'.padEnd(15)}${'Host'.padEnd(30)}${'Schema'.padEnd(20)}Guardado`));
64
+ console.log(chalk_1.default.gray('─'.repeat(80)));
65
+ for (const p of profiles) {
66
+ const id = (_b = (_a = p.config.serviceName) !== null && _a !== void 0 ? _a : p.config.sid) !== null && _b !== void 0 ? _b : '';
67
+ const host = `${p.config.host}:${p.config.port}/${id}`;
68
+ const date = new Date(p.savedAt).toLocaleDateString('es-MX');
69
+ console.log(`${chalk_1.default.yellow(p.name.padEnd(15))}${chalk_1.default.cyan(host.padEnd(30))}${chalk_1.default.white(p.config.schema.padEnd(20))}${chalk_1.default.gray(date)}`);
70
+ }
71
+ console.log(chalk_1.default.gray('\nUsa "orasql-gen profile use <nombre>" para activar un perfil.\n'));
72
+ });
73
+ // profile delete <nombre>
74
+ profile
75
+ .command('delete <nombre>')
76
+ .description('Elimina un perfil guardado')
77
+ .action((nombre) => {
78
+ const deleted = (0, profiles_1.deleteProfile)(nombre.toUpperCase());
79
+ if (!deleted) {
80
+ console.error(chalk_1.default.red(`\n✗ Perfil "${nombre.toUpperCase()}" no encontrado.\n`));
81
+ process.exit(1);
82
+ }
83
+ console.log(chalk_1.default.green(`\n✓ Perfil "${nombre.toUpperCase()}" eliminado.\n`));
84
+ });
85
+ }
86
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/commands/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSchemas(program: Command): void;
3
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/commands/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuDtD"}
@@ -0,0 +1,62 @@
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.registerSchemas = registerSchemas;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const config_1 = require("../utils/config");
9
+ const connection_1 = require("../core/connection");
10
+ const oracledb_1 = __importDefault(require("oracledb"));
11
+ function registerSchemas(program) {
12
+ program
13
+ .command('schemas')
14
+ .description('Lista los schemas disponibles y busca en cuál schema está una tabla')
15
+ .option('-t, --tabla <tabla>', 'Buscar en qué schema existe esta tabla')
16
+ .action(async (options) => {
17
+ var _a;
18
+ let connection;
19
+ try {
20
+ const config = (0, config_1.loadConfig)();
21
+ connection = await (0, connection_1.getConnection)(config);
22
+ if (options.tabla) {
23
+ // Buscar en qué schema está la tabla
24
+ const upperTabla = options.tabla.toUpperCase();
25
+ const result = await connection.execute(`SELECT OWNER, TABLE_NAME, NUM_ROWS
26
+ FROM ALL_TABLES
27
+ WHERE TABLE_NAME = :tbl
28
+ ORDER BY OWNER`, { tbl: upperTabla }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
29
+ if (!result.rows || result.rows.length === 0) {
30
+ console.log(chalk_1.default.red(`\n✗ Tabla "${upperTabla}" no encontrada en ningún schema accesible.\n`));
31
+ }
32
+ else {
33
+ console.log(chalk_1.default.bold.white(`\nTabla "${upperTabla}" encontrada en:\n`));
34
+ for (const row of result.rows) {
35
+ console.log(` ${chalk_1.default.yellow(row.OWNER)} ${chalk_1.default.gray(`(filas aprox: ${(_a = row.NUM_ROWS) !== null && _a !== void 0 ? _a : 'N/A'})`)}`);
36
+ }
37
+ console.log(chalk_1.default.gray(`\nUsa ese valor en "schema" dentro de tu .orasql\n`));
38
+ }
39
+ }
40
+ else {
41
+ // Listar todos los schemas accesibles
42
+ const result = await connection.execute(`SELECT DISTINCT OWNER
43
+ FROM ALL_TABLES
44
+ ORDER BY OWNER`, {}, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
45
+ console.log(chalk_1.default.bold.white(`\nSchemas accesibles con tu usuario:\n`));
46
+ for (const row of (result.rows || [])) {
47
+ console.log(` ${chalk_1.default.yellow(row.OWNER)}`);
48
+ }
49
+ console.log(chalk_1.default.gray(`\nTip: usa --tabla <nombre> para encontrar en qué schema está una tabla específica\n`));
50
+ }
51
+ }
52
+ catch (err) {
53
+ console.error(chalk_1.default.red(`\n✗ Error: ${err.message}\n`));
54
+ process.exit(1);
55
+ }
56
+ finally {
57
+ if (connection)
58
+ await (0, connection_1.closeConnection)(connection);
59
+ }
60
+ });
61
+ }
62
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/commands/schemas.ts"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAC1B,4CAA6C;AAC7C,mDAAoE;AACpE,wDAAgC;AAEhC,yBAAgC,OAAgB;IAC9C,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qEAAqE,CAAC;SAClF,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;SACvE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;;QAC5C,IAAI,UAAU,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,mBAAU,GAAE,CAAC;YAC5B,UAAU,GAAG,MAAM,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;YAEzC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,qCAAqC;gBACrC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CACrC;;;4BAGgB,EAChB,EAAE,GAAG,EAAE,UAAU,EAAE,EACnB,EAAE,SAAS,EAAE,kBAAQ,CAAC,iBAAiB,EAAE,CAC1C,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,UAAU,+CAA+C,CAAC,CAAC,CAAC;gBAClG,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,UAAU,oBAAoB,CAAC,CAAC,CAAC;oBAC1E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAa,EAAE,CAAC;wBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,iBAAiB,MAAA,GAAG,CAAC,QAAQ,mCAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxG,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CACrC;;4BAEgB,EAChB,EAAE,EACF,EAAE,SAAS,EAAE,kBAAQ,CAAC,iBAAiB,EAAE,CAC1C,CAAC;gBAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;gBACxE,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAU,EAAE,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,IAAI,UAAU;gBAAE,MAAM,IAAA,4BAAe,EAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ import oracledb from 'oracledb';
2
+ import { OraConfig } from '../utils/config';
3
+ export type Connection = oracledb.Connection;
4
+ export declare function getConnection(config: OraConfig): Promise<Connection>;
5
+ export declare function closeConnection(connection: Connection): Promise<void>;
6
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;AAkB7C,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAqB1E;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E"}
@@ -0,0 +1,54 @@
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.getConnection = getConnection;
7
+ exports.closeConnection = closeConnection;
8
+ const oracledb_1 = __importDefault(require("oracledb"));
9
+ let thickModeInitialized = false;
10
+ function enableThickMode(libDir) {
11
+ if (thickModeInitialized)
12
+ return;
13
+ try {
14
+ oracledb_1.default.initOracleClient(libDir ? { libDir } : undefined);
15
+ thickModeInitialized = true;
16
+ }
17
+ catch (err) {
18
+ throw new Error(`No se pudo inicializar Oracle Instant Client.\n` +
19
+ `Verifica que la ruta "instantClientDir" en .orasql sea correcta.\n` +
20
+ `Detalle: ${err.message}`);
21
+ }
22
+ }
23
+ async function getConnection(config) {
24
+ enableThickMode(config.instantClientDir);
25
+ try {
26
+ const connectString = config.serviceName
27
+ ? `(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${config.host})(PORT=${config.port}))(CONNECT_DATA=(SERVICE_NAME=${config.serviceName})))`
28
+ : `(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=${config.host})(PORT=${config.port}))(CONNECT_DATA=(SID=${config.sid})))`;
29
+ const connection = await oracledb_1.default.getConnection({
30
+ user: config.user,
31
+ password: config.password,
32
+ connectString,
33
+ });
34
+ return connection;
35
+ }
36
+ catch (err) {
37
+ if (err.errorNum === 1017) {
38
+ throw new Error('Credenciales incorrectas. Verifica usuario y contraseña en ".orasql".');
39
+ }
40
+ if (err.errorNum === 12541 || err.code === 'ECONNREFUSED') {
41
+ throw new Error(`No se pudo conectar a Oracle en ${config.host}:${config.port}. Verifica que el servicio esté activo.`);
42
+ }
43
+ throw new Error(`Error de conexión: ${err.message}`);
44
+ }
45
+ }
46
+ async function closeConnection(connection) {
47
+ try {
48
+ await connection.close();
49
+ }
50
+ catch {
51
+ // Ignorar errores al cerrar
52
+ }
53
+ }
54
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":";;;;;;;AAAA,wDAAgC;AAKhC,IAAI,oBAAoB,GAAG,KAAK,CAAC;AAEjC,SAAS,eAAe,CAAC,MAAe;IACtC,IAAI,oBAAoB;QAAE,OAAO;IACjC,IAAI,CAAC;QACH,kBAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3D,oBAAoB,GAAG,IAAI,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iDAAiD;YACjD,oEAAoE;YACpE,YAAY,GAAG,CAAC,OAAO,EAAE,CAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAEM,KAAK,wBAAwB,MAAiB;IACnD,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW;YACtC,CAAC,CAAC,6CAA6C,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,iCAAiC,MAAM,CAAC,WAAW,KAAK;YACvI,CAAC,CAAC,6CAA6C,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,wBAAwB,MAAM,CAAC,GAAG,KAAK,CAAC;QACzH,MAAM,UAAU,GAAG,MAAM,kBAAQ,CAAC,aAAa,CAAC;YAC9C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,aAAa;SACd,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,yCAAyC,CAAC,CAAC;QAC1H,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAEM,KAAK,0BAA0B,UAAsB;IAC1D,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Connection } from './connection';
2
+ export interface ColumnInfo {
3
+ name: string;
4
+ dataType: string;
5
+ nullable: boolean;
6
+ dataDefault: string | null;
7
+ dataLength: number | null;
8
+ dataPrecision: number | null;
9
+ dataScale: number | null;
10
+ isPrimaryKey: boolean;
11
+ isForeignKey: boolean;
12
+ referencedTable: string | null;
13
+ referencedColumn: string | null;
14
+ sequence: string | null;
15
+ }
16
+ export interface TableInfo {
17
+ name: string;
18
+ schema: string;
19
+ columns: ColumnInfo[];
20
+ }
21
+ /**
22
+ * Busca en qué schemas está disponible una tabla.
23
+ * Retorna lista de owners (schemas) que tienen esa tabla.
24
+ */
25
+ export declare function findTableOwners(connection: Connection, tableName: string): Promise<string[]>;
26
+ export declare function inspectTable(connection: Connection, tableName: string, schema: string): Promise<TableInfo>;
27
+ //# sourceMappingURL=inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,CA+IpB"}
@@ -0,0 +1,135 @@
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.findTableOwners = findTableOwners;
7
+ exports.inspectTable = inspectTable;
8
+ /**
9
+ * Busca en qué schemas está disponible una tabla.
10
+ * Retorna lista de owners (schemas) que tienen esa tabla.
11
+ */
12
+ async function findTableOwners(connection, tableName) {
13
+ const result = await connection.execute(`SELECT OWNER FROM ALL_TABLES WHERE TABLE_NAME = :tbl ORDER BY OWNER`, { tbl: tableName.toUpperCase() }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
14
+ return (result.rows || []).map((r) => r.OWNER);
15
+ }
16
+ async function inspectTable(connection, tableName, schema) {
17
+ const upperTable = tableName.toUpperCase();
18
+ let upperSchema = schema.toUpperCase();
19
+ // 1. Obtener columnas de la tabla
20
+ let colResult = await connection.execute(`SELECT
21
+ col.COLUMN_NAME,
22
+ col.DATA_TYPE,
23
+ col.NULLABLE,
24
+ col.DATA_DEFAULT,
25
+ col.DATA_LENGTH,
26
+ col.DATA_PRECISION,
27
+ col.DATA_SCALE,
28
+ col.COLUMN_ID
29
+ FROM ALL_TAB_COLUMNS col
30
+ WHERE col.OWNER = :schema
31
+ AND col.TABLE_NAME = :tbl
32
+ ORDER BY col.COLUMN_ID`, { schema: upperSchema, tbl: upperTable }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
33
+ // Auto-discovery: si no se encontró en el schema por defecto, buscar en otros schemas
34
+ if (!colResult.rows || colResult.rows.length === 0) {
35
+ const owners = await findTableOwners(connection, upperTable);
36
+ if (owners.length === 0) {
37
+ throw new Error(`Tabla "${upperTable}" no encontrada en ningún schema accesible.`);
38
+ }
39
+ if (owners.length > 1) {
40
+ throw new Error(`Tabla "${upperTable}" encontrada en múltiples schemas: ${owners.join(', ')}.\n` +
41
+ `Especifica el schema con: --schema <nombre>\n` +
42
+ `Ejemplo: --schema ${owners[0]}`);
43
+ }
44
+ // Encontrada en exactamente un schema → usarlo automáticamente
45
+ upperSchema = owners[0];
46
+ console.log(` ℹ️ Tabla encontrada en schema: ${upperSchema}`);
47
+ colResult = await connection.execute(`SELECT
48
+ col.COLUMN_NAME,
49
+ col.DATA_TYPE,
50
+ col.NULLABLE,
51
+ col.DATA_DEFAULT,
52
+ col.DATA_LENGTH,
53
+ col.DATA_PRECISION,
54
+ col.DATA_SCALE,
55
+ col.COLUMN_ID
56
+ FROM ALL_TAB_COLUMNS col
57
+ WHERE col.OWNER = :schema
58
+ AND col.TABLE_NAME = :tbl
59
+ ORDER BY col.COLUMN_ID`, { schema: upperSchema, tbl: upperTable }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
60
+ }
61
+ // 2. Obtener Primary Keys
62
+ const pkResult = await connection.execute(`SELECT col.COLUMN_NAME
63
+ FROM ALL_CONSTRAINTS con
64
+ JOIN ALL_CONS_COLUMNS col ON con.CONSTRAINT_NAME = col.CONSTRAINT_NAME
65
+ AND con.OWNER = col.OWNER
66
+ WHERE con.OWNER = :schema
67
+ AND con.TABLE_NAME = :tbl
68
+ AND con.CONSTRAINT_TYPE = 'P'`, { schema: upperSchema, tbl: upperTable }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
69
+ const primaryKeys = new Set((pkResult.rows || []).map((r) => r.COLUMN_NAME));
70
+ // 3. Obtener Foreign Keys
71
+ const fkResult = await connection.execute(`SELECT
72
+ col.COLUMN_NAME,
73
+ rcon.TABLE_NAME AS REF_TABLE,
74
+ rcol.COLUMN_NAME AS REF_COLUMN
75
+ FROM ALL_CONSTRAINTS con
76
+ JOIN ALL_CONS_COLUMNS col ON con.CONSTRAINT_NAME = col.CONSTRAINT_NAME
77
+ AND con.OWNER = col.OWNER
78
+ JOIN ALL_CONSTRAINTS rcon ON con.R_CONSTRAINT_NAME = rcon.CONSTRAINT_NAME
79
+ AND con.R_OWNER = rcon.OWNER
80
+ JOIN ALL_CONS_COLUMNS rcol ON rcon.CONSTRAINT_NAME = rcol.CONSTRAINT_NAME
81
+ AND rcon.OWNER = rcol.OWNER
82
+ WHERE con.OWNER = :schema
83
+ AND con.TABLE_NAME = :tbl
84
+ AND con.CONSTRAINT_TYPE = 'R'`, { schema: upperSchema, tbl: upperTable }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
85
+ const foreignKeys = new Map();
86
+ for (const fk of (fkResult.rows || [])) {
87
+ foreignKeys.set(fk.COLUMN_NAME, {
88
+ table: fk.REF_TABLE,
89
+ column: fk.REF_COLUMN,
90
+ });
91
+ }
92
+ // 4. Buscar secuencias relacionadas (por convención SEQ_TABLENAME o SEQ_TABLENAME_COLUMNNAME)
93
+ const seqResult = await connection.execute(`SELECT SEQUENCE_NAME
94
+ FROM ALL_SEQUENCES
95
+ WHERE SEQUENCE_OWNER = :schema
96
+ AND (SEQUENCE_NAME LIKE :seq1 OR SEQUENCE_NAME LIKE :seq2)`, {
97
+ schema: upperSchema,
98
+ seq1: `SEQ_${upperTable}%`,
99
+ seq2: `%${upperTable}%SEQ%`,
100
+ }, { outFormat: oracledb_1.default.OUT_FORMAT_OBJECT });
101
+ const sequences = (seqResult.rows || []).map((r) => r.SEQUENCE_NAME);
102
+ // 5. Mapear columnas
103
+ const columns = colResult.rows.map((row) => {
104
+ var _a, _b;
105
+ const colName = row.COLUMN_NAME;
106
+ const fkRef = foreignKeys.get(colName);
107
+ const sequence = findSequenceForColumn(sequences, upperTable, colName);
108
+ return {
109
+ name: colName,
110
+ dataType: row.DATA_TYPE,
111
+ nullable: row.NULLABLE === 'Y',
112
+ dataDefault: row.DATA_DEFAULT ? String(row.DATA_DEFAULT).trim() : null,
113
+ dataLength: row.DATA_LENGTH,
114
+ dataPrecision: row.DATA_PRECISION,
115
+ dataScale: row.DATA_SCALE,
116
+ isPrimaryKey: primaryKeys.has(colName),
117
+ isForeignKey: !!fkRef,
118
+ referencedTable: (_a = fkRef === null || fkRef === void 0 ? void 0 : fkRef.table) !== null && _a !== void 0 ? _a : null,
119
+ referencedColumn: (_b = fkRef === null || fkRef === void 0 ? void 0 : fkRef.column) !== null && _b !== void 0 ? _b : null,
120
+ sequence,
121
+ };
122
+ });
123
+ return { name: upperTable, schema: upperSchema, columns };
124
+ }
125
+ function findSequenceForColumn(sequences, tableName, columnName) {
126
+ // Prioridad: SEQ_TABLENAME_COLUMNNAME > SEQ_TABLENAME
127
+ const exactMatch = sequences.find((s) => s === `SEQ_${tableName}_${columnName}` || s === `SEQ_${columnName}`);
128
+ if (exactMatch)
129
+ return exactMatch;
130
+ const tableMatch = sequences.find((s) => s.startsWith(`SEQ_${tableName}`));
131
+ return tableMatch !== null && tableMatch !== void 0 ? tableMatch : null;
132
+ }
133
+ // Necesitamos importar oracledb para OUT_FORMAT_OBJECT
134
+ const oracledb_1 = __importDefault(require("oracledb"));
135
+ //# sourceMappingURL=inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { TableInfo } from '../core/inspector';
2
+ export declare function generateInsert(table: TableInfo): string;
3
+ //# sourceMappingURL=insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/generators/insert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAK1D,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAYvD"}