import type { MutationOptions } from '@tanstack/react-query' import { useMutation, useQuery } from '@tanstack/react-query' import { del, get, patch, post } from './base' import type { DeletePipelineResponse, ExportPipelineDSLRequest, ExportPipelineDSLResponse, ImportPipelineDSLConfirmResponse, ImportPipelineDSLRequest, ImportPipelineDSLResponse, PipelineCheckDependenciesResponse, PipelineProcessingParamsResponse, PipelineTemplateByIdResponse, PipelineTemplateListParams, PipelineTemplateListResponse, UpdatePipelineInfoRequest, UpdatePipelineInfoResponse, } from '@/models/pipeline' const NAME_SPACE = 'pipeline' export const usePipelineTemplateList = (params: PipelineTemplateListParams) => { return useQuery({ queryKey: [NAME_SPACE, 'template', 'list'], queryFn: () => { return get('/rag/pipeline/template', { params }) }, }) } export const usePipelineTemplateById = (templateId: string, enabled: boolean) => { return useQuery({ queryKey: [NAME_SPACE, 'template', templateId], queryFn: () => { return get(`/rag/pipeline/template/${templateId}`) }, enabled, }) } export const useUpdatePipelineInfo = ( mutationOptions: MutationOptions = {}, ) => { return useMutation({ mutationKey: [NAME_SPACE, 'template', 'update'], mutationFn: (request: UpdatePipelineInfoRequest) => { const { pipeline_id, ...rest } = request return patch(`/rag/pipeline/${pipeline_id}`, { body: rest, }) }, ...mutationOptions, }) } export const useDeletePipeline = ( mutationOptions: MutationOptions = {}, ) => { return useMutation({ mutationKey: [NAME_SPACE, 'template', 'delete'], mutationFn: (pipelineId: string) => { return del(`/rag/pipeline/${pipelineId}`) }, ...mutationOptions, }) } export const useExportPipelineDSL = ( mutationOptions: MutationOptions = {}, ) => { return useMutation({ mutationKey: [NAME_SPACE, 'dsl-export'], mutationFn: (request: ExportPipelineDSLRequest) => { return get(`/rag/pipeline/${request.pipeline_id}/export`, { params: { include_secret: !!request.include_secret, }, }) }, ...mutationOptions, }) } export const useImportPipelineDSL = ( mutationOptions: MutationOptions = {}, ) => { return useMutation({ mutationKey: [NAME_SPACE, 'dsl-import'], mutationFn: (request: ImportPipelineDSLRequest) => { return post('/rag/pipeline/imports', { body: request }) }, ...mutationOptions, }) } export const useImportPipelineDSLConfirm = ( mutationOptions: MutationOptions = {}, ) => { return useMutation({ mutationKey: [NAME_SPACE, 'dsl-import-confirm'], mutationFn: (importId: string) => { return post(`/rag/pipeline/imports/${importId}/confirm`) }, ...mutationOptions, }) } export const useCheckPipelineDependencies = ( mutationOptions: MutationOptions = {}, ) => { return useMutation({ mutationKey: [NAME_SPACE, 'check-dependencies'], mutationFn: (pipelineId: string) => { return post(`/rag/pipelines/imports/${pipelineId}/check-dependencies`) }, ...mutationOptions, }) } // Get the config of shared input fields export const usePipelineProcessingParams = (pipelineId: string) => { return useQuery({ queryKey: [NAME_SPACE, 'pipeline-processing-params', pipelineId], queryFn: () => { return get(`/rag/pipeline/${pipelineId}/workflows/processing/parameters`) }, }) }