Add missing frontend and backend files
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import {
|
||||
deleteMonitoringMachine,
|
||||
deleteSSHKey,
|
||||
fetchMonitoringSettings,
|
||||
fetchSSHKeys,
|
||||
fetchSavedTaskRuns,
|
||||
fetchSavedTasks,
|
||||
generateSSHKey,
|
||||
resetLocalDatabase,
|
||||
saveMonitoringMachine,
|
||||
saveSSHKey,
|
||||
saveTask,
|
||||
deleteTask,
|
||||
runTask,
|
||||
} from "../api/client";
|
||||
import type {
|
||||
MonitoringMachineInput,
|
||||
ResetLocalDatabaseInput,
|
||||
SavedTaskInput,
|
||||
SSHKeyInput,
|
||||
} from "../types";
|
||||
|
||||
export function useMonitoringSettings() {
|
||||
return useQuery({
|
||||
queryKey: ["settings", "monitoring-machines"],
|
||||
queryFn: fetchMonitoringSettings,
|
||||
refetchInterval: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useSSHKeys() {
|
||||
return useQuery({
|
||||
queryKey: ["settings", "ssh-keys"],
|
||||
queryFn: fetchSSHKeys,
|
||||
refetchInterval: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useGenerateSSHKey() {
|
||||
return useMutation({
|
||||
mutationFn: (payload: {
|
||||
name: string;
|
||||
passphrase: string;
|
||||
notes: string;
|
||||
bits?: number;
|
||||
}) => generateSSHKey(payload),
|
||||
});
|
||||
}
|
||||
|
||||
export function useSaveSSHKey() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (key: SSHKeyInput) => saveSSHKey(key),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["settings"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteSSHKey() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (keyId: string) => deleteSSHKey(keyId),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["settings"] });
|
||||
queryClient.invalidateQueries({ queryKey: ["monitoring"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useTasks() {
|
||||
return useQuery({
|
||||
queryKey: ["tasks"],
|
||||
queryFn: fetchSavedTasks,
|
||||
refetchInterval: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useTaskRuns(taskId?: string) {
|
||||
return useQuery({
|
||||
queryKey: ["tasks", taskId ?? "none", "runs"],
|
||||
queryFn: () => fetchSavedTaskRuns(taskId ?? ""),
|
||||
enabled: Boolean(taskId),
|
||||
refetchInterval: 30_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useSaveTask() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (task: SavedTaskInput) => saveTask(task),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["tasks"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteTask() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (taskId: string) => deleteTask(taskId),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["tasks"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useRunTask() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: ({
|
||||
taskId,
|
||||
machineId,
|
||||
}: {
|
||||
taskId: string;
|
||||
machineId?: string;
|
||||
}) => runTask(taskId, machineId),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["tasks"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useSaveMonitoringMachine() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (machine: MonitoringMachineInput) =>
|
||||
saveMonitoringMachine(machine),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["settings"] });
|
||||
queryClient.invalidateQueries({ queryKey: ["monitoring"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteMonitoringMachine() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (machineId: string) => deleteMonitoringMachine(machineId),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["settings"] });
|
||||
queryClient.invalidateQueries({ queryKey: ["monitoring"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useResetLocalDatabase() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: (payload: ResetLocalDatabaseInput) =>
|
||||
resetLocalDatabase(payload),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["settings"] });
|
||||
queryClient.invalidateQueries({ queryKey: ["monitoring"] });
|
||||
queryClient.invalidateQueries({ queryKey: ["media"] });
|
||||
queryClient.invalidateQueries({ queryKey: ["dashboard"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user