| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /**
- * Document Schedule API Hooks
- */
- import { del, get, post } from '@/service/base'
- import type {
- CreateScheduleRequest,
- Schedule,
- ScheduleListResponse,
- ScheduleStatistics,
- } from '@/models/document-schedule'
- import type { CommonResponse } from '@/models/common'
- import { useMutation, useQuery } from '@tanstack/react-query'
- const NAME_SPACE = 'document-schedule'
- // Query Keys
- export const useScheduleListKey = (datasetId: string, documentId: string) => {
- return [NAME_SPACE, 'list', datasetId, documentId]
- }
- export const useScheduleDetailKey = (datasetId: string, documentId: string, scheduleId: string) => {
- return [NAME_SPACE, 'detail', datasetId, documentId, scheduleId]
- }
- export const useScheduleStatisticsKey = (datasetId: string) => {
- return [NAME_SPACE, 'statistics', datasetId]
- }
- // Mutations
- /**
- * Create a scheduled document status change
- */
- export const useCreateSchedule = () => {
- return useMutation({
- mutationKey: [NAME_SPACE, 'create'],
- mutationFn: (payload: {
- datasetId: string
- documentId: string
- body: CreateScheduleRequest
- }) => {
- const { datasetId, documentId, body } = payload
- return post<Schedule>(
- `/datasets/${datasetId}/documents/${documentId}/schedules`,
- { body },
- )
- },
- })
- }
- /**
- * Cancel a scheduled task
- */
- export const useCancelSchedule = () => {
- return useMutation({
- mutationKey: [NAME_SPACE, 'cancel'],
- mutationFn: (payload: {
- datasetId: string
- documentId: string
- scheduleId: string
- }) => {
- const { datasetId, documentId, scheduleId } = payload
- return del<CommonResponse>(
- `/datasets/${datasetId}/documents/${documentId}/schedules/${scheduleId}`,
- )
- },
- })
- }
- // Queries
- /**
- * Get all schedules for a document
- */
- export const useDocumentSchedules = (
- datasetId: string,
- documentId: string,
- includeCompleted = false,
- ) => {
- return useQuery({
- queryKey: [...useScheduleListKey(datasetId, documentId), includeCompleted],
- queryFn: () => {
- const params = new URLSearchParams()
- if (includeCompleted)
- params.append('include_completed', 'true')
- return get<ScheduleListResponse>(
- `/datasets/${datasetId}/documents/${documentId}/schedules?${params.toString()}`,
- )
- },
- enabled: !!(datasetId && documentId),
- })
- }
- /**
- * Get schedule details
- */
- export const useScheduleDetail = (
- datasetId: string,
- documentId: string,
- scheduleId: string,
- ) => {
- return useQuery({
- queryKey: useScheduleDetailKey(datasetId, documentId, scheduleId),
- queryFn: () =>
- get<Schedule>(
- `/datasets/${datasetId}/documents/${documentId}/schedules/${scheduleId}`,
- ),
- enabled: !!(datasetId && documentId && scheduleId),
- })
- }
- /**
- * Get schedule statistics for a dataset
- */
- export const useScheduleStatistics = (datasetId: string) => {
- return useQuery({
- queryKey: useScheduleStatisticsKey(datasetId),
- queryFn: () =>
- get<ScheduleStatistics>(
- `/datasets/${datasetId}/schedules/statistics`,
- ),
- enabled: !!datasetId,
- })
- }
|