metric updates

This commit is contained in:
Nate Kelley 2025-04-16 23:05:37 -06:00
parent 856a49fe40
commit 99b6436418
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
5 changed files with 20 additions and 19 deletions

View File

@ -31,13 +31,13 @@ export const useGetMetric = <TData = IBusterMetric>(
versionNumber: versionNumberProp
});
const initialOptions = metricsQueryKeys.metricsGetMetric(id!, paramVersionNumber || 'INITIAL');
const initialOptions = metricsQueryKeys.metricsGetMetric(id!, paramVersionNumber || null);
const initialQueryFn = useMemoizedFn(async (version?: number) => {
const initialQueryFn = useMemoizedFn(async (version?: number | null) => {
const result = await getMetric({
id: id!,
password,
version_number: version
version_number: version === null ? undefined : version
});
const updatedMetric = upgradeMetricToIMetric(result, null);
const isLatestVersion =
@ -67,10 +67,9 @@ export const useGetMetric = <TData = IBusterMetric>(
});
return useQuery({
queryKey: metricsQueryKeys.metricsGetMetric(id!, selectedVersionNumber!).queryKey,
enabled:
!!latestVersionNumber && !!selectedVersionNumber && isFetchedInitial && !isErrorInitial,
queryFn: () => initialQueryFn(selectedVersionNumber!),
queryKey: metricsQueryKeys.metricsGetMetric(id!, selectedVersionNumber).queryKey,
enabled: !!latestVersionNumber && isFetchedInitial && !isErrorInitial,
queryFn: () => initialQueryFn(selectedVersionNumber),
select: params?.select
});
};
@ -122,7 +121,7 @@ export const useGetMetricData = <TData = IBusterMetricData>(
const queryFn = useMemoizedFn(async () => {
const result = await getMetricData({
id: id!,
version_number: selectedVersionNumber,
version_number: selectedVersionNumber || undefined,
password
});
@ -130,7 +129,7 @@ export const useGetMetricData = <TData = IBusterMetricData>(
});
return useQuery({
...metricsQueryKeys.metricsGetData(id!, selectedVersionNumber),
...metricsQueryKeys.metricsGetData(id!, selectedVersionNumber!),
queryFn,
enabled: () => {
return (
@ -148,7 +147,7 @@ export const useGetMetricData = <TData = IBusterMetricData>(
};
export const prefetchGetMetricDataClient = async (
{ id, version_number }: { id: string; version_number: number | undefined },
{ id, version_number }: { id: string; version_number: number },
queryClient: QueryClient
) => {
const options = metricsQueryKeys.metricsGetData(id, version_number);
@ -163,7 +162,7 @@ export const prefetchGetMetricDataClient = async (
export const usePrefetchGetMetricDataClient = () => {
const queryClient = useQueryClient();
return useMemoizedFn(({ id, versionNumber }: { id: string; versionNumber: number | undefined }) =>
return useMemoizedFn(({ id, versionNumber }: { id: string; versionNumber: number }) =>
prefetchGetMetricDataClient({ id, version_number: versionNumber }, queryClient)
);
};

View File

@ -1,6 +1,6 @@
import { useParams, useSearchParams } from 'next/navigation';
import { useMemo } from 'react';
import { hashKey, Query, QueryFilters, useQueryClient } from '@tanstack/react-query';
import { Query, useQueryClient } from '@tanstack/react-query';
import { IBusterMetric } from '@/api/asset_interfaces/metric';
import { metricsQueryKeys } from '@/api/query_keys/metric';
import last from 'lodash/last';
@ -25,7 +25,8 @@ export const useGetMetricVersionNumber = (props?: { versionNumber?: number | nul
const latestVersionNumber = useGetLatestMetricVersion({ metricId: metricIdPathParam! });
const selectedVersionNumber: number = useMemo(() => {
const selectedVersionNumber: number | null = useMemo(() => {
if (versionNumberProp === null) return null;
return paramVersionNumber || latestVersionNumber || 0;
}, [paramVersionNumber, latestVersionNumber]);
@ -51,7 +52,7 @@ const useGetLatestMetricVersion = ({ metricId }: { metricId: string }) => {
const queryClient = useQueryClient();
const memoizedKey = useMemo(() => {
return metricsQueryKeys.metricsGetMetric(metricId, 'INITIAL').queryKey.slice(0, -1);
return metricsQueryKeys.metricsGetMetric(metricId, null).queryKey.slice(0, -1);
}, [metricId]);
const queries = queryClient.getQueriesData<IBusterMetric, any>({
@ -83,7 +84,7 @@ export const useGetLatestMetricVersionNumber = () => {
const method = useMemoizedFn((metricId: string) => {
const queries = queryClient.getQueriesData<IBusterMetric, any>({
queryKey: metricsQueryKeys.metricsGetMetric(metricId, 'INITIAL').queryKey.slice(0, -1),
queryKey: metricsQueryKeys.metricsGetMetric(metricId, null).queryKey.slice(0, -1),
predicate: filterMetricPredicate
});

View File

@ -62,6 +62,7 @@ export const useSaveMetric = (params?: { updateOnSave?: boolean }) => {
const metric = queryClient.getQueryData(
metricsQueryKeys.metricsGetMetric(id, selectedVersionNumber).queryKey
);
if (!metric) return;
const metricVersionNumber = metric?.version_number;
const metricData = queryClient.getQueryData(
metricsQueryKeys.metricsGetData(id, metricVersionNumber).queryKey

View File

@ -6,9 +6,9 @@ import type {
} from '@/api/asset_interfaces/metric';
import { type listMetrics } from '../buster_rest/metrics';
export const metricsGetMetric = (metricId: string, version_number: number | 'INITIAL') => {
export const metricsGetMetric = (metricId: string, version_number: number | null) => {
return queryOptions<IBusterMetric>({
queryKey: ['metrics', 'get', metricId, version_number] as const,
queryKey: ['metrics', 'get', metricId, version_number || 'INITIAL'] as const,
staleTime: 30 * 60 * 1000
});
};
@ -22,7 +22,7 @@ export const metricsGetList = (
initialDataUpdatedAt: 0
});
export const metricsGetData = (id: string, version_number?: number | undefined) =>
export const metricsGetData = (id: string, version_number: number) =>
queryOptions<IBusterMetricData>({
queryKey: ['metrics', 'data', id, version_number || 'INITIAL'] as const,
staleTime: 3 * 60 * 60 * 1000 // 3 hours,

View File

@ -26,7 +26,7 @@ const useBusterAssets = () => {
const invalidateAssetData = useMemoizedFn(async (assetId: string, type: ShareAssetType) => {
if (type === 'metric') {
await queryClient.invalidateQueries({
queryKey: queryKeys.metricsGetMetric(assetId, 'INITIAL').queryKey
queryKey: queryKeys.metricsGetMetric(assetId, null).queryKey
});
} else if (type === 'dashboard') {
await queryClient.invalidateQueries({