import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { acknowledgeBackupAlert, fetchBackupAlerts, fetchBackupDashboard, fetchBackupJob, fetchBackupJobs, fetchBackupRuns, } from "../api/backups"; export function useBackupJobs(serviceId?: string) { return useQuery({ queryKey: ["backups", "jobs", serviceId ?? ""], queryFn: () => fetchBackupJobs(serviceId), refetchInterval: 30_000, }); } export function useBackupJob(jobId: string) { return useQuery({ queryKey: ["backups", "jobs", jobId], queryFn: () => fetchBackupJob(jobId), enabled: !!jobId, }); } export function useBackupRuns( jobId?: string, status?: string, serviceId?: string, ) { return useQuery({ queryKey: ["backups", "runs", jobId, status, serviceId ?? ""], queryFn: () => fetchBackupRuns(jobId, status, serviceId), refetchInterval: 15_000, }); } export function useBackupAlerts( jobId?: string, acknowledged?: boolean, severity?: string, serviceId?: string, ) { return useQuery({ queryKey: [ "backups", "alerts", jobId, acknowledged, severity, serviceId ?? "", ], queryFn: () => fetchBackupAlerts(jobId, acknowledged, severity, serviceId), refetchInterval: 30_000, }); } export function useAcknowledgeAlert() { const queryClient = useQueryClient(); return useMutation({ mutationFn: acknowledgeBackupAlert, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["backups", "alerts"] }); }, }); } export function useBackupDashboard() { return useQuery({ queryKey: ["dashboard", "backups"], queryFn: fetchBackupDashboard, refetchInterval: 30_000, }); }