Commit Graph
39 Commits
Author SHA1 Message Date
t8y2 cf4f25fd52 feat: extract dbx-core crate for web deployment support
Refactor all database drivers, query execution, schema operations, and
business logic into a shared `dbx-core` crate. The Tauri desktop app
becomes a thin shell delegating to dbx-core, enabling future web and
CLI frontends to reuse the same core.
2026-05-05 03:16:24 +08:00
t8y2 b9e29b423f fix: update SQLite connection options for network paths 2026-05-04 21:45:16 +08:00
t8y2 fc71be8f1a feat: remove deprecated connect function and streamline SQLite connection handling 2026-05-04 02:57:05 +08:00
Agent-43 81bd188972 Fix SQLite UNC path connections 2026-05-03 23:28:45 +05:30
yavon007 8013a19e50 fix: separate key columns from included in PG index, add varbinary(max) for SQL Server
PostgreSQL list_indexes was returning all_cols (key + included) in IndexInfo.columns,
causing DDL and UI duplication. Now only key columns are returned in columns, with
included columns correctly split via indnkeyatts.

SQL Server varbinary now handles Some(-1) to display varbinary(max).
2026-05-03 21:03:49 +08:00
yavon007 a59494e4c4 fix: guard index column splits, restrict INCLUDE/WHERE by db, unify index type dropdowns
- Filter empty strings from STRING_AGG/LISTAGG splits in SQL Server, Oracle, MySQL
- Emit INCLUDE clause only for PostgreSQL and SQL Server (not MySQL/SQLite)
- Emit WHERE clause only for PostgreSQL, SQL Server, SQLite (not MySQL)
- Replace index type free-text input with dropdown for all 5 database types
- Fix hardcoded column count in resize handle (use indexColLabels.length - 1)
- Fix pg_get_indexdef type mismatch: cast k.n from bigint to integer
2026-05-03 20:33:09 +08:00
yavon007 25f2f46718 fix: correct PostgreSQL numeric_scale formula and add index SQL test coverage
The numeric_scale extraction used (& 2047) - 1024 which produces negative
values; fixed to & 65535. Added 12 tests for index SQL generation: INCLUDE,
USING, WHERE, COMMENT ON INDEX, type prefix, and combined scenarios.
2026-05-03 20:11:44 +08:00
yavon007 4e1b35186b feat: add index type, included columns, filter, and comment support
- Add filter, index_type, included_columns, and comment fields to IndexInfo
- PostgreSQL: query pg_am for index type, use indnkeyatts to split key/included columns, retrieve index comments via obj_description()
- SQL Server: add type_desc, filter_definition, included columns via is_included_column
- MySQL: add INDEX_TYPE from information_schema.STATISTICS
- Oracle: add INDEX_TYPE from ALL_INDEXES
- DDL generation: add USING (PostgreSQL), type prefix + INCLUDE + WHERE (SQL Server), COMMENT ON INDEX (PostgreSQL)
- Frontend: update types, state mapping, SQL generation, and i18n translations
2026-05-03 20:10:35 +08:00
yavon007 b88e1b8ccb fix: improve column type precision and SQL correctness across all databases
- PostgreSQL: rewrite column query from information_schema to pg_attribute for accurate type info via format_type(atttypid, atttypmod); extract character_maximum_length from atttypmod for varchar/bpchar; fix execute_query with persistent(false) and empty result fallback
- SQL Server: reconstruct column types with precision (varchar(max), decimal(p,s), datetime2(p)); stop dividing nvarchar/nchar CHARACTER_MAXIMUM_LENGTH by 2
- MySQL: use COLUMN_TYPE instead of DATA_TYPE for full type definitions; add CHARACTER_MAXIMUM_LENGTH; fix ONLY_FULL_GROUP_BY with MIN(NON_UNIQUE)
- Oracle: add CHAR_LENGTH/DATA_LENGTH for column type precision; fix INDEX_OWNER join to prevent cartesian product
- SQLite: fix PRAGMA injection via double-quote escaping; detect primary key indexes via origin column
2026-05-03 20:10:35 +08:00
yavon007 58ca9a3b21 feat: add SSH key passphrase field and file picker for key path
- Add ssh_key_passphrase field to ConnectionConfig model with full keyring lifecycle
- Pass passphrase to russh load_secret_key for encrypted SSH keys
- Add native file picker (FolderOpen icon) next to SSH key path input
- Add password-type input for key passphrase in connection dialog
- Make connection dialog form scrollable for short windows
- Fix alignment of key path input and browse button
- Add i18n keys (en + zh-CN)
2026-05-03 04:39:03 +08:00
t8y2 f598b5a91c feat: enhance MySQL connection handling with bare option and optimize component imports 2026-05-02 23:25:39 +08:00
skyler adb7bc9253 Merge pull request #61 from SuLea-IT/codex/explain-plan-viewer
feat: add explain plan viewer
2026-05-02 21:54:54 +08:00
t8y2 44c98ba335 feat: add support for bare MySQL connections and improve SQL query handling for doris 2026-05-02 21:51:50 +08:00
SuLea-IT d180539778 feat: add explain plan viewer 2026-05-02 21:00:53 +08:00
t8y2 a025649f89 fix: update MySql connection options to include pipes as concat and timezone settings 2026-05-02 17:36:00 +08:00
t8y2 c6f9bb89ec fix: support for ClickHouse database username and password configuration 2026-05-02 17:25:16 +08:00
SuLe b6f89f02fb add database relationship diagrams 2026-05-02 13:09:53 +08:00
kingcanfish d1075c0042 fix: resolve PostgreSQL/MySQL/SQL Server NUMERIC/DECIMAL display issues
- Add rust_decimal feature to sqlx and tiberius for proper Decimal type handling
- Fix try_get_unchecked<String> causing NULL or garbled output for numeric types
- Add numeric_precision and numeric_scale to ColumnInfo for all database drivers
- Update frontend to display precision (e.g., numeric(20,6)) in column headers
- Fix typeColorClass to handle type names with precision suffix

