herdux-cli 0.4.2 → 0.5.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 (48) hide show
  1. package/README.md +11 -4
  2. package/README.pt-BR.md +11 -4
  3. package/dist/commands/backup.d.ts.map +1 -1
  4. package/dist/commands/backup.js +12 -1
  5. package/dist/commands/backup.js.map +1 -1
  6. package/dist/commands/clean.d.ts.map +1 -1
  7. package/dist/commands/clean.js +9 -1
  8. package/dist/commands/clean.js.map +1 -1
  9. package/dist/commands/config.d.ts.map +1 -1
  10. package/dist/commands/config.js +19 -2
  11. package/dist/commands/config.js.map +1 -1
  12. package/dist/commands/create.d.ts.map +1 -1
  13. package/dist/commands/create.js +10 -1
  14. package/dist/commands/create.js.map +1 -1
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +6 -1
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/drop.d.ts.map +1 -1
  19. package/dist/commands/drop.js +11 -1
  20. package/dist/commands/drop.js.map +1 -1
  21. package/dist/commands/list.d.ts.map +1 -1
  22. package/dist/commands/list.js +8 -1
  23. package/dist/commands/list.js.map +1 -1
  24. package/dist/commands/restore.d.ts.map +1 -1
  25. package/dist/commands/restore.js +10 -1
  26. package/dist/commands/restore.js.map +1 -1
  27. package/dist/commands/version.d.ts.map +1 -1
  28. package/dist/commands/version.js +6 -1
  29. package/dist/commands/version.js.map +1 -1
  30. package/dist/core/interfaces/database-engine.interface.d.ts +1 -1
  31. package/dist/core/interfaces/database-engine.interface.d.ts.map +1 -1
  32. package/dist/index.js +27 -2
  33. package/dist/index.js.map +1 -1
  34. package/dist/infra/engines/engine-factory.d.ts.map +1 -1
  35. package/dist/infra/engines/engine-factory.js +3 -0
  36. package/dist/infra/engines/engine-factory.js.map +1 -1
  37. package/dist/infra/engines/resolve-connection.d.ts.map +1 -1
  38. package/dist/infra/engines/resolve-connection.js +78 -55
  39. package/dist/infra/engines/resolve-connection.js.map +1 -1
  40. package/dist/infra/engines/sqlite/sqlite-env.d.ts +2 -0
  41. package/dist/infra/engines/sqlite/sqlite-env.d.ts.map +1 -0
  42. package/dist/infra/engines/sqlite/sqlite-env.js +24 -0
  43. package/dist/infra/engines/sqlite/sqlite-env.js.map +1 -0
  44. package/dist/infra/engines/sqlite/sqlite.engine.d.ts +21 -0
  45. package/dist/infra/engines/sqlite/sqlite.engine.d.ts.map +1 -0
  46. package/dist/infra/engines/sqlite/sqlite.engine.js +207 -0
  47. package/dist/infra/engines/sqlite/sqlite.engine.js.map +1 -0
  48. package/package.json +4 -1
package/README.md CHANGED
@@ -12,11 +12,12 @@
12
12
 
13
13
  A fast, interactive CLI that removes friction from daily local database workflows, especially when juggling multiple instances and large datasets.
14
14
 
