Architecture
ElyraSQL Client is a native desktop app: a Rust core with a Svelte 5
interface rendered in the system webview. It is a self-contained workspace (the
shell/runtime crates are vendored under crates/).
Overview
Svelte 5 UI (system webview)
│ typed commands / events (MessagePack IPC)
┌────────▼─────────┐
│ Rust core │
│ #[command]s │
├──────────────────┤
│ db: broker, │ connection pooling, query engine,
│ query, browse, │ keyset pagination, introspection,
│ edit, designer, │ row editing, table designer,
│ import, admin │ CSV import, user admin
├──────────────────┤
│ store (SQLite) + keychain license (online)
└──────────────────┘
│ MySQL wire protocol (sqlx)
ElyraSQL Server
Principles
- Queries run in the core; the webview only receives results.
- Streaming-first: result sets and table pages stream rather than materialise wholesale — the basis for smoothness on 10M-row tables.
- Destructive actions generate SQL that is shown and confirmed before it runs.
- Typed contracts: Rust types are exported to TypeScript so the IPC surface is checked at build time.
- Edition gates live in the core (the UI mirrors them), so entitlements can't be bypassed by the interface alone.
Layout
src/ Rust application
db/ broker, query, browse, introspect, edit, designer, import, admin
store/ local SQLite metadata + OS keychain
export.rs CSV / JSON / SQL / XLSX writers
edition.rs edition gates
license.rs online license activation + cache
app/ Svelte 5 frontend
crates/ vendored desktop shell + IPC runtime
Talking to ElyraSQL
ElyraSQL Server speaks the MySQL wire protocol, so the core connects with sqlx's MySQL driver while remaining dedicated to ElyraSQL end to end. Some catalog/behaviour specifics are handled in the introspection and query layers.