Root cause: PostgreSQL binary protocol sends NUMERIC as PgNumeric binary format,
not UTF-8 text. try_get_unchecked<String> attempted to decode binary bytes as UTF-8,
causing decode failures (NULL) or garbage characters (乱码).
2026-05-02 10:14:01 +08:00
t8y2 557897f428 feat: enhance MySQL connection handling and update connection dialog for Doris, SelectDB, and StarRocks 2026-05-01 19:36:17 +08:00
t8y2 6e0fdf1c92 feat: add ssh_expose_lan configuration and localization support 2026-05-01 15:37:52 +08:00
t8y2 e6be189992 feat: implement SSH tunneling using russh library 2026-05-01 10:00:51 +08:00
t8y2 75244339e4 feat(postgres): enhance JSON serialization for temporal and numeric types 2026-05-01 00:13:42 +08:00
skyler 23551ffa16 feat: exclude temporary schemas from list_schemas query (#39) 2026-04-30 19:49:56 +08:00
skyler b1f4d4c300 feat: add Elasticsearch support with document browser (#38)
- New elasticsearch_driver using reqwest HTTP client
- Reuse MongoDB document browser (MongoDocBrowser) for ES indices
- ES indices shown as collections under "default" database
- Document CRUD via ES REST API (_search, _doc)
- No extra dependencies (uses existing reqwest)
2026-04-30 19:40:12 +08:00
skyler 9fa6ab063d feat: display column comments in sidebar and data grid header (#37)
- Add comment field to ColumnInfo (MySQL COLUMN_COMMENT, PostgreSQL col_description)
- Show column comments in sidebar tree nodes
- Show column comments on hover in data grid header
- Default MySQL charset to utf8mb4 for proper CJK support
Closes #14
2026-04-30 18:54:26 +08:00
skyler 9ee31aa188 fix(redis): show empty databases (#25) 2026-04-30 16:32:50 +08:00
t8y2 4d8ae1221e feat(connection): enhance connection handling with SSH tunnel support 2026-04-30 16:07:26 +08:00
Sugar ac76aadbed 修复:避免在连接导出和日志中泄露敏感信息 / avoid leaking connection credentials in exports and logs (#16)
* fix: redact ssh password from connection exports

* test: cover redacted connection targets

* fix: avoid logging connection credentials

* fix(redis): support stream value preview
2026-04-30 15:44:53 +08:00
Yikuanzz 9e58fefab8 fix(mysql): 查询结果中正确序列化 DATETIME 等时间类型,避免显示为 null (#20) 2026-04-30 15:40:40 +08:00
t8y2 62ae308914 fix(sqlserver): support TLS fallback, TOP syntax, and schema browsing 2026-04-30 14:36:31 +08:00
t8y2 5c546f68af feat(redis): implement pagination for Redis key scanning and enhance UI for loading more keys 2026-04-30 13:04:48 +08:00
t8y2 1fb5d2bff1 fix(mysql): handle large numeric display and edit saves 2026-04-30 11:24:47 +08:00
t8y2 b325cc50c4 feat: add SSL/TLS support for Redis connections and update related configurations 2026-04-30 11:01:14 +08:00
t8y2 cd273441a3 feat: add execute_batch command for executing multiple SQL statements in a single call 2026-04-30 09:42:34 +08:00
t8y2 125793bd62 feat: refactor Oracle database handling to use OracleClient instead of OraclePool 2026-04-30 09:26:24 +08:00
t8y2 2e971ce152 feat: add Oracle database support 2026-04-30 04:28:33 +08:00
t8y2 f16e9a9ae7 fix: update MySQL connection string to include SSL mode preference 2026-04-29 23:09:45 +08:00
t8y2 3e1ab0b3a4 feat: add SSH password authentication support 2026-04-29 20:36:07 +08:00
t8y2 b2e6dfad7e feat: initial release
Multi-database management tool built with Tauri + Vue 3.
Supports MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server.
2026-04-29 18:09:23 +08:00