feat(repositories): healthchecks and doctor command

This commit is contained in:
Nicolas Meienberger
2025-11-08 10:11:07 +01:00
parent f5339d3708
commit 4dc239139f
14 changed files with 554 additions and 61 deletions

View File

@@ -8,11 +8,12 @@ interface Props {
snapshots: ListSnapshotsResponse;
snapshotId?: string;
loading?: boolean;
error?: string;
onSnapshotSelect: (snapshotId: string) => void;
}
export const SnapshotTimeline = (props: Props) => {
const { snapshots, snapshotId, loading, onSnapshotSelect } = props;
const { snapshots, snapshotId, loading, onSnapshotSelect, error } = props;
useEffect(() => {
if (!snapshotId && snapshots.length > 0) {
@@ -20,6 +21,16 @@ export const SnapshotTimeline = (props: Props) => {
}
}, [snapshotId, snapshots, onSnapshotSelect]);
if (error) {
return (
<Card>
<div className="flex items-center justify-center h-24 p-4 text-center">
<p className="text-destructive">Error loading snapshots: {error}</p>
</div>
</Card>
);
}
if (loading) {
return (
<Card>

View File

@@ -40,7 +40,11 @@ export default function ScheduleDetailsPage({ params, loaderData }: Route.Compon
initialData: loaderData,
});
const { data: snapshots, isLoading } = useQuery({
const {
data: snapshots,
isLoading,
failureReason,
} = useQuery({
...listSnapshotsOptions({
path: { name: schedule.repository.name },
query: { backupId: schedule.id.toString() },
@@ -174,6 +178,7 @@ export default function ScheduleDetailsPage({ params, loaderData }: Route.Compon
loading={isLoading}
snapshots={snapshots ?? []}
snapshotId={selectedSnapshot?.short_id}
error={failureReason?.message}
onSnapshotSelect={setSelectedSnapshotId}
/>
{selectedSnapshot && (