39246-vm/frontend/hooks/useKeywords.ts
abbashkyt-creator 7d8ce0e322 V0.1
2026-03-14 04:02:22 +03:00

33 lines
1.2 KiB
TypeScript

import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
import { fetchKeywords, addKeyword, updateKeyword, deleteKeyword, reorderKeywords } from '@/lib/api/keywords'
const KEY = ['keywords']
export const useKeywords = () => useQuery({ queryKey: KEY, queryFn: fetchKeywords })
export const useAddKeyword = () => {
const qc = useQueryClient()
return useMutation({
mutationFn: ({ term, weight }: { term: string; weight: number }) => addKeyword(term, weight),
onSuccess: () => qc.invalidateQueries({ queryKey: KEY })
})
}
export const useUpdateKeyword = () => {
const qc = useQueryClient()
return useMutation({
mutationFn: ({ id, data }: { id: number; data: Parameters<typeof updateKeyword>[1] }) => updateKeyword(id, data),
onSuccess: () => qc.invalidateQueries({ queryKey: KEY })
})
}
export const useDeleteKeyword = () => {
const qc = useQueryClient()
return useMutation({ mutationFn: deleteKeyword, onSuccess: () => qc.invalidateQueries({ queryKey: KEY }) })
}
export const useReorderKeywords = () => {
const qc = useQueryClient()
return useMutation({ mutationFn: reorderKeywords, onSuccess: () => qc.invalidateQueries({ queryKey: KEY }) })
}