mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 04:43:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { del, get, patch, post } from './base'
 | 
						|
import { useInfiniteQuery, useMutation, useQuery } from '@tanstack/react-query'
 | 
						|
import type {
 | 
						|
  FetchWorkflowDraftPageParams,
 | 
						|
  FetchWorkflowDraftPageResponse,
 | 
						|
  FetchWorkflowDraftResponse,
 | 
						|
  PublishWorkflowParams,
 | 
						|
  UpdateWorkflowParams,
 | 
						|
  WorkflowConfigResponse,
 | 
						|
} from '@/types/workflow'
 | 
						|
import type { CommonResponse } from '@/models/common'
 | 
						|
import { useReset } from './use-base'
 | 
						|
 | 
						|
const NAME_SPACE = 'workflow'
 | 
						|
 | 
						|
export const useAppWorkflow = (appID: string) => {
 | 
						|
  return useQuery<FetchWorkflowDraftResponse>({
 | 
						|
    enabled: !!appID,
 | 
						|
    queryKey: [NAME_SPACE, 'publish', appID],
 | 
						|
    queryFn: () => get<FetchWorkflowDraftResponse>(`/apps/${appID}/workflows/publish`),
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
export const useWorkflowConfig = <T = WorkflowConfigResponse>(url: string, onSuccess: (v: T) => void) => {
 | 
						|
  return useQuery({
 | 
						|
    enabled: !!url,
 | 
						|
    queryKey: [NAME_SPACE, 'config', url],
 | 
						|
    queryFn: async () => {
 | 
						|
      const data = await get<T>(url)
 | 
						|
      onSuccess(data)
 | 
						|
      return data
 | 
						|
    },
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
const WorkflowVersionHistoryKey = [NAME_SPACE, 'versionHistory']
 | 
						|
 | 
						|
export const useWorkflowVersionHistory = (params: FetchWorkflowDraftPageParams) => {
 | 
						|
  const { url, initialPage, limit, userId, namedOnly } = params
 | 
						|
  return useInfiniteQuery({
 | 
						|
    enabled: !!url,
 | 
						|
    queryKey: [...WorkflowVersionHistoryKey, url, initialPage, limit, userId, namedOnly],
 | 
						|
    queryFn: ({ pageParam = 1 }) => get<FetchWorkflowDraftPageResponse>(url, {
 | 
						|
      params: {
 | 
						|
        page: pageParam,
 | 
						|
        limit,
 | 
						|
        user_id: userId || '',
 | 
						|
        named_only: !!namedOnly,
 | 
						|
      },
 | 
						|
    }),
 | 
						|
    getNextPageParam: lastPage => lastPage.has_more ? lastPage.page + 1 : null,
 | 
						|
    initialPageParam: initialPage,
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
export const useResetWorkflowVersionHistory = () => {
 | 
						|
  return useReset([...WorkflowVersionHistoryKey])
 | 
						|
}
 | 
						|
 | 
						|
export const useUpdateWorkflow = () => {
 | 
						|
  return useMutation({
 | 
						|
    mutationKey: [NAME_SPACE, 'update'],
 | 
						|
    mutationFn: (params: UpdateWorkflowParams) => patch(params.url, {
 | 
						|
      body: {
 | 
						|
        marked_name: params.title,
 | 
						|
        marked_comment: params.releaseNotes,
 | 
						|
      },
 | 
						|
    }),
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
export const useDeleteWorkflow = () => {
 | 
						|
  return useMutation({
 | 
						|
    mutationKey: [NAME_SPACE, 'delete'],
 | 
						|
    mutationFn: (url: string) => del(url),
 | 
						|
  })
 | 
						|
}
 | 
						|
 | 
						|
export const usePublishWorkflow = () => {
 | 
						|
  return useMutation({
 | 
						|
    mutationKey: [NAME_SPACE, 'publish'],
 | 
						|
    mutationFn: (params: PublishWorkflowParams) => post<CommonResponse & { created_at: number }>(params.url, {
 | 
						|
      body: {
 | 
						|
        marked_name: params.title,
 | 
						|
        marked_comment: params.releaseNotes,
 | 
						|
      },
 | 
						|
    }),
 | 
						|
  })
 | 
						|
}
 |