dify/web/service/use-pipeline.ts

170 lines
5.4 KiB
TypeScript
Raw Normal View History

import type { MutationOptions } from '@tanstack/react-query'
import { useMutation, useQuery } from '@tanstack/react-query'
import { del, get, patch, post } from './base'
import type {
DeleteTemplateResponse,
ExportTemplateDSLResponse,
ImportPipelineDSLConfirmResponse,
ImportPipelineDSLRequest,
ImportPipelineDSLResponse,
PipelineCheckDependenciesResponse,
PipelineDatasourceNodeRunRequest,
PipelineDatasourceNodeRunResponse,
PipelineProcessingParamsRequest,
PipelineProcessingParamsResponse,
PipelineTemplateByIdResponse,
PipelineTemplateListParams,
PipelineTemplateListResponse,
PublishedPipelineInfoResponse,
UpdateTemplateInfoRequest,
UpdateTemplateInfoResponse,
} from '@/models/pipeline'
2025-05-16 14:53:39 +08:00
import type { ToolWithProvider } from '@/app/components/workflow/types'
const NAME_SPACE = 'pipeline'
export const usePipelineTemplateList = (params: PipelineTemplateListParams) => {
return useQuery<PipelineTemplateListResponse>({
queryKey: [NAME_SPACE, 'template', 'list'],
queryFn: () => {
return get<PipelineTemplateListResponse>('/rag/pipeline/templates', { params })
},
})
}
export const usePipelineTemplateById = (templateId: string, enabled: boolean) => {
return useQuery<PipelineTemplateByIdResponse>({
queryKey: [NAME_SPACE, 'template', templateId],
queryFn: () => {
return get<PipelineTemplateByIdResponse>(`/rag/pipeline/templates/${templateId}`)
},
enabled,
})
}
export const useUpdateTemplateInfo = (
mutationOptions: MutationOptions<UpdateTemplateInfoResponse, Error, UpdateTemplateInfoRequest> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'template', 'update'],
mutationFn: (request: UpdateTemplateInfoRequest) => {
const { template_id, ...rest } = request
return patch<UpdateTemplateInfoResponse>(`/rag/customized/templates/${template_id}`, {
body: rest,
})
},
...mutationOptions,
})
}
export const useDeleteTemplate = (
mutationOptions: MutationOptions<DeleteTemplateResponse, Error, string> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'template', 'delete'],
mutationFn: (templateId: string) => {
return del<DeleteTemplateResponse>(`/rag/customized/templates/${templateId}`)
},
...mutationOptions,
})
}
export const useExportTemplateDSL = (
mutationOptions: MutationOptions<ExportTemplateDSLResponse, Error, string> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'dsl-export'],
mutationFn: (templateId: string) => {
return get<ExportTemplateDSLResponse>(`/rag/customized/templates/${templateId}`)
},
...mutationOptions,
})
}
export const useImportPipelineDSL = (
mutationOptions: MutationOptions<ImportPipelineDSLResponse, Error, ImportPipelineDSLRequest> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'dsl-import'],
mutationFn: (request: ImportPipelineDSLRequest) => {
return post<ImportPipelineDSLResponse>('/rag/pipelines/imports', { body: request })
},
...mutationOptions,
})
}
export const useImportPipelineDSLConfirm = (
mutationOptions: MutationOptions<ImportPipelineDSLConfirmResponse, Error, string> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'dsl-import-confirm'],
mutationFn: (importId: string) => {
return post<ImportPipelineDSLConfirmResponse>(`/rag/pipelines/imports/${importId}/confirm`)
},
...mutationOptions,
})
}
export const useCheckPipelineDependencies = (
mutationOptions: MutationOptions<PipelineCheckDependenciesResponse, Error, string> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'check-dependencies'],
mutationFn: (pipelineId: string) => {
return post<PipelineCheckDependenciesResponse>(`/rag/pipelines/imports/${pipelineId}/check-dependencies`)
},
...mutationOptions,
})
}
export const useDatasourceNodeRun = (
mutationOptions: MutationOptions<PipelineDatasourceNodeRunResponse, Error, PipelineDatasourceNodeRunRequest> = {},
) => {
return useMutation({
mutationKey: [NAME_SPACE, 'datasource-node-run'],
mutationFn: (request: PipelineDatasourceNodeRunRequest) => {
const { pipeline_id, node_id, ...rest } = request
return post<PipelineDatasourceNodeRunResponse>(`/rag/pipelines/${pipeline_id}/workflows/published/nodes/${node_id}/run`, {
body: rest,
})
},
...mutationOptions,
})
}
// Get the config of shared input fields
export const usePipelineProcessingParams = (params: PipelineProcessingParamsRequest) => {
const { pipeline_id, node_id } = params
return useQuery<PipelineProcessingParamsResponse>({
queryKey: [NAME_SPACE, 'pipeline-processing-params', pipeline_id],
queryFn: () => {
return get<PipelineProcessingParamsResponse>(`/rag/pipelines/${pipeline_id}/workflows/processing/parameters`, {
params: {
node_id,
},
})
},
})
}
2025-05-16 14:53:39 +08:00
export const useDataSourceList = (enabled?: boolean) => {
return useQuery<ToolWithProvider[]>({
enabled,
queryKey: [NAME_SPACE, 'data-source'],
queryFn: () => {
return get('/rag/pipelines/datasource-plugins')
},
retry: false,
})
}
export const usePublishedPipelineInfo = (pipelineId: string) => {
return useQuery<PublishedPipelineInfoResponse>({
queryKey: [NAME_SPACE, 'published-pipeline', pipelineId],
queryFn: () => {
return get<PublishedPipelineInfoResponse>(`/rag/pipelines/${pipelineId}/workflows/publish`)
},
2025-05-22 14:49:40 +08:00
enabled: !!pipelineId,
})
}