balibabu
				
			
		feat: Fixed the issue where the test database connection was successful but the prompt message showed that there was no error status #1739 (#2051)
		f3bf833
		
		| import { ResponseType } from '@/interfaces/database/base'; | |
| import { DSL, IFlow, IFlowTemplate } from '@/interfaces/database/flow'; | |
| import i18n from '@/locales/config'; | |
| import flowService from '@/services/flow-service'; | |
| import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; | |
| import { message } from 'antd'; | |
| import { useParams } from 'umi'; | |
| import { v4 as uuid } from 'uuid'; | |
| export const EmptyDsl = { | |
| graph: { | |
| nodes: [ | |
| { | |
| id: 'begin', | |
| type: 'beginNode', | |
| position: { | |
| x: 50, | |
| y: 200, | |
| }, | |
| data: { | |
| label: 'Begin', | |
| name: 'begin', | |
| }, | |
| sourcePosition: 'left', | |
| targetPosition: 'right', | |
| }, | |
| ], | |
| edges: [], | |
| }, | |
| components: { | |
| begin: { | |
| obj: { | |
| component_name: 'Begin', | |
| params: {}, | |
| }, | |
| downstream: ['Answer:China'], // other edge target is downstream, edge source is current node id | |
| upstream: [], // edge source is upstream, edge target is current node id | |
| }, | |
| }, | |
| messages: [], | |
| reference: [], | |
| history: [], | |
| path: [], | |
| answer: [], | |
| }; | |
| export const useFetchFlowTemplates = (): ResponseType<IFlowTemplate[]> => { | |
| const { data } = useQuery({ | |
| queryKey: ['fetchFlowTemplates'], | |
| initialData: [], | |
| queryFn: async () => { | |
| const { data } = await flowService.listTemplates(); | |
| if (Array.isArray(data?.data)) { | |
| data.data.unshift({ | |
| id: uuid(), | |
| title: 'Blank', | |
| description: 'Create from nothing', | |
| dsl: EmptyDsl, | |
| }); | |
| } | |
| return data; | |
| }, | |
| }); | |
| return data; | |
| }; | |
| export const useFetchFlowList = (): { data: IFlow[]; loading: boolean } => { | |
| const { data, isFetching: loading } = useQuery({ | |
| queryKey: ['fetchFlowList'], | |
| initialData: [], | |
| gcTime: 0, | |
| queryFn: async () => { | |
| const { data } = await flowService.listCanvas(); | |
| return data?.data ?? []; | |
| }, | |
| }); | |
| return { data, loading }; | |
| }; | |
| export const useFetchFlow = (): { | |
| data: IFlow; | |
| loading: boolean; | |
| refetch: () => void; | |
| } => { | |
| const { id } = useParams(); | |
| const { | |
| data, | |
| isFetching: loading, | |
| refetch, | |
| } = useQuery({ | |
| queryKey: ['flowDetail'], | |
| initialData: {} as IFlow, | |
| refetchOnReconnect: false, | |
| refetchOnMount: false, | |
| refetchOnWindowFocus: false, | |
| gcTime: 0, | |
| queryFn: async () => { | |
| const { data } = await flowService.getCanvas({}, id); | |
| return data?.data ?? {}; | |
| }, | |
| }); | |
| return { data, loading, refetch }; | |
| }; | |
| export const useSetFlow = () => { | |
| const queryClient = useQueryClient(); | |
| const { | |
| data, | |
| isPending: loading, | |
| mutateAsync, | |
| } = useMutation({ | |
| mutationKey: ['setFlow'], | |
| mutationFn: async (params: { | |
| id?: string; | |
| title?: string; | |
| dsl?: DSL; | |
| avatar?: string; | |
| }) => { | |
| const { data = {} } = await flowService.setCanvas(params); | |
| if (data.retcode === 0) { | |
| message.success( | |
| i18n.t(`message.${params?.id ? 'modified' : 'created'}`), | |
| ); | |
| queryClient.invalidateQueries({ queryKey: ['fetchFlowList'] }); | |
| } | |
| return data; | |
| }, | |
| }); | |
| return { data, loading, setFlow: mutateAsync }; | |
| }; | |
| export const useDeleteFlow = () => { | |
| const queryClient = useQueryClient(); | |
| const { | |
| data, | |
| isPending: loading, | |
| mutateAsync, | |
| } = useMutation({ | |
| mutationKey: ['deleteFlow'], | |
| mutationFn: async (canvasIds: string[]) => { | |
| const { data } = await flowService.removeCanvas({ canvasIds }); | |
| if (data.retcode === 0) { | |
| queryClient.invalidateQueries({ queryKey: ['fetchFlowList'] }); | |
| } | |
| return data?.data ?? []; | |
| }, | |
| }); | |
| return { data, loading, deleteFlow: mutateAsync }; | |
| }; | |
| export const useRunFlow = () => { | |
| const { | |
| data, | |
| isPending: loading, | |
| mutateAsync, | |
| } = useMutation({ | |
| mutationKey: ['runFlow'], | |
| mutationFn: async (params: { id: string; dsl: DSL }) => { | |
| const { data } = await flowService.runCanvas(params); | |
| if (data.retcode === 0) { | |
| message.success(i18n.t(`message.modified`)); | |
| } | |
| return data?.data ?? {}; | |
| }, | |
| }); | |
| return { data, loading, runFlow: mutateAsync }; | |
| }; | |
| export const useResetFlow = () => { | |
| const { id } = useParams(); | |
| const { | |
| data, | |
| isPending: loading, | |
| mutateAsync, | |
| } = useMutation({ | |
| mutationKey: ['resetFlow'], | |
| mutationFn: async () => { | |
| const { data } = await flowService.resetCanvas({ id }); | |
| return data; | |
| }, | |
| }); | |
| return { data, loading, resetFlow: mutateAsync }; | |
| }; | |
| export const useTestDbConnect = () => { | |
| const { | |
| data, | |
| isPending: loading, | |
| mutateAsync, | |
| } = useMutation({ | |
| mutationKey: ['testDbConnect'], | |
| mutationFn: async (params: any) => { | |
| const ret = await flowService.testDbConnect(params); | |
| if (ret?.data?.retcode === 0) { | |
| message.success(ret?.data?.data); | |
| } else { | |
| message.error(ret?.data?.data); | |
| } | |
| return ret; | |
| }, | |
| }); | |
| return { data, loading, testDbConnect: mutateAsync }; | |
| }; | |