import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { api } from "../lib/api"; export function useSkills() { const { data: skills = [], isLoading: loading, refetch, } = useQuery({ queryKey: ["skills"], queryFn: () => api.skills.list(), refetchInterval: 30_000, }); return { skills, loading, refresh: refetch }; } export function useSkill(id: string | undefined) { const { data: skill = null, isLoading: loading, refetch, } = useQuery({ queryKey: ["skill", id], queryFn: () => api.skills.get(id!), enabled: !!id, refetchInterval: 30_000, }); return { skill, loading, refresh: refetch }; } export function useCreateSkill() { const queryClient = useQueryClient(); return useMutation({ mutationFn: api.skills.create, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["skills"] }); }, }); } export function useUpdateSkill() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, body }: { id: string; body: { name: string; description?: string | null; content: string } }) => api.skills.update(id, body), onSuccess: (_data, { id }) => { queryClient.invalidateQueries({ queryKey: ["skills"] }); queryClient.invalidateQueries({ queryKey: ["skill", id] }); }, }); } export function useDeleteSkill() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: string) => api.skills.delete(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["skills"] }); }, }); } export function useImportSkill() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (ref: string) => api.skills.import(ref), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["skills"] }); }, }); }