45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { useSafeQuery } from '@/hooks/use-safe-query';
|
|
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
import {
|
|
createTrainingAction,
|
|
deleteTrainingAction,
|
|
getTrainingAction,
|
|
getTrainingByIdAction,
|
|
updateTrainingAction,
|
|
} from '../actions/training-actions';
|
|
import { TrainingSchema } from '../schemas/training';
|
|
|
|
export function useTrainingQuery(params = {}) {
|
|
return useSafeQuery(['training', params], () => getTrainingAction(params));
|
|
}
|
|
|
|
export function useTrainingByIdQuery(id: number) {
|
|
return useSafeQuery(['training', id], () => getTrainingByIdAction(id));
|
|
}
|
|
|
|
export function useCreateTraining() {
|
|
const queryClient = useQueryClient();
|
|
const mutation = useMutation({
|
|
mutationFn: (data: TrainingSchema) => createTrainingAction(data),
|
|
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['training'] }),
|
|
});
|
|
return mutation;
|
|
}
|
|
|
|
export function useUpdateTraining() {
|
|
const queryClient = useQueryClient();
|
|
const mutation = useMutation({
|
|
mutationFn: (data: TrainingSchema) => updateTrainingAction(data),
|
|
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['training'] }),
|
|
});
|
|
return mutation;
|
|
}
|
|
|
|
export function useDeleteTraining() {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: (id: number) => deleteTrainingAction(id),
|
|
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['training'] }),
|
|
});
|
|
}
|