feat(sql): persist SQL library in app database

This commit is contained in:
t8y2
2026-05-10 00:41:17 +08:00
parent cac383e6bf
commit b013a2ac29
17 changed files with 462 additions and 88 deletions
+5
View File
@@ -36,6 +36,11 @@ export const connectDb = forward("connectDb");
export const disconnectDb = forward("disconnectDb");
export const saveConnections = forward("saveConnections");
export const loadConnections = forward("loadConnections");
export const loadSavedSqlLibrary = forward("loadSavedSqlLibrary");
export const saveSavedSqlFolder = forward("saveSavedSqlFolder");
export const deleteSavedSqlFolder = forward("deleteSavedSqlFolder");
export const saveSavedSqlFile = forward("saveSavedSqlFile");
export const deleteSavedSqlFile = forward("deleteSavedSqlFile");
// Schema
export const listDatabases = forward("listDatabases");
+23
View File
@@ -8,6 +8,9 @@ import type {
TriggerInfo,
QueryResult,
SidebarLayout,
SavedSqlFile,
SavedSqlFolder,
SavedSqlLibrary,
} from "@/types/database";
import type { AiConfig } from "@/stores/settingsStore";
import type {
@@ -88,6 +91,26 @@ export async function loadConnections(): Promise<ConnectionConfig[]> {
return get("/api/connection/list");
}
export async function loadSavedSqlLibrary(): Promise<SavedSqlLibrary> {
return get("/api/saved-sql");
}
export async function saveSavedSqlFolder(folder: SavedSqlFolder): Promise<SavedSqlFolder> {
return post("/api/saved-sql/folders", folder);
}
export async function deleteSavedSqlFolder(id: string): Promise<void> {
return del(`/api/saved-sql/folders/${encodeURIComponent(id)}`);
}
export async function saveSavedSqlFile(file: SavedSqlFile): Promise<SavedSqlFile> {
return post("/api/saved-sql", file);
}
export async function deleteSavedSqlFile(id: string): Promise<void> {
return del(`/api/saved-sql/${encodeURIComponent(id)}`);
}
// ---------------------------------------------------------------------------
// Schema
// ---------------------------------------------------------------------------
+23
View File
@@ -9,6 +9,9 @@ import type {
ForeignKeyInfo,
TriggerInfo,
QueryResult,
SavedSqlFile,
SavedSqlFolder,
SavedSqlLibrary,
} from "@/types/database";
import type { AiConfig } from "@/stores/settingsStore";
@@ -241,6 +244,26 @@ export async function loadConnections(): Promise<ConnectionConfig[]> {
return invoke("load_connections");
}
export async function loadSavedSqlLibrary(): Promise<SavedSqlLibrary> {
return invoke("load_saved_sql_library");
}
export async function saveSavedSqlFolder(folder: SavedSqlFolder): Promise<SavedSqlFolder> {
return invoke("save_saved_sql_folder", { folder });
}
export async function deleteSavedSqlFolder(id: string): Promise<void> {
return invoke("delete_saved_sql_folder", { id });
}
export async function saveSavedSqlFile(file: SavedSqlFile): Promise<SavedSqlFile> {
return invoke("save_saved_sql_file", { file });
}
export async function deleteSavedSqlFile(id: string): Promise<void> {
return invoke("delete_saved_sql_file", { id });
}
export async function saveSidebarLayout(layout: import("@/types/database").SidebarLayout): Promise<void> {
return invoke("save_sidebar_layout", { layout });
}