import api from "@/lib/api"; import { ApplyLayoutResult, AssignNodeBody, GetClusterLayoutResult, GetStatusResult, } from "./types"; import { useMutation, UseMutationOptions, useQuery, } from "@tanstack/react-query"; export const useClusterStatus = () => { return useQuery({ queryKey: ["status"], queryFn: () => api.get("/v2/GetClusterStatus"), }); }; export const useClusterLayout = () => { return useQuery({ queryKey: ["layout"], queryFn: () => api.get("/v2/GetClusterLayout"), }); }; export interface ConnectNodeResult { success: boolean; error?: string; // Add other fields if the API returns more data } export const useConnectNode = (options?: Partial>) => { return useMutation({ mutationFn: async (nodeId) => { const res = await api.post("/v2/ConnectClusterNodes", { body: [nodeId] }); return res; }, ...options, }); }; export const useAssignNode = (options?: Partial>) => { return useMutation({ mutationFn: (data) => api.post("/v2/AddClusterLayout", { body: [data] }), ...options, }); }; export const useUnassignNode = (options?: Partial>) => { return useMutation({ mutationFn: (nodeId) => api.post("/v2/AddClusterLayout", { body: [{ id: nodeId, remove: true }] }), ...options, }); }; export const useRevertChanges = (options?: Partial>) => { return useMutation({ mutationFn: (version) => api.post("/v2/RevertClusterLayout", { body: { version } }), ...options, }); }; export const useApplyChanges = (options?: Partial>) => { return useMutation({ mutationFn: (version) => api.post("/v2/ApplyClusterLayout", { body: { version } }), ...options, }); };