33 lines
1.0 KiB
TypeScript
Executable File
33 lines
1.0 KiB
TypeScript
Executable File
import { useQuery } from '@tanstack/react-query';
|
|
import { queryClient } from '#app/providers/QueryProvider';
|
|
import { axiosClient } from '#infrastructure/axios';
|
|
import { MODULE_API_ENDPOINT } from '../config/meta';
|
|
import { Entity } from '../entities/Entity';
|
|
import { detailedKeyBuilder } from './keys';
|
|
|
|
export const invalidateDetailed = async (id?: number) => {
|
|
if (id === undefined) {
|
|
await queryClient.invalidateQueries(detailedKeyBuilder.invalidateAll());
|
|
} else {
|
|
await queryClient.invalidateQueries(detailedKeyBuilder.invalidate({ id: String(id) }));
|
|
}
|
|
};
|
|
|
|
export interface DetailedPayload {
|
|
id: string;
|
|
}
|
|
export const useGetDetailed = (payload?: DetailedPayload) => {
|
|
return useQuery({
|
|
queryKey: detailedKeyBuilder.store(payload as DetailedPayload),
|
|
queryFn: async () => {
|
|
return axiosClient
|
|
.get<Entity>(`${MODULE_API_ENDPOINT}/${payload?.id}`)
|
|
.then((data) => data.data);
|
|
},
|
|
enabled: Boolean(payload?.id),
|
|
throwOnError(_error) {
|
|
return false;
|
|
}
|
|
});
|
|
};
|