feat: repositories snapshots frontend

This commit is contained in:
Nicolas Meienberger
2025-10-23 20:55:44 +02:00
parent cae8538b2e
commit f7718055eb
12 changed files with 402 additions and 72 deletions

View File

@@ -61,19 +61,25 @@ export const repositoriesController = new Hono()
const snapshots = res.map((snapshot) => {
const { summary } = snapshot;
const { backup_start, backup_end } = summary;
const duration = new Date(backup_end).getTime() - new Date(backup_start).getTime();
let duration = 0;
if (summary) {
const { backup_start, backup_end } = summary;
duration = new Date(backup_end).getTime() - new Date(backup_start).getTime();
}
return {
short_id: snapshot.short_id,
duration,
paths: snapshot.paths,
size: summary.total_bytes_processed,
size: summary?.total_bytes_processed || 0,
time: new Date(snapshot.time).getTime(),
};
});
const response = { snapshots } satisfies ListSnapshotsResponseDto;
c.header("Cache-Control", "max-age=30, stale-while-revalidate=300");
return c.json(response, 200);
});

View File

@@ -1,6 +1,5 @@
import { Hono } from "hono";
import { validator } from "hono-openapi";
import { getVolumePath } from "./helpers";
import {
createVolumeBody,
createVolumeDto,
@@ -23,6 +22,7 @@ import {
updateVolumeDto,
} from "./volume.dto";
import { volumeService } from "./volume.service";
import { getVolumePath } from "./helpers";
export const volumeController = new Hono()
.get("/", listVolumesDto, async (c) => {

View File

@@ -26,15 +26,15 @@ const backupOutputSchema = type({
});
const snapshotInfoSchema = type({
gid: "number",
gid: "number?",
hostname: "string",
id: "string",
parent: "string?",
paths: "string[]",
program_version: "string",
program_version: "string?",
short_id: "string",
time: "string",
uid: "number",
uid: "number?",
username: "string",
summary: type({
backup_end: "string",
@@ -51,7 +51,7 @@ const snapshotInfoSchema = type({
total_bytes_processed: "number",
total_files_processed: "number",
tree_blobs: "number",
}),
}).optional(),
});
const ensurePassfile = async () => {