38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
|
|
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||
|
|
import {
|
||
|
|
researchApi,
|
||
|
|
ResearchRunResult,
|
||
|
|
ResearchSessionDetail,
|
||
|
|
ResearchSessionItem,
|
||
|
|
StartResearchRequest,
|
||
|
|
} from "@/lib/api/research";
|
||
|
|
import { queryKeys } from "./queryKeys";
|
||
|
|
|
||
|
|
export function useStartResearch(projectName: string) {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
return useMutation<ResearchRunResult, Error, StartResearchRequest>({
|
||
|
|
mutationFn: (body) => researchApi.startByProject(body),
|
||
|
|
onSuccess: () => {
|
||
|
|
queryClient.invalidateQueries({
|
||
|
|
queryKey: queryKeys.research.sessions(projectName),
|
||
|
|
});
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
export function useResearchSessions(projectName: string, limit = 25) {
|
||
|
|
return useQuery<ResearchSessionItem[]>({
|
||
|
|
queryKey: queryKeys.research.sessions(projectName),
|
||
|
|
queryFn: () => researchApi.listSessions(projectName, limit),
|
||
|
|
enabled: Boolean(projectName),
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
export function useResearchSession(jobId: string | null | undefined) {
|
||
|
|
return useQuery<ResearchSessionDetail>({
|
||
|
|
queryKey: queryKeys.research.session(jobId ?? ""),
|
||
|
|
queryFn: () => researchApi.getSession(jobId!),
|
||
|
|
enabled: Boolean(jobId),
|
||
|
|
});
|
||
|
|
}
|