Files
nuzlocke-tracker/frontend/src/hooks/useRuns.ts

48 lines
1.2 KiB
TypeScript
Raw Normal View History

import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { getRuns, getRun, createRun, updateRun, deleteRun } from '../api/runs'
import type { CreateRunInput, UpdateRunInput } from '../types/game'
export function useRuns() {
return useQuery({
queryKey: ['runs'],
queryFn: getRuns,
})
}
export function useRun(id: number) {
return useQuery({
queryKey: ['runs', id],
queryFn: () => getRun(id),
})
}
export function useCreateRun() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (data: CreateRunInput) => createRun(data),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['runs'] })
},
})
}
export function useUpdateRun(id: number) {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (data: UpdateRunInput) => updateRun(id, data),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['runs'] })
},
})
}
export function useDeleteRun() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (id: number) => deleteRun(id),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['runs'] })
},
})
}