53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import { useQueries } from "react-query";
|
|
import useAuthStore from "../stores/useAuthStore";
|
|
import { ResourceType } from "./useNode";
|
|
|
|
interface ResourceRddData {
|
|
cpu: number;
|
|
disk: number;
|
|
maxdisk: number;
|
|
mem: number;
|
|
maxmem: number;
|
|
netin: number;
|
|
netout: number;
|
|
}
|
|
|
|
export function useResource(
|
|
node: string,
|
|
type: ResourceType,
|
|
vmid: string | number
|
|
) {
|
|
console.log({ node, type, vmid });
|
|
const http = useAuthStore((state) => state.http);
|
|
const [rddData, config] = useQueries([
|
|
{
|
|
queryKey: ["nodes", node, type, vmid, "rdd"],
|
|
queryFn: () =>
|
|
http.get<{ data: ResourceRddData[] }>(
|
|
`/api2/json/nodes/${node}/${type}/${vmid}/rrddata`,
|
|
{
|
|
params: {
|
|
timeframe: "hour",
|
|
},
|
|
}
|
|
),
|
|
enabled: !!(node && vmid),
|
|
select: (data): ResourceRddData => data.data.data.at(-1),
|
|
},
|
|
{
|
|
queryKey: ["nodes", node, type, vmid, "config"],
|
|
queryFn: () =>
|
|
http.get<{ data: object }>(
|
|
`/api2/json/nodes/${node}/${type}/${vmid}/config`
|
|
),
|
|
enabled: !!(node && vmid),
|
|
select: (data): object => data.data.data,
|
|
},
|
|
]);
|
|
|
|
return {
|
|
rddData,
|
|
config,
|
|
};
|
|
}
|