feat(export): support database setup and batch SQL scripts
This commit is contained in:
21 files changed
+622
-235
No files matched your search
@@ -1,17 +1,31 @@
|
||||
import type { SqlFileProgress } from "@/lib/backend/tauri";
|
||||
import { apiUrl } from "@/lib/common/webPath";
|
||||
|
||||
export function listenSqlFileProgressById(executionId: string, handler: (progress: SqlFileProgress) => void): () => void {
|
||||
const es = new EventSource(apiUrl(`/api/sql-file/progress/${executionId}`));
|
||||
es.onmessage = (e) => {
|
||||
const progress: SqlFileProgress = JSON.parse(e.data);
|
||||
handler(progress);
|
||||
if (progress.status === "done" || progress.status === "error" || progress.status === "cancelled") {
|
||||
es.close();
|
||||
}
|
||||
};
|
||||
es.onerror = () => {
|
||||
es.close();
|
||||
};
|
||||
return () => es.close();
|
||||
export function listenSqlFileProgressById(executionId: string, handler: (progress: SqlFileProgress) => void, onError?: (error: Error) => void): Promise<() => void> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const es = new EventSource(apiUrl(`/api/sql-file/progress/${executionId}`));
|
||||
let opened = false;
|
||||
const close = () => es.close();
|
||||
|
||||
es.onopen = () => {
|
||||
opened = true;
|
||||
resolve(close);
|
||||
};
|
||||
es.onmessage = (e) => {
|
||||
const progress: SqlFileProgress = JSON.parse(e.data);
|
||||
handler(progress);
|
||||
if (progress.status === "done" || progress.status === "error" || progress.status === "cancelled") {
|
||||
close();
|
||||
}
|
||||
};
|
||||
es.onerror = () => {
|
||||
close();
|
||||
const error = new Error("SQL file progress connection failed");
|
||||
if (opened) {
|
||||
onError?.(error);
|
||||
} else {
|
||||
reject(error);
|
||||
}
|
||||
};
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user