portainer/app/react/kubernetes/dashboard/queries/getServicesCountQuery.ts

42 lines
1.1 KiB
TypeScript

import { useQuery } from '@tanstack/react-query';
import { withError } from '@/react-tools/react-query';
import axios, { parseAxiosError } from '@/portainer/services/axios';
import { EnvironmentId } from '@/react/portainer/environments/types';
const queryKeys = {
list: (environmentId: EnvironmentId) =>
['environments', environmentId, 'dashboard', 'servicesCount'] as const,
};
export function useGetServicesCountQuery(
environmentId: EnvironmentId,
options?: { autoRefreshRate?: number }
) {
return useQuery(
queryKeys.list(environmentId),
async () => getServicesCount(environmentId),
{
...withError('Unable to get services count'),
refetchInterval() {
return options?.autoRefreshRate ?? false;
},
}
);
}
async function getServicesCount(environmentId: EnvironmentId) {
try {
const { data: servicesCount } = await axios.get<number>(
`kubernetes/${environmentId}/services/count`
);
return servicesCount;
} catch (e) {
throw parseAxiosError(
e,
'Unable to get dashboard stats. Some counts may be inaccurate.'
);
}
}