diff --git a/src/lib/tauri.ts b/src/lib/tauri.ts index e37d7fe4d7..171e5ef0b9 100644 --- a/src/lib/tauri.ts +++ b/src/lib/tauri.ts @@ -303,6 +303,61 @@ export async function deleteHistoryEntry(id: string): Promise { return invoke("delete_history_entry", { id }); } +// --- SQL File Execution --- +export type SqlFileStatus = + | "started" + | "running" + | "statementDone" + | "statementFailed" + | "done" + | "error" + | "cancelled"; + +export interface SqlFileRequest { + executionId: string; + connectionId: string; + database: string; + filePath: string; + continueOnError: boolean; +} + +export interface SqlFilePreview { + fileName: string; + filePath: string; + sizeBytes: number; + preview: string; +} + +export interface SqlFileProgress { + executionId: string; + status: SqlFileStatus; + statementIndex: number; + successCount: number; + failureCount: number; + affectedRows: number; + elapsedMs: number; + statementSummary: string; + error?: string | null; +} + +export async function previewSqlFile(filePath: string): Promise { + return invoke("preview_sql_file", { filePath }); +} + +export async function executeSqlFile(request: SqlFileRequest): Promise { + return invoke("execute_sql_file", { request }); +} + +export async function cancelSqlFileExecution(executionId: string): Promise { + return invoke("cancel_sql_file_execution", { executionId }); +} + +export async function listenSqlFileProgress( + handler: (progress: SqlFileProgress) => void, +): Promise { + return listen("sql-file-progress", (event) => handler(event.payload)); +} + // --- Data Transfer --- export interface TransferRequest { transferId: string; diff --git a/src/stores/connectionStore.ts b/src/stores/connectionStore.ts index 9764d5e567..addc383572 100644 --- a/src/stores/connectionStore.ts +++ b/src/stores/connectionStore.ts @@ -18,6 +18,7 @@ export const useConnectionStore = defineStore("connection", () => { const completionColumnsCache = ref>({}); const transferSource = ref<{ connectionId: string; database: string } | null>(null); const schemaDiffSource = ref<{ connectionId: string; database: string } | null>(null); + const sqlFileSource = ref<{ connectionId: string; database: string } | null>(null); function startEditing(id: string) { editingConnectionId.value = id; @@ -647,5 +648,6 @@ export const useConnectionStore = defineStore("connection", () => { importConnectionsFromFile, transferSource, schemaDiffSource, + sqlFileSource, }; });