48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
|
|
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'] })
|
||
|
|
},
|
||
|
|
})
|
||
|
|
}
|