feat: add connection colors, query history, SQL autocomplete, and EXPLAIN visualizer

Add four developer/QA features:
- Connection color coding: color picker in dialog, colored indicators across toolbar, tabs, status bar, and connection selectors
- Query history: Rust backend with JSON file storage (500 entry cap), sidebar panel with search/clear, auto-recording from workspace
- Schema-aware SQL autocomplete: backend fetches column metadata, CodeMirror receives schema namespace with public tables unprefixed
- EXPLAIN ANALYZE visualizer: recursive tree view with cost-colored bars, expand/collapse nodes, buffers info, Results/Explain tab toggle

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-11 20:22:10 +03:00
parent 72c362dfae
commit 3b3e225e8f
21 changed files with 791 additions and 37 deletions

View File

@@ -53,6 +53,50 @@ export interface IndexInfo {
is_primary: boolean;
}
export interface HistoryEntry {
id: string;
connection_id: string;
connection_name: string;
database: string;
sql: string;
status: string;
error_message?: string;
row_count?: number;
execution_time_ms: number;
executed_at: string;
}
export interface ExplainNode {
"Node Type": string;
"Relation Name"?: string;
"Schema"?: string;
"Alias"?: string;
"Startup Cost": number;
"Total Cost": number;
"Plan Rows": number;
"Plan Width": number;
"Actual Startup Time"?: number;
"Actual Total Time"?: number;
"Actual Rows"?: number;
"Actual Loops"?: number;
"Shared Hit Blocks"?: number;
"Shared Read Blocks"?: number;
"Filter"?: string;
"Join Type"?: string;
"Index Name"?: string;
"Index Cond"?: string;
"Hash Cond"?: string;
"Sort Key"?: string[];
Plans?: ExplainNode[];
[key: string]: unknown;
}
export interface ExplainResult {
Plan: ExplainNode;
"Planning Time": number;
"Execution Time": number;
}
export type TabType = "query" | "table" | "structure";
export interface Tab {