2024-08-14 15:36:25 +07:00
|
|
|
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"],
|
2025-07-15 15:59:47 +08:00
|
|
|
queryFn: () => api.get<GetStatusResult>("/v2/GetClusterStatus"),
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const useClusterLayout = () => {
|
|
|
|
|
return useQuery({
|
|
|
|
|
queryKey: ["layout"],
|
2025-07-15 15:59:47 +08:00
|
|
|
queryFn: () => api.get<GetClusterLayoutResult>("/v2/GetClusterLayout"),
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-15 15:59:47 +08:00
|
|
|
export interface ConnectNodeResult {
|
|
|
|
|
success: boolean;
|
|
|
|
|
error?: string;
|
|
|
|
|
// Add other fields if the API returns more data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const useConnectNode = (options?: Partial<UseMutationOptions<ConnectNodeResult, Error, string>>) => {
|
|
|
|
|
return useMutation<ConnectNodeResult, Error, string>({
|
2024-08-14 15:36:25 +07:00
|
|
|
mutationFn: async (nodeId) => {
|
2025-07-15 15:59:47 +08:00
|
|
|
const res = await api.post<ConnectNodeResult>("/v2/ConnectClusterNodes", { body: [nodeId] });
|
2024-08-14 15:36:25 +07:00
|
|
|
return res;
|
|
|
|
|
},
|
2025-07-15 15:59:47 +08:00
|
|
|
...options,
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-15 15:59:47 +08:00
|
|
|
export const useAssignNode = (options?: Partial<UseMutationOptions<void, Error, AssignNodeBody>>) => {
|
|
|
|
|
return useMutation<void, Error, AssignNodeBody>({
|
|
|
|
|
mutationFn: (data) => api.post("/v2/AddClusterLayout", { body: [data] }),
|
|
|
|
|
...options,
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-15 15:59:47 +08:00
|
|
|
export const useUnassignNode = (options?: Partial<UseMutationOptions<void, Error, string>>) => {
|
|
|
|
|
return useMutation<void, Error, string>({
|
2024-08-14 15:36:25 +07:00
|
|
|
mutationFn: (nodeId) =>
|
2025-07-15 15:59:47 +08:00
|
|
|
api.post("/v2/AddClusterLayout", { body: [{ id: nodeId, remove: true }] }),
|
|
|
|
|
...options,
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-15 15:59:47 +08:00
|
|
|
export const useRevertChanges = (options?: Partial<UseMutationOptions<void, Error, number>>) => {
|
|
|
|
|
return useMutation<void, Error, number>({
|
2024-08-14 15:36:25 +07:00
|
|
|
mutationFn: (version) =>
|
2025-07-15 15:59:47 +08:00
|
|
|
api.post("/v2/RevertClusterLayout", { body: { version } }),
|
|
|
|
|
...options,
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2025-07-15 15:59:47 +08:00
|
|
|
export const useApplyChanges = (options?: Partial<UseMutationOptions<ApplyLayoutResult, Error, number>>) => {
|
2024-08-14 15:36:25 +07:00
|
|
|
return useMutation<ApplyLayoutResult, Error, number>({
|
|
|
|
|
mutationFn: (version) =>
|
2025-07-15 15:59:47 +08:00
|
|
|
api.post("/v2/ApplyClusterLayout", { body: { version } }),
|
|
|
|
|
...options,
|
2024-08-14 15:36:25 +07:00
|
|
|
});
|
|
|
|
|
};
|