43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
|
|
import { contentService } from "./services";
|
|
import { QUERY_KEYS } from "@/config/constants";
|
|
import type { ContentInput, ContentUpdateInput, CmsType } from "./schemas";
|
|
|
|
export const useContentList = (cmsType: CmsType) => {
|
|
return useQuery({
|
|
queryKey: [QUERY_KEYS.CMS_CONTENT, cmsType],
|
|
queryFn: () => contentService.getAll(cmsType),
|
|
});
|
|
};
|
|
|
|
export const useCreateContent = () => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: (data: ContentInput) => contentService.create(data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CMS_CONTENT] });
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useUpdateContent = () => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: ({ id, data }: { id: string; data: ContentUpdateInput }) =>
|
|
contentService.update(id, data),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CMS_CONTENT] });
|
|
},
|
|
});
|
|
};
|
|
|
|
export const useDeleteContent = () => {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: (id: string) => contentService.delete(id),
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: [QUERY_KEYS.CMS_CONTENT] });
|
|
},
|
|
});
|
|
};
|