feat: sse for volume status change

This commit is contained in:
Nicolas Meienberger
2025-11-08 11:07:09 +01:00
parent fd3a527164
commit 11dd6f46c8
6 changed files with 23 additions and 6 deletions

View File

@@ -6,10 +6,16 @@ import type { TypedEmitter } from "tiny-typed-emitter";
*/
interface ServerEvents {
"backup:started": (data: { scheduleId: number; volumeName: string; repositoryName: string }) => void;
"backup:completed": (data: { scheduleId: number; volumeName: string; repositoryName: string; status: "success" | "error" }) => void;
"backup:completed": (data: {
scheduleId: number;
volumeName: string;
repositoryName: string;
status: "success" | "error";
}) => void;
"volume:mounted": (data: { volumeName: string }) => void;
"volume:unmounted": (data: { volumeName: string }) => void;
"volume:updated": (data: { volumeName: string }) => void;
"volume:status_changed": (data: { volumeName: string; status: string }) => void;
}
/**

View File

@@ -75,7 +75,7 @@ export const eventsController = new Hono().get("/", (c) => {
data: JSON.stringify({ timestamp: Date.now() }),
event: "heartbeat",
});
await stream.sleep(30000);
await stream.sleep(5000);
}
});
});

View File

@@ -224,6 +224,10 @@ const checkHealth = async (name: string) => {
const backend = createVolumeBackend(volume);
const { error, status } = await backend.checkHealth();
if (status !== volume.status) {
serverEvents.emit("volume:status_changed", { volumeName: name, status });
}
await db
.update(volumesTable)
.set({ lastHealthCheck: Date.now(), status, lastError: error ?? null })