┌─────────────────────────────────────────────────────────┐
│ Tauri 2 Shell │
├──────────────────────────┬──────────────────────────────┤
│ Frontend (WebView) │ Backend (Rust) │
│ React 19 + TypeScript │ Tauri Commands │
│ Vite + Tailwind │ Connection Pool │
│ Zustand State │ Database Adapters │
└──────────────────────────┴──────────────────────────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
PostgreSQL MongoDB Redis
MySQL (Document) (Key-Value)
SQLite
MSSQL
(SQL)
Query Pilot uses a capability-based trait system:
| Paradigm | Trait | Databases | Frontend Grid |
|---|---|---|---|
| SQL | SqlQueryable |
PostgreSQL, MySQL, SQLite, MSSQL | SqlDataGrid |
| Document | DocumentQueryable |
MongoDB | DocumentDataGrid |
| Key-Value | RichKeyValueOperable |
Redis | KeyValueDataGrid |
Capability Traits (src-tauri/src/core/capabilities.rs):
BaseCapability- All adapters: connect, disconnect, test_connectionSqlQueryable- SQL: execute_query, execute_statementDocumentQueryable- MongoDB: find_documents, insert_document, aggregateRichKeyValueOperable- Redis: Hash, List, Set, ZSet, Stream operations
UnifiedAdapter wraps concrete adapters with runtime capability checking via as_sql(), as_document(), as_keyvalue().
- Main window (
label="main"): Connection browser - Workspace windows (
label="workspace-{connectionId}"): One per connection - Cross-window coordination via
BroadcastChannelAPI (not Tauri events) - Each workspace manages its own connection cleanup on close
Two query paths (see Query Execution):
| Path | Use For | Transport | Encoding |
|---|---|---|---|
Direct (query) |
Metadata, <1K rows | Tauri invoke | JSON |
Streaming (execute_query) |
Data grids, user queries | IPC channels | MessagePack |
Critical: Streaming path skips window.emit overhead (300-350ms savings for large results).
Key stores:
connectionStoreNew- Active connections, favorites, recentsworkbenchStore- Layout tree, tab metadata, drag-dropworkspaceScreenStore- Schema/table navigationcrudStore- Transaction state, pending operationsdataInvalidationStore- Event-driven cache invalidation
| Layer | Path | Purpose |
|---|---|---|
| Frontend entry | src/screens/ |
MainScreen, WorkspaceScreen |
| State | src/stores/ |
Zustand stores |
| Backend API | src/services/backend.ts |
Tauri command wrappers |
| Rust commands | src-tauri/src/commands/ |
connection.rs, sql.rs, document.rs, keyvalue.rs |
| Connection pool | src-tauri/src/core/manager.rs |
ConnectionManager + DashMap |
| Adapters | src-tauri/src/adapters/ |
Database implementations |