feat: add cross-database entity lookup for searching column values across all databases
Enables searching for a specific column value (e.g. carrier_id=123) across all databases on a PostgreSQL server. The backend creates temporary connection pools per database (semaphore-limited to 5), queries information_schema for matching columns, and executes read-only SELECTs with real-time progress events. Results are grouped by database/table in a new "Entity Lookup" tab. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
import { listen, type UnlistenFn } from "@tauri-apps/api/event";
|
||||
import type {
|
||||
ConnectionConfig,
|
||||
QueryResult,
|
||||
@@ -19,6 +20,10 @@ import type {
|
||||
TablePrivilege,
|
||||
GrantRevokeParams,
|
||||
RoleMembershipParams,
|
||||
AiSettings,
|
||||
OllamaModel,
|
||||
EntityLookupResult,
|
||||
LookupProgress,
|
||||
} from "@/types";
|
||||
|
||||
// Connections
|
||||
@@ -230,3 +235,37 @@ export const cancelQuery = (connectionId: string, pid: number) =>
|
||||
|
||||
export const terminateBackend = (connectionId: string, pid: number) =>
|
||||
invoke<boolean>("terminate_backend", { connectionId, pid });
|
||||
|
||||
// AI
|
||||
export const getAiSettings = () =>
|
||||
invoke<AiSettings>("get_ai_settings");
|
||||
|
||||
export const saveAiSettings = (settings: AiSettings) =>
|
||||
invoke<void>("save_ai_settings", { settings });
|
||||
|
||||
export const listOllamaModels = (ollamaUrl: string) =>
|
||||
invoke<OllamaModel[]>("list_ollama_models", { ollamaUrl });
|
||||
|
||||
export const generateSql = (connectionId: string, prompt: string) =>
|
||||
invoke<string>("generate_sql", { connectionId, prompt });
|
||||
|
||||
// Entity Lookup
|
||||
export const entityLookup = (
|
||||
config: ConnectionConfig,
|
||||
columnName: string,
|
||||
value: string,
|
||||
lookupId: string,
|
||||
databases?: string[]
|
||||
) =>
|
||||
invoke<EntityLookupResult>("entity_lookup", {
|
||||
config,
|
||||
columnName,
|
||||
value,
|
||||
lookupId,
|
||||
databases,
|
||||
});
|
||||
|
||||
export const onLookupProgress = (
|
||||
callback: (p: LookupProgress) => void
|
||||
): Promise<UnlistenFn> =>
|
||||
listen<LookupProgress>("lookup-progress", (e) => callback(e.payload));
|
||||
|
||||
Reference in New Issue
Block a user