15
- ![Version](https://img.shields.io/badge/version-0.4.2-blue.svg)
15
+ ![Version](https://img.shields.io/badge/version-0.5.0-blue.svg)
16
16
  ![License](https://img.shields.io/badge/license-MIT-green.svg)
17
17
  ![Node](https://img.shields.io/badge/node-18%2B-43853d.svg)
18
18
  ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=flat&logo=postgresql&logoColor=white)
19
19
  ![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=flat&logo=mysql&logoColor=white)
20
+ ![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat&logo=sqlite&logoColor=white)
20
21
  [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?style=flat&logo=github)](https://github.com/sponsors/eduardozaniboni)
21
22
  [![Buy Me A Coffee](https://img.shields.io/badge/Buy_Me_A_Coffee-FFDD00?style=flat&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/eduardozaniboni)
22
23
 
@@ -48,6 +49,7 @@ That's it. You're managing databases.
48
49
  | ---------- | ------ | ------------------------------- |
49
50
  | PostgreSQL | ✅ | `psql`, `pg_dump`, `pg_restore` |
50
51
  | MySQL | ✅ | `mysql`, `mysqldump` |
52
+ | SQLite | ✅ | `sqlite3` |
51
53
 
52
54
  Herdux resolves the engine explicitly using a strict priority order (CLI flags → profiles → saved defaults → fallback).
53
55
 
@@ -62,6 +64,10 @@ herdux create mydb
62
64
  herdux --engine mysql list
63
65
  herdux --engine mysql create mydb
64
66
 
67
+ # SQLite (file-based, no server required)
68
+ herdux --engine sqlite list
69
+ herdux --engine sqlite create mydb
70
+
65
71
  # Or save it in a profile and forget about it
66
72
  herdux config add mysql-local --port 3306 --user root --password secret --engine mysql
67
73
  herdux list -s mysql-local
@@ -134,7 +140,7 @@ It is specifically designed for developers who:
134
140
  - Need safe backup & restore workflows that don't rely on fragile bash scripts.
135
141
  - Prefer terminal-first tooling.
136
142
  - Want predictable connection resolution without hidden magic.
137
- - Work with **multiple database engines** (PostgreSQL, MySQL) and want a unified interface.
143
+ - Work with **multiple database engines** (PostgreSQL, MySQL, SQLite) and want a unified interface.
138
144
 
139
145
  If you manage databases locally, Herdux was created to solve your pain.
140
146
 
@@ -142,7 +148,7 @@ If you manage databases locally, Herdux was created to solve your pain.
142
148
 
143
149
  ## 🚀 Key Features
144
150
 
145
- - **🔌 Multi-Engine Support** — First-class support for PostgreSQL and MySQL. Same commands, same workflow, any engine.
151
+ - **🔌 Multi-Engine Support** — First-class support for PostgreSQL, MySQL, and SQLite. Same commands, same workflow, any engine.
146
152
  - **📋 Smart Listing** — Optimized listing strategy for massive clusters. Optional `--size` flag for disk usage analysis, sorted largest-first.
147
153
  - **💾 Intelligent Backup & Restore** — Supports Custom (`.dump`) and Plain (`.sql`) formats. Auto-detects the right tool for restores.
148
154
  - **🧹 Bulk Cleanup** — Multi-select databases, optionally backup, and batch-drop them. Reclaim disk space instantly.
@@ -183,6 +189,7 @@ If you manage databases locally, Herdux was created to solve your pain.
183
189
  - **Node.js** 18 or higher
184
190
  - **For PostgreSQL:** `psql`, `pg_dump`, `pg_restore` installed and available in your `PATH`
185
191
  - **For MySQL:** `mysql`, `mysqldump` installed and available in your `PATH`
192
+ - **For SQLite:** `sqlite3` installed and available in your `PATH`
186
193
 
187
194
  > [!TIP]
188
195
  > Run `herdux doctor` after installation to verify everything is set up correctly. The doctor command checks the tools for the active engine.
@@ -213,7 +220,7 @@ npm link
213
220
 
214
221
  ## 🛠️ Commands
215
222
 
216
- All commands work with both PostgreSQL and MySQL. Use `--engine mysql` or configure engine in your server profile.
223
+ All commands work with PostgreSQL, MySQL, and SQLite. Use `--engine mysql` or `--engine sqlite`, or configure the engine in your server profile.
217
224
 
218
225
  ### `herdux version`
219
226
 
package/README.pt-BR.md CHANGED
@@ -12,11 +12,12 @@
12
12
 
13
13
  Uma CLI rápida e interativa que remove a fricção dos workflows diários com bancos de dados locais, especialmente ao lidar com múltiplas instâncias e grandes datasets.
14
14
 
15
- ![Version](https://img.shields.io/badge/version-0.4.2-blue.svg)
15
+ ![Version](https://img.shields.io/badge/version-0.5.0-blue.svg)
16
16
  ![License](https://img.shields.io/badge/license-MIT-green.svg)
17
17
  ![Node](https://img.shields.io/badge/node-18%2B-43853d.svg)
18
18
  ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?style=flat&logo=postgresql&logoColor=white)
19
19
  ![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=flat&logo=mysql&logoColor=white)
20
+ ![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat&logo=sqlite&logoColor=white)
20
21
  [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?style=flat&logo=github)](https://github.com/sponsors/eduardozaniboni)
21
22
  [![Buy Me A Coffee](https://img.shields.io/badge/Buy_Me_A_Coffee-FFDD00?style=flat&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/eduardozaniboni)
22
23
 
@@ -48,6 +49,7 @@ herdux list
48
49
  | ---------- | ------ | ------------------------------- |
49
50
  | PostgreSQL | ✅ | `psql`, `pg_dump`, `pg_restore` |
50
51
  | MySQL | ✅ | `mysql`, `mysqldump` |
52
+ | SQLite | ✅ | `sqlite3` |
51
53
 
52
54
  O Herdux detecta automaticamente a engine a partir do seu perfil de servidor ou da flag `--engine`. PostgreSQL é o padrão quando nenhuma engine é especificada.
53
55
 
@@ -60,6 +62,10 @@ herdux create mydb
60
62
  herdux --engine mysql list
61
63
  herdux --engine mysql create mydb
62
64
 
65
+ # SQLite (baseado em arquivos, sem servidor)
66
+ herdux --engine sqlite list
67
+ herdux --engine sqlite create mydb
68
+
63
69
  # Ou salve no perfil e esqueça
64
70
  herdux config add mysql-local --port 3306 --user root --password secret --engine mysql
65
71
  herdux list -s mysql-local
@@ -110,7 +116,7 @@ Ele é especificamente projetado para desenvolvedores que:
110
116
  - Precisam de fluxos seguros de backup & restore que não dependam de scripts bash frágeis.
111
117
  - Preferem ferramentas focadas no terminal (terminal-first).
112
118
  - Querem resolução previsível de conexões sem mágicas ocultas.
113
- - Trabalham com **múltiplas engines de banco de dados** (PostgreSQL, MySQL) e querem uma interface unificada.
119
+ - Trabalham com **múltiplas engines de banco de dados** (PostgreSQL, MySQL, SQLite) e querem uma interface unificada.
114
120
 
115
121
  Se você gerencia bancos de dados localmente e compartilha dessa dor, o Herdux foi criado para você.
116
122
 
@@ -118,7 +124,7 @@ Se você gerencia bancos de dados localmente e compartilha dessa dor, o Herdux f
118
124
 
119
125
  ## 🚀 Funcionalidades Principais
120
126
 
121
- - **🔌 Suporte Multi-Engine** — Suporte de primeira classe para PostgreSQL e MySQL. Mesmos comandos, mesmo workflow, qualquer engine.
127
+ - **🔌 Suporte Multi-Engine** — Suporte de primeira classe para PostgreSQL, MySQL e SQLite. Mesmos comandos, mesmo workflow, qualquer engine.
122
128
  - **📋 Listagem Inteligente** — Estratégia otimizada para clusters massivos. Flag opcional `--size` para análise de uso de disco, ordenado do maior para o menor.
123
129
  - **💾 Backup & Restore Inteligente** — Suporta formatos Custom (`.dump`) e Plain (`.sql`). Detecta automaticamente a ferramenta correta para restauração.
124
130
  - **🧹 Limpeza em Massa** — Multi-seleção de bancos, backup opcional e batch-drop. Recupere espaço em disco instantaneamente.
@@ -159,6 +165,7 @@ O **Herdux** trata operações destrutivas com cuidado:
159
165
  - **Node.js** 18 ou superior
160
166
  - **Para PostgreSQL:** `psql`, `pg_dump`, `pg_restore` instalados e disponíveis no `PATH`
161
167
  - **Para MySQL:** `mysql`, `mysqldump` instalados e disponíveis no `PATH`
168
+ - **Para SQLite:** `sqlite3` instalado e disponível no `PATH`
162
169
 
163
170
  > [!TIP]
164
171
  > Execute `herdux doctor` após a instalação para verificar se tudo está configurado corretamente. O comando doctor verifica as ferramentas da engine ativa.
@@ -189,7 +196,7 @@ npm link
189
196
 
190
197
  ## 🛠️ Comandos
191
198
 
192
- Todos os comandos funcionam tanto com PostgreSQL quanto com MySQL. Use `--engine mysql` ou configure a engine no seu perfil de servidor.
199
+ Todos os comandos funcionam com PostgreSQL, MySQL e SQLite. Use `--engine mysql` ou `--engine sqlite`, ou configure a engine no seu perfil de servidor.
193
200
 
194
201
  ### `herdux version`
195
202
 
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F5D"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+G5D"}
@@ -8,12 +8,23 @@ import { homedir } from "os";
8
8
  export function registerBackupCommand(program) {
9
9
  program
10
10
  .command("backup <database>")
11
- .description("Create a backup of a database")
11
+ .description("Create a backup of a database to a local file")
12
+ .addHelpText("after", `
13
+ Examples:
14
+ hdx backup mydb
15
+ hdx backup mydb --output /tmp/backups
16
+ hdx backup mydb --format plain
17
+ hdx backup mydb --drop --yes # Backup then drop without confirmation
18
+ hdx backup mydb --engine mysql`)
12
19
  .option("-o, --output <dir>", "Output directory for the backup (overrides global config)")
13
20
  .option("-d, --drop", "Ask to drop the database after a successful backup")
14
21
  .option("-y, --yes", "Skip confirmation when dropping (requires --drop)")
15
22
  .option("-F, --format <type>", "Backup format format (custom, plain)", "custom")
16
23
  .action(async (database, cmdOpts) => {
24
+ if (/[\s;|&`$<>(){}\\]/.test(database)) {
25
+ console.error(chalk.red(`\n✖ Invalid database name "${database}". Avoid spaces and special characters (; | & \` $ < > ( ) { } \\).\n`));
26
+ process.exit(1);
27
+ }
17
28
  try {
18
29
  const rawOpts = program.opts();
19
30
  const { engine, opts } = await resolveEngineAndConnection(rawOpts);
@@ -1 +1 @@
1
- {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuH3D"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkI3D"}
@@ -8,7 +8,15 @@ import { homedir } from "os";
8
8
  export function registerCleanCommand(program) {
9
9
  program
10
10
  .command("clean")
11
- .description("Interactive bulk cleanup tool to drop multiple databases")
11
+ .description("Interactively select and drop multiple databases at once")
12
+ .addHelpText("after", `
13
+ Examples:
14
+ hdx clean
15
+ hdx clean --engine mysql
16
+ hdx clean --host 192.168.1.1 --user admin
17
+
18
+ Note: You will be prompted to select databases, optionally backup them first,
19
+ and confirm before any data is deleted.`)
12
20
  .action(async () => {
13
21
  try {
14
22
  const rawOpts = program.opts();
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6K5D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwM5D"}
@@ -6,7 +6,15 @@ export function registerConfigCommand(program) {
6
6
  const configCmd = program
7
7
  .command("config")
8
8
  .helpCommand(false)
9
- .description("Manage Herdux configuration");
9
+ .description("Manage Herdux configuration (default connection, server profiles, scan ports)")
10
+ .addHelpText("after", `
11
+ Examples:
12
+ hdx config list
13
+ hdx config set host 192.168.1.1
14
+ hdx config set engine mysql
15
+ hdx config get host
16
+ hdx config add-server prod --host prod.example.com --user admin
17
+ hdx config scan-ports 5432 5433`);
10
18
  configCmd;
11
19
  configCmd
12
20
  .command("set <key> <value>")
@@ -143,7 +151,16 @@ export function registerConfigCommand(program) {
143
151
  configCmd
144
152
  .command("scan-ports <ports...>")
145
153
  .alias("scan")
146
- .description("Set custom ports to scan for database instances")
154
+ .description("Set custom ports used when auto-discovering running database instances")
155
+ .addHelpText("after", `
156
+ Examples:
157
+ hdx config scan-ports 5432
158
+ hdx config scan-ports 5432 5433
159
+ hdx config scan-ports 3306 3307
160
+
161
+ Note: These ports are used when no explicit --port flag is provided and Herdux needs
162
+ to auto-detect a running server (e.g. on 'hdx version' or 'hdx list').
163
+ Use 'hdx config list' to see the currently configured scan ports.`)
147
164
  .action((ports) => {
148
165
  config.setScanPorts(ports);
149
166
  logger.success(`Scan ports set to: ${chalk.cyan(ports.join(", "))}`);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqC5D"}
@@ -4,8 +4,17 @@ import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.
4
4
  export function registerCreateCommand(program) {
5
5
  program
6
6
  .command("create <name>")
7
- .description("Create a new database")
7
+ .description("Create a new empty database")
8
+ .addHelpText("after", `
9
+ Examples:
10
+ hdx create mydb
11
+ hdx create mydb --engine mysql
12
+ hdx create mydb --host 192.168.1.1 --user admin`)
8
13
  .action(async (name) => {
14
+ if (/[\s;|&`$<>(){}\\]/.test(name)) {
15
+ console.error(chalk.red(`\n✖ Invalid database name "${name}". Avoid spaces and special characters (; | & \` $ < > ( ) { } \\).\n`));
16
+ process.exit(1);
17
+ }
9
18
  try {
10
19
  const rawOpts = program.opts();
11
20
  const { engine, opts } = await resolveEngineAndConnection(rawOpts);
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAElC,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAE9D,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,WAAW,CACV,OAAO,EACP;;;;kDAI4C,CAC7C;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,8BAA8B,IAAI,uEAAuE,CAC1G,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAElC,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAE9D,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiD5D"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2D5D"}
@@ -4,7 +4,12 @@ import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.
4
4
  export function registerDoctorCommand(program) {
5
5
  program
6
6
  .command("doctor")
7
- .description("Check system health and database dependencies")
7
+ .description("Check that all required binaries and dependencies are available")
8
+ .addHelpText("after", `
9
+ Examples:
10
+ hdx doctor
11
+ hdx doctor --engine postgres
12
+ hdx doctor --engine mysql`)
8
13
  .action(async () => {
9
14
  console.log(chalk.bold("\n--- Herdux Doctor - System Health Check ---\n"));
10
15
  const rawOpts = program.opts();
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAC9D,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChE,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,yDAAyD,CAC1D,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iEAAiE,CAClE,CACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,iEAAiE,CAClE;SACA,WAAW,CACV,OAAO,EACP;;;;4BAIsB,CACvB;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAC9D,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,KAAK,GAAG,IAAI,CAAC;QAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACxC,KAAK,GAAG,KAAK,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChE,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,yDAAyD,CAC1D,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,iEAAiE,CAClE,CACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../src/commands/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmC1D"}
1
+ {"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../src/commands/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD1D"}
@@ -5,9 +5,19 @@ import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.
5
5
  export function registerDropCommand(program) {
6
6
  program
7
7
  .command("drop <name>")
8
- .description("Drop a database")
8
+ .description("Permanently drop a database (irreversible)")
9
+ .addHelpText("after", `
10
+ Examples:
11
+ hdx drop mydb
12
+ hdx drop mydb --yes # Skip confirmation prompt
13
+ hdx drop mydb --engine mysql
14
+ hdx drop mydb --host 192.168.1.1 --user admin`)
9
15
  .option("-y, --yes", "Skip confirmation prompt")
10
16
  .action(async (name, cmdOpts) => {
17
+ if (/[\s;|&`$<>(){}\\]/.test(name)) {
18
+ console.error(chalk.red(`\n✖ Invalid database name "${name}". Avoid spaces and special characters (; | & \` $ < > ( ) { } \\).\n`));
19
+ process.exit(1);
20
+ }
11
21
  try {
12
22
  const rawOpts = program.opts();
13
23
  const { engine, opts } = await resolveEngineAndConnection(rawOpts);
@@ -1 +1 @@
1
- {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/commands/drop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA0B,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAElC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC7B,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,2CAA2C,IAAI,iCAAiC;oBACzF,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAE9D,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"drop.js","sourceRoot":"","sources":["../../src/commands/drop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,4CAA4C,CAAC;SACzD,WAAW,CACV,OAAO,EACP;;;;;gDAK0C,CAC3C;SACA,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA0B,EAAE,EAAE;QACzD,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,8BAA8B,IAAI,uEAAuE,CAC1G,CACF,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAElC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;oBAC7B,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,2CAA2C,IAAI,iCAAiC;oBACzF,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAE9D,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,0BAA0B,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqE1D"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+E1D"}
@@ -5,7 +5,14 @@ export function registerListCommand(program) {
5
5
  program
6
6
  .command("list")
7
7
  .alias("ls")
8
- .description("List all databases")
8
+ .description("List all databases on the connected server")
9
+ .addHelpText("after", `
10
+ Examples:
11
+ hdx list
12
+ hdx ls
13
+ hdx list --size
14
+ hdx list --engine mysql
15
+ hdx list --host 192.168.1.1 --user admin`)
9
16
  .option("-S, --size", "Calculate and include database sizes (sorted from largest to smallest)")
10
17
  .action(async (options) => {
11
18
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,4CAA4C,CAAC;SACzD,WAAW,CACV,OAAO,EACP;;;;;;2CAMqC,CACtC;SACA,MAAM,CACL,YAAY,EACZ,wEAAwE,CACzE;SACA,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAElC,MAAM,OAAO,GAAG,GAAG,CACjB,OAAO,CAAC,IAAI;gBACV,CAAC,CAAC,iDAAiD;gBACnD,CAAC,CAAC,2BAA2B,CAChC,CAAC,KAAK,EAAE,CAAC;YAEV,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;gBAC3C,GAAG,IAAI;gBACP,WAAW,EAAE,OAAO,CAAC,IAAI;aAC1B,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,SAAS,SAAS,CAAC,MAAM,gBAAgB,CAAC,CAAC;YAE3D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACrD,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,EAAE,EACF,UAAU,CAAC,MAAM,EACjB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CACzC,CAAC;YACF,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,IAAI,MAAM,GAAG,KAAK,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACjH,IAAI,OAAO,CAAC,IAAI;gBAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAErD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,KAAK,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC,EAAE,CAC1E,CACF,CAAC;YAEF,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACnC,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnH,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBAC5B,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgF7D"}
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4F7D"}
@@ -4,7 +4,16 @@ import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.
4
4
  export function registerRestoreCommand(program) {
5
5
  program
6
6
  .command("restore <file>")
7
- .description("Restore a database from a backup file (auto-creates DB if missing)")
7
+ .description("Restore a database from a backup file (auto-creates the database if it does not exist)")
8
+ .addHelpText("after", `
9
+ Examples:
10
+ hdx restore backup.dump --db mydb
11
+ hdx restore backup.sql --db mydb --format plain
12
+ hdx restore backup.dump --db mydb --engine mysql
13
+ hdx restore backup.dump --db mydb --host 192.168.1.1 --user admin
14
+
15
+ Note: If the target database does not exist it will be created automatically.
16
+ Restoration warnings (e.g. missing roles) are reported but do not stop the process.`)
8
17
  .requiredOption("--db <name>", "Target database name for restore")
9
18
  .option("-F, --format <type>", "Override auto-detection (custom, plain)")
10
19
  .action(async (file, cmdOpts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0C7D"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoD7D"}
@@ -4,7 +4,12 @@ import { resolveEngineAndConnection } from "../infra/engines/resolve-connection.
4
4
  export function registerVersionCommand(program) {
5
5
  program
6
6
  .command("version")
7
- .description("Show Database client and server versions")
7
+ .description("Show the database client version and detect running server instances")
8
+ .addHelpText("after", `
9
+ Examples:
10
+ hdx version
11
+ hdx version --engine mysql
12
+ hdx version --host 192.168.1.1`)
8
13
  .action(async () => {
9
14
  try {
10
15
  const rawOpts = program.opts();
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAC9D,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,GAAG,CACjB,wBAAwB,MAAM,CAAC,aAAa,EAAE,aAAa,CAC5D,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,SAAS,SAAS,CAAC,MAAM,sBAAsB,CAAC,CAAC;gBAEjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAEpF,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CACV,sEAAsE,CACvE;SACA,WAAW,CACV,OAAO,EACP;;;;iCAI2B,CAC5B;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACnE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAC9D,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAG,GAAG,CACjB,wBAAwB,MAAM,CAAC,aAAa,EAAE,aAAa,CAC5D,CAAC,KAAK,EAAE,CAAC;YACV,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,SAAS,SAAS,CAAC,MAAM,sBAAsB,CAAC,CAAC;gBAEjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;gBACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -9,7 +9,7 @@ export interface DatabaseInfo {
9
9
  encoding?: string;
10
10
  size?: string;
11
11
  }
12
- export type EngineType = "postgres" | "mysql";
12
+ export type EngineType = "postgres" | "mysql" | "sqlite";
13
13
  export interface ConnectionOptions {
14
14
  host?: string;
15
15
  port?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"database-engine.interface.d.ts","sourceRoot":"","sources":["../../../src/core/interfaces/database-engine.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE,CAAC;IAEjC;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;OAEG;IACH,2BAA2B,IAAI,iBAAiB,CAAC;IAEjD;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtC;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;OAEG;IACH,iBAAiB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEzE;;OAEG;IACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnE;;OAEG;IACH,aAAa,CACX,IAAI,CAAC,EAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GACnD,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;OAGG;IACH,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,iBAAiB,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,iBAAiB,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAChE"}
1
+ {"version":3,"file":"database-engine.interface.d.ts","sourceRoot":"","sources":["../../../src/core/interfaces/database-engine.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE,CAAC;IAEjC;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC;IAExB;;OAEG;IACH,2BAA2B,IAAI,iBAAiB,CAAC;IAEjD;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtC;;;OAGG;IACH,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;;OAEG;IACH,iBAAiB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEzE;;OAEG;IACH,gBAAgB,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnE;;OAEG;IACH,aAAa,CACX,IAAI,CAAC,EAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GACnD,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE3B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;OAGG;IACH,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,iBAAiB,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,iBAAiB,EACxB,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GACd,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAChE"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from "commander";
3
+ import chalk from "chalk";
3
4
  import { registerVersionCommand } from "./commands/version.js";
4
5
  import { registerListCommand } from "./commands/list.js";
5
6
  import { registerCreateCommand } from "./commands/create.js";
@@ -19,14 +20,38 @@ const program = new Command();
19
20
  program
20
21
  .name("herdux")
21
22
  .helpCommand(false)
22
- .description("A modern CLI to Database management")
23
+ .description("A modern CLI for PostgreSQL and MySQL database management")
23
24
  .version(pkg.version)
24
25
  .option("-H, --host <host>", "Database host")
25
26
  .option("-p, --port <port>", "Database port (auto-detected if omitted)")
26
27
  .option("-U, --user <user>", "Database user")
27
28
  .option("-W, --password <password>", "Database password")
28
29
  .option("-s, --server <name>", "Use a named server profile from config")
29
- .option("-e, --engine <type>", "Database engine (postgres, mysql)");
30
+ .option("-e, --engine <type>", "Database engine (postgres, mysql)")
31
+ .addHelpText("after", `
32
+ Examples:
33
+ hdx list
34
+ hdx backup mydb --output /tmp/backups
35
+ hdx restore backup.dump --db mydb
36
+ hdx --engine mysql list
37
+ hdx --host 192.168.1.1 --user admin backup mydb
38
+
39
+ Run 'hdx <command> --help' for command-specific examples and options.`);
40
+ program.hook("preAction", () => {
41
+ const opts = program.opts();
42
+ if (opts.port !== undefined) {
43
+ const portNum = Number(opts.port);
44
+ if (!Number.isInteger(portNum) || portNum < 1 || portNum > 65535) {
45
+ console.error(chalk.red(`\n✖ Invalid port "${opts.port}". Must be a number between 1 and 65535.\n`));
46
+ process.exit(1);
47
+ }
48
+ }
49
+ const validEngines = ["postgres", "mysql", "sqlite"];
50
+ if (opts.engine !== undefined && !validEngines.includes(opts.engine)) {
51
+ console.error(chalk.red(`\n✖ Unknown engine "${opts.engine}". Valid engines: ${validEngines.join(", ")}.\n`));
52
+ process.exit(1);
53
+ }
54
+ });
30
55
  registerVersionCommand(program);
31
56
  registerListCommand(program);
32
57
  registerCreateCommand(program);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAElC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,KAAK,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,0CAA0C,CAAC;KACvE,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC;KAC5C,MAAM,CAAC,2BAA2B,EAAE,mBAAmB,CAAC;KACxD,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC,CAAC;AAEtE,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,oDAAoD,CAAC;AAE5D,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,eAAe,CAQ/D"}
1
+ {"version":3,"file":"engine-factory.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,oDAAoD,CAAC;AAE5D,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,eAAe,CAU/D"}
@@ -1,9 +1,12 @@
1
1
  import { PostgresEngine } from "./postgres/postgres.engine.js";
2
2
  import { MysqlEngine } from "./mysql/mysql.engine.js";
3
+ import { SqliteEngine } from "./sqlite/sqlite.engine.js";
3
4
  export function createEngine(type) {
4
5
  switch (type) {
5
6
  case "mysql":
6
7
  return new MysqlEngine();
8
+ case "sqlite":
9
+ return new SqliteEngine();
7
10
  case "postgres":
8
11
  default:
9
12
  return new PostgresEngine();
@@ -1 +1 @@
1
- {"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,KAAK,UAAU,CAAC;QAChB;YACE,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"engine-factory.js","sourceRoot":"","sources":["../../../src/infra/engines/engine-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,WAAW,EAAE,CAAC;QAC3B,KAAK,QAAQ;YACX,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5B,KAAK,UAAU,CAAC;QAChB;YACE,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-connection.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,eAAe,EAChB,MAAM,oDAAoD,CAAC;AAM5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC,kBAAkB,CAAC,CAyL7B"}
1
+ {"version":3,"file":"resolve-connection.d.ts","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,eAAe,EAChB,MAAM,oDAAoD,CAAC;AAO5D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAyFD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,OAAO,CAAC,kBAAkB,CAAC,CA0J7B"}
@@ -4,6 +4,66 @@ import prompts from "prompts";
4
4
  import { createEngine } from "./engine-factory.js";
5
5
  import * as config from "../config/config.service.js";
6
6
  import { logger } from "../../presentation/logger.js";
7
+ /**
8
+ * Presents an interactive prompt for the user to select a server profile.
9
+ * Returns the selected server name, or undefined if the user selected
10
+ * the default connection or no options were available.
11
+ */
12
+ async function promptServerSelection(servers, serverNames, savedDefaults, requestedEngine) {
13
+ const dEngine = savedDefaults.engine ?? "postgres";
14
+ const isDefaultCompatible = !requestedEngine || dEngine === requestedEngine;
15
+ const hasDefaults = Object.keys(savedDefaults).length > 0;
16
+ if (serverNames.length === 0 && !(hasDefaults && isDefaultCompatible)) {
17
+ return undefined;
18
+ }
19
+ const choices = serverNames.map((name) => {
20
+ const srv = servers[name];
21
+ const engineLabel = srv.engine ? `, engine: ${srv.engine}` : "";
22
+ return {
23
+ title: `${name} (port ${srv.port ?? "?"}${engineLabel})`,
24
+ value: name,
25
+ };
26
+ });
27
+ if (hasDefaults && isDefaultCompatible) {
28
+ const defaultEngineLabel = `, engine: ${dEngine}`;
29
+ choices.unshift({
30
+ title: `Default connection (port ${savedDefaults.port ?? "?"}${defaultEngineLabel})`,
31
+ value: "__default__",
32
+ });
33
+ }
34
+ if (choices.length === 0) {
35
+ return undefined;
36
+ }
37
+ if (choices.length === 1) {
38
+ const choice = choices[0];
39
+ console.log(chalk.green(`✔ Auto-selected connection: › ${choice.title}`));
40
+ return choice.value !== "__default__" ? choice.value : undefined;
41
+ }
42
+ const response = await prompts({
43
+ type: "select",
44
+ name: "server",
45
+ message: "Select a connection to use:",
46
+ choices,
47
+ });
48
+ if (!response.server) {
49
+ console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
50
+ process.exit(0);
51
+ }
52
+ return response.server !== "__default__" ? response.server : undefined;
53
+ }
54
+ /**
55
+ * Determines the engine type from the CLI flag, server profile, or config defaults.
56
+ * Priority: CLI flag > server profile engine > config default engine > "postgres"
57
+ */
58
+ function resolveEngineType(rawEngine, serverName, savedDefaults) {
59
+ if (rawEngine)
60
+ return rawEngine;
61
+ if (serverName) {
62
+ const profile = config.getServer(serverName);
63
+ return profile?.engine ?? savedDefaults.engine ?? "postgres";
64
+ }
65
+ return savedDefaults.engine ?? "postgres";
66
+ }
7
67
  // --- Main Resolver ---
8
68
  /**
9
69
  * Resolves both the database engine and connection options together.
@@ -23,7 +83,6 @@ import { logger } from "../../presentation/logger.js";
23
83
  export async function resolveEngineAndConnection(rawOpts) {
24
84
  const savedDefaults = config.getDefault();
25
85
  let serverName = rawOpts.server;
26
- let profileEngine;
27
86
  // --- Step 1: Resolve server profile (may provide engine) ---
28
87
  const isInteractive = process.stdout.isTTY || process.env.HERDUX_TEST_FORCE_TTY === "1";
29
88
  if (!serverName && !rawOpts.port && !rawOpts.host && isInteractive) {
@@ -32,63 +91,13 @@ export async function resolveEngineAndConnection(rawOpts) {
32
91
  if (rawOpts.engine) {
33
92
  serverNames = serverNames.filter((name) => servers[name].engine === rawOpts.engine);
34
93
  }
35
- const dEngine = savedDefaults.engine ?? "postgres";
36
- const isDefaultCompatible = !rawOpts.engine || dEngine === rawOpts.engine;
37
- const hasDefaults = Object.keys(savedDefaults).length > 0;
38
- if (serverNames.length > 0 || (hasDefaults && isDefaultCompatible)) {
39
- const choices = serverNames.map((name) => {
40
- const srv = servers[name];
41
- const engineLabel = srv.engine ? `, engine: ${srv.engine}` : "";
42
- return {
43
- title: `${name} (port ${srv.port ?? "?"}${engineLabel})`,
44
- value: name,
45
- };
46
- });
47
- if (hasDefaults && isDefaultCompatible) {
48
- const defaultEngineLabel = `, engine: ${dEngine}`;
49
- choices.unshift({
50
- title: `Default connection (port ${savedDefaults.port ?? "?"}${defaultEngineLabel})`,
51
- value: "__default__",
52
- });
53
- }
54
- if (choices.length === 1) {
55
- const choice = choices[0];
56
- console.log(chalk.green(`✔ Auto-selected connection: › ${choice.title}`));
57
- if (choice.value !== "__default__") {
58
- serverName = choice.value;
59
- }
60
- }
61
- else {
62
- const response = await prompts({
63
- type: "select",
64
- name: "server",
65
- message: "Select a connection to use:",
66
- choices,
67
- });
68
- if (!response.server) {
69
- console.log(chalk.yellow("\n⚠ Operation cancelled.\n"));
70
- process.exit(0);
71
- }
72
- if (response.server !== "__default__") {
73
- serverName = response.server;
74
- }
75
- }
94
+ const selected = await promptServerSelection(servers, serverNames, savedDefaults, rawOpts.engine);
95
+ if (selected !== undefined) {
96
+ serverName = selected;
76
97
  }
77
98
  }
78
99
  // --- Step 2: Determine engine type ---
79
- // Priority: CLI flag > profile engine > config default engine > "postgres"
80
- let engineType;
81
- if (rawOpts.engine) {
82
- engineType = rawOpts.engine;
83
- }
84
- else if (serverName) {
85
- const profile = config.getServer(serverName);
86
- profileEngine = profile?.engine;
87
- engineType = profileEngine ?? savedDefaults.engine ?? "postgres";
88
- }
89
- else {
90
- engineType = savedDefaults.engine ?? "postgres";
91
- }
100
+ const engineType = resolveEngineType(rawOpts.engine, serverName, savedDefaults);
92
101
  const engine = createEngine(engineType);
93
102
  // --- Step 3: Resolve connection options ---
94
103
  if (serverName) {
@@ -122,6 +131,7 @@ export async function resolveEngineAndConnection(rawOpts) {
122
131
  };
123
132
  }
124
133
  // No server profile — merge CLI opts with config defaults
134
+ const engineDefaults = engine.getDefaultConnectionOptions();
125
135
  const merged = {
126
136
  host: rawOpts.host ?? savedDefaults.host,
127
137
  port: rawOpts.port ?? savedDefaults.port,
@@ -131,6 +141,19 @@ export async function resolveEngineAndConnection(rawOpts) {
131
141
  if (merged.port) {
132
142
  return { engine, engineType, opts: merged };
133
143
  }
144
+ // Engines that don't use ports (e.g. SQLite) skip port-based auto-discovery.
145
+ // They are fully identified by their host (database directory) alone.
146
+ if (!engineDefaults.port) {
147
+ return {
148
+ engine,
149
+ engineType,
150
+ opts: {
151
+ host: merged.host ?? engineDefaults.host,
152
+ user: merged.user ?? engineDefaults.user,
153
+ password: merged.password,
154
+ },
155
+ };
156
+ }
134
157
  // --- Step 4: Auto-discovery ---
135
158
  const spinner = ora(`Scanning for running ${engine.getEngineName()} servers...`).start();
136
159
  const instances = await engine.discoverInstances(merged);
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-connection.js","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-connection.js","sourceRoot":"","sources":["../../../src/infra/engines/resolve-connection.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMnD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAiBtD;;;;GAIG;AACH,KAAK,UAAU,qBAAqB,CAClC,OAAsC,EACtC,WAAqB,EACrB,aAA4B,EAC5B,eAA4B;IAE5B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,IAAI,UAAU,CAAC;IACnD,MAAM,mBAAmB,GAAG,CAAC,eAAe,IAAI,OAAO,KAAK,eAAe,CAAC;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,mBAAmB,CAAC,EAAE,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO;YACL,KAAK,EAAE,GAAG,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,WAAW,GAAG;YACxD,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,IAAI,mBAAmB,EAAE,CAAC;QACvC,MAAM,kBAAkB,GAAG,aAAa,OAAO,EAAE,CAAC;QAClD,OAAO,CAAC,OAAO,CAAC;YACd,KAAK,EAAE,4BAA4B,aAAa,CAAC,IAAI,IAAI,GAAG,GAAG,kBAAkB,GAAG;YACpF,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,6BAA6B;QACtC,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,SAAiC,EACjC,UAA8B,EAC9B,aAA4B;IAE5B,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,OAAO,EAAE,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,UAAU,CAAC;IAC/D,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,IAAI,UAAU,CAAC;AAC5C,CAAC;AAED,wBAAwB;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAqE;IAErE,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhC,8DAA8D;IAE9D,MAAM,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC;IAEpE,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAC1C,OAAO,EACP,WAAW,EACX,aAAa,EACb,OAAO,CAAC,MAAM,CACf,CAAC;QAEF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC;IAED,wCAAwC;IAExC,MAAM,UAAU,GAAG,iBAAiB,CAClC,OAAO,CAAC,MAAM,EACd,UAAU,EACV,aAAa,CACd,CAAC;IACF,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAExC,6CAA6C;IAE7C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,mBAAmB,UAAU,cAAc,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,CACT,6EAA6E,CAC9E,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAC5D,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;QACtD,OAAO;YACL,MAAM;YACN,UAAU;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;gBACzD,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;gBACxC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;gBACzD,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;aACrD;SACF,CAAC;IACJ,CAAC;IAED,0DAA0D;IAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;IAE5D,MAAM,MAAM,GAAsB;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;QACxC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ;KACrD,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,6EAA6E;IAC7E,sEAAsE;IACtE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACzB,OAAO;YACL,MAAM;YACN,UAAU;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;gBACxC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;gBACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B;SACF,CAAC;IACJ,CAAC;IAED,iCAAiC;IAEjC,MAAM,OAAO,GAAG,GAAG,CACjB,wBAAwB,MAAM,CAAC,aAAa,EAAE,aAAa,CAC5D,CAAC,KAAK,EAAE,CAAC;IACV,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEzD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,sBAAsB,MAAM,CAAC,aAAa,EAAE,0BAA0B,CACvE,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC3E,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,OAAO,CAAC,OAAO,CACb,gCAAgC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,OAAO,GAAG,CAClF,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,SAAS,SAAS,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,EAAE,QAAQ,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;QAC5C,KAAK,EAAE,IAAI,CAAC,IAAI;KACjB,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,YAAY,MAAM,CAAC,aAAa,EAAE,+CAA+C;QAC1F,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function checkSqliteClient(): Promise<string>;
2
+ //# sourceMappingURL=sqlite-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-env.d.ts","sourceRoot":"","sources":["../../../../src/infra/engines/sqlite/sqlite-env.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAuBzD"}
@@ -0,0 +1,24 @@
1
+ import ora from "ora";
2
+ import { logger } from "../../../presentation/logger.js";
3
+ import { binaryExists, getBinaryVersion } from "../../utils/detect-binary.js";
4
+ export async function checkSqliteClient() {
5
+ const spinner = ora("Checking SQLite client...").start();
6
+ const exists = await binaryExists("sqlite3");
7
+ if (!exists) {
8
+ spinner.fail("SQLite client (sqlite3) not found");
9
+ logger.blank();
10
+ logger.error("sqlite3 is not available in your PATH.");
11
+ logger.blank();
12
+ logger.info("To fix this, you can:");
13
+ logger.line("1. Install SQLite:");
14
+ logger.line(" • Windows: choco install sqlite");
15
+ logger.line(" • macOS: brew install sqlite");
16
+ logger.line(" • Ubuntu: sudo apt install sqlite3");
17
+ logger.blank();
18
+ process.exit(1);
19
+ }
20
+ const version = await getBinaryVersion("sqlite3");
21
+ spinner.succeed(`Found ${version ?? "sqlite3"}`);
22
+ return version ?? "unknown";
23
+ }
24
+ //# sourceMappingURL=sqlite-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-env.js","sourceRoot":"","sources":["../../../../src/infra/engines/sqlite/sqlite-env.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;IAEjD,OAAO,OAAO,IAAI,SAAS,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { IDatabaseEngine, ConnectionOptions, DatabaseInstance, DatabaseInfo, HealthCheck } from "../../../core/interfaces/database-engine.interface.js";
2
+ export declare class SqliteEngine implements IDatabaseEngine {
3
+ getHealthChecks(): HealthCheck[];
4
+ getEngineName(): string;
5
+ getDefaultConnectionOptions(): ConnectionOptions;
6
+ checkClientVersion(): Promise<string>;
7
+ checkBackupRequirements(): Promise<void>;
8
+ discoverInstances(_opts?: ConnectionOptions): Promise<DatabaseInstance[]>;
9
+ getServerVersion(_opts?: ConnectionOptions): Promise<string | null>;
10
+ listDatabases(opts?: ConnectionOptions & {
11
+ includeSize?: boolean;
12
+ }): Promise<DatabaseInfo[]>;
13
+ createDatabase(name: string, opts?: ConnectionOptions): Promise<void>;
14
+ dropDatabase(name: string, opts?: ConnectionOptions): Promise<void>;
15
+ backupDatabase(dbName: string, outputDir: string, opts?: ConnectionOptions, format?: string): Promise<string>;
16
+ restoreDatabase(filePath: string, dbName: string, opts?: ConnectionOptions): Promise<{
17
+ hasWarnings: boolean;
18
+ warnings?: string;
19
+ } | void>;
20
+ }
21
+ //# sourceMappingURL=sqlite.engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.engine.d.ts","sourceRoot":"","sources":["../../../../src/infra/engines/sqlite/sqlite.engine.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACZ,MAAM,uDAAuD,CAAC;AAiC/D,qBAAa,YAAa,YAAW,eAAe;IAClD,eAAe,IAAI,WAAW,EAAE;IAmDhC,aAAa,IAAI,MAAM;IAIvB,2BAA2B,IAAI,iBAAiB;IAI1C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC,iBAAiB,CACrB,KAAK,CAAC,EAAE,iBAAiB,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAKxB,gBAAgB,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMnE,aAAa,CACjB,IAAI,GAAE,iBAAiB,GAAG;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAO,GACvD,OAAO,CAAC,YAAY,EAAE,CAAC;IAgCpB,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAqBV,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC;IAUV,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,iBAAsB,EAC5B,MAAM,GAAE,MAAiB,GACxB,OAAO,CAAC,MAAM,CAAC;IAiCZ,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CA8B/D"}
@@ -0,0 +1,207 @@
1
+ import { existsSync, mkdirSync, readdirSync, statSync, unlinkSync, copyFileSync, writeFileSync, } from "fs";
2
+ import { join, resolve, basename, extname } from "path";
3
+ import { homedir } from "os";
4
+ import { runCommand } from "../../command-runner.js";
5
+ import { checkSqliteClient } from "./sqlite-env.js";
6
+ // --- Internal Helpers ---
7
+ function defaultDbDir() {
8
+ return join(homedir(), ".herdux", "sqlite");
9
+ }
10
+ function resolveDbDir(opts) {
11
+ return opts.host ? resolve(opts.host) : defaultDbDir();
12
+ }
13
+ function resolveDbPath(name, opts) {
14
+ return join(resolveDbDir(opts), `${name}.db`);
15
+ }
16
+ function generateBackupFilename(dbName, format) {
17
+ const date = new Date().toISOString().slice(0, 10);
18
+ return `${dbName}_${date}.${format === "plain" ? "sql" : "db"}`;
19
+ }
20
+ function formatFileSize(bytes) {
21
+ if (bytes < 1024)
22
+ return `${bytes} B`;
23
+ if (bytes < 1024 * 1024)
24
+ return `${(bytes / 1024).toFixed(1)} KB`;
25
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
26
+ }
27
+ // --- SqliteEngine ---
28
+ export class SqliteEngine {
29
+ getHealthChecks() {
30
+ return [
31
+ {
32
+ name: "sqlite3",
33
+ pendingMessage: "Checking sqlite3...",
34
+ run: async () => {
35
+ try {
36
+ const result = await runCommand("sqlite3", ["--version"]);
37
+ if (result.exitCode === 0) {
38
+ return {
39
+ status: "success",
40
+ message: `sqlite3 is installed: ${result.stdout.trim().split("\n")[0]}`,
41
+ };
42
+ }
43
+ return {
44
+ status: "error",
45
+ message: "sqlite3 returned a non-zero exit code.",
46
+ };
47
+ }
48
+ catch {
49
+ return {
50
+ status: "error",
51
+ message: "sqlite3 is missing. Install it: apt install sqlite3 / brew install sqlite",
52
+ };
53
+ }
54
+ },
55
+ },
56
+ {
57
+ name: "Database directory",
58
+ pendingMessage: "Checking database directory...",
59
+ run: async (opts) => {
60
+ const dbDir = resolveDbDir(opts);
61
+ try {
62
+ if (!existsSync(dbDir)) {
63
+ mkdirSync(dbDir, { recursive: true });
64
+ }
65
+ return {
66
+ status: "success",
67
+ message: `Database directory is accessible: ${dbDir}`,
68
+ };
69
+ }
70
+ catch (err) {
71
+ return {
72
+ status: "error",
73
+ message: `Cannot access database directory "${dbDir}": ${err.message}`,
74
+ };
75
+ }
76
+ },
77
+ },
78
+ ];
79
+ }
80
+ getEngineName() {
81
+ return "SQLite";
82
+ }
83
+ getDefaultConnectionOptions() {
84
+ return { host: defaultDbDir() };
85
+ }
86
+ async checkClientVersion() {
87
+ return await checkSqliteClient();
88
+ }
89
+ async checkBackupRequirements() {
90
+ // SQLite backups use Node.js fs (file copy) or sqlite3 .dump.
91
+ // sqlite3 is already validated in checkClientVersion — nothing else needed.
92
+ }
93
+ async discoverInstances(_opts) {
94
+ // SQLite is file-based and has no running server instances.
95
+ return [];
96
+ }
97
+ async getServerVersion(_opts) {
98
+ const result = await runCommand("sqlite3", ["--version"]);
99
+ if (result.exitCode !== 0)
100
+ return null;
101
+ return `SQLite ${result.stdout.trim().split("\n")[0]}`;
102
+ }
103
+ async listDatabases(opts = {}) {
104
+ const dbDir = resolveDbDir(opts);
105
+ if (!existsSync(dbDir)) {
106
+ return [];
107
+ }
108
+ const entries = readdirSync(dbDir);
109
+ const databases = [];
110
+ for (const entry of entries) {
111
+ const ext = extname(entry).toLowerCase();
112
+ if (ext !== ".db" && ext !== ".sqlite")
113
+ continue;
114
+ const name = basename(entry, ext);
115
+ const info = { name };
116
+ if (opts.includeSize) {
117
+ try {
118
+ const stat = statSync(join(dbDir, entry));
119
+ info.size = formatFileSize(stat.size);
120
+ }
121
+ catch {
122
+ info.size = "unknown";
123
+ }
124
+ }
125
+ databases.push(info);
126
+ }
127
+ return databases.sort((a, b) => a.name.localeCompare(b.name));
128
+ }
129
+ async createDatabase(name, opts = {}) {
130
+ const dbDir = resolveDbDir(opts);
131
+ if (!existsSync(dbDir)) {
132
+ mkdirSync(dbDir, { recursive: true });
133
+ }
134
+ const dbPath = join(dbDir, `${name}.db`);
135
+ if (existsSync(dbPath)) {
136
+ throw new Error(`Database "${name}" already exists at ${dbPath}`);
137
+ }
138
+ // Running sqlite3 with an empty command creates a valid empty database file.
139
+ const result = await runCommand("sqlite3", [dbPath, ""]);
140
+ if (result.exitCode !== 0) {
141
+ throw new Error(`Failed to create database "${name}": ${result.stderr}`);
142
+ }
143
+ }
144
+ async dropDatabase(name, opts = {}) {
145
+ const dbPath = resolveDbPath(name, opts);
146
+ if (!existsSync(dbPath)) {
147
+ throw new Error(`Database "${name}" not found at ${dbPath}`);
148
+ }
149
+ unlinkSync(dbPath);
150
+ }
151
+ async backupDatabase(dbName, outputDir, opts = {}, format = "custom") {
152
+ const dbPath = resolveDbPath(dbName, opts);
153
+ if (!existsSync(dbPath)) {
154
+ throw new Error(`Database "${dbName}" not found at ${dbPath}`);
155
+ }
156
+ const resolvedDir = resolve(outputDir);
157
+ if (!existsSync(resolvedDir)) {
158
+ mkdirSync(resolvedDir, { recursive: true });
159
+ }
160
+ const typedFormat = format === "plain" ? "plain" : "custom";
161
+ const filename = generateBackupFilename(dbName, typedFormat);
162
+ const outputPath = join(resolvedDir, filename);
163
+ if (typedFormat === "plain") {
164
+ // SQL dump via sqlite3 .dump
165
+ const result = await runCommand("sqlite3", [dbPath, ".dump"], {
166
+ timeout: 0,
167
+ });
168
+ if (result.exitCode !== 0) {
169
+ throw new Error(`Backup failed for "${dbName}": ${result.stderr}`);
170
+ }
171
+ writeFileSync(outputPath, result.stdout, "utf8");
172
+ }
173
+ else {
174
+ // Binary copy of the .db file
175
+ copyFileSync(dbPath, outputPath);
176
+ }
177
+ return outputPath;
178
+ }
179
+ async restoreDatabase(filePath, dbName, opts = {}) {
180
+ const resolvedPath = resolve(filePath);
181
+ if (!existsSync(resolvedPath)) {
182
+ throw new Error(`Backup file not found: ${resolvedPath}`);
183
+ }
184
+ const dbDir = resolveDbDir(opts);
185
+ if (!existsSync(dbDir)) {
186
+ mkdirSync(dbDir, { recursive: true });
187
+ }
188
+ const targetPath = join(dbDir, `${dbName}.db`);
189
+ const ext = extname(resolvedPath).toLowerCase();
190
+ const isPlain = ext === ".sql" || ext === ".txt";
191
+ if (isPlain) {
192
+ // Restore from SQL dump: sqlite3 target.db < backup.sql
193
+ const result = await runCommand("sqlite3", [targetPath], {
194
+ stdin: resolvedPath,
195
+ timeout: 0,
196
+ });
197
+ if (result.exitCode !== 0) {
198
+ throw new Error(`Restore failed: ${result.stderr}`);
199
+ }
200
+ }
201
+ else {
202
+ // Restore from .db file copy
203
+ copyFileSync(resolvedPath, targetPath);
204
+ }
205
+ }
206
+ }
207
+ //# sourceMappingURL=sqlite.engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.engine.js","sourceRoot":"","sources":["../../../../src/infra/engines/sqlite/sqlite.engine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "herdux-cli",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "Modern Database workflow CLI focused on developer experience, safety, and automation.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,10 +34,13 @@
34
34
  "test:e2e:mysql": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js -- tests/e2e/mysql/",
35
35
  "test:e2e:mysql:up": "docker compose -f infra/docker/compose.e2e-mysql.yml up -d --wait",
36
36
  "test:e2e:mysql:down": "docker compose -f infra/docker/compose.e2e-mysql.yml down -v --remove-orphans",
37
+ "test:e2e:sqlite": "node --no-warnings --experimental-vm-modules node_modules/jest/bin/jest.js -- tests/e2e/sqlite/",
37
38
  "prepare": "husky"
38
39
  },
39
40
  "keywords": [
40
41
  "postgresql",
42
+ "mysql",
43
+ "sqlite",
41
44
  "cli",
42
45
  "database",
43
46
  "backup",