mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-31 10:47:38 +00:00
60 lines
2.3 KiB
TypeScript
60 lines
2.3 KiB
TypeScript
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
import { containerService } from '@/services/containerService';
|
|
|
|
export const containerKeys = {
|
|
all: ['containers'] as const,
|
|
byWagon: (wagonId: string) => [...containerKeys.all, 'wagon', wagonId] as const,
|
|
details: () => [...containerKeys.all, 'detail'] as const,
|
|
detail: (id: string) => [...containerKeys.details(), id] as const,
|
|
};
|
|
|
|
export function useContainers() {
|
|
return useQuery({ queryKey: containerKeys.all, queryFn: () => containerService.getAll().then(res => res.data) });
|
|
}
|
|
|
|
export const useGetContainers = useContainers;
|
|
|
|
export function useContainersByWagon(wagonId: string) {
|
|
return useQuery({ queryKey: containerKeys.byWagon(wagonId), queryFn: () => containerService.getByWagon(wagonId).then(res => res.data), enabled: !!wagonId });
|
|
}
|
|
|
|
export function useContainer(id: string) {
|
|
return useQuery({ queryKey: containerKeys.detail(id), queryFn: () => containerService.getById(id).then(res => res.data), enabled: !!id });
|
|
}
|
|
|
|
export const useGetContainer = useContainer;
|
|
|
|
export function useCreateContainer() {
|
|
const qc = useQueryClient();
|
|
return useMutation({ mutationFn: containerService.create, onSuccess: () => qc.invalidateQueries({ queryKey: containerKeys.all }) });
|
|
}
|
|
|
|
export function useUpdateContainer() {
|
|
const qc = useQueryClient();
|
|
return useMutation({ mutationFn: ({ id, data }: any) => containerService.update(id, data), onSuccess: (_, { id }) => {
|
|
qc.invalidateQueries({ queryKey: containerKeys.all });
|
|
qc.invalidateQueries({ queryKey: containerKeys.detail(id) });
|
|
} });
|
|
}
|
|
|
|
export function useDeleteContainer() {
|
|
const qc = useQueryClient();
|
|
return useMutation({ mutationFn: containerService.delete, onSuccess: () => qc.invalidateQueries({ queryKey: containerKeys.all }) });
|
|
}
|
|
|
|
export function useAssignContainerToWagon() {
|
|
const qc = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: ({ containerId, wagonId, position }: any) => containerService.assignToWagon(containerId, wagonId, position),
|
|
onSuccess: (_, { wagonId }) => qc.invalidateQueries({ queryKey: containerKeys.byWagon(wagonId) })
|
|
});
|
|
}
|
|
|
|
export function useUnassignContainer() {
|
|
const qc = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: containerService.unassign,
|
|
onSuccess: () => qc.invalidateQueries({ queryKey: containerKeys.all })
|
|
});
|
|
}
|