import { getUserId } from '@/utils'; import { HEADER_USER_ID_KEY } from '@/utils/constants/index'; import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'; export type ResponseType = { data: T; err_code: string | null; err_msg: string | null; success: boolean; }; export type ApiResponse = AxiosResponse, D>; export type SuccessTuple = [null, T, ResponseType, ApiResponse]; export type FailedTuple = [Error | AxiosError, null, null, null]; const ins = axios.create({ baseURL: process.env.API_BASE_URL ?? '', }); const LONG_TIME_API: string[] = [ '/db/add', '/db/test/connect', '/db/summary', '/params/file/load', '/chat/prepare', '/model/start', '/model/stop', '/editor/sql/run', '/sql/editor/submit', '/editor/chart/run', '/chart/editor/submit', '/document/upload', '/document/sync', '/agent/install', '/agent/uninstall', '/personal/agent/upload', ]; ins.interceptors.request.use(request => { const isLongTimeApi = LONG_TIME_API.some(item => request.url && request.url.indexOf(item) >= 0); if (!request.timeout) { request.timeout = isLongTimeApi ? 60000 : 100000; } request.headers.set(HEADER_USER_ID_KEY, getUserId()); return request; }); export const GET = ( url: string, params?: Params, config?: AxiosRequestConfig, ) => { return ins.get>(url, { params, ...config }); }; export const POST = (url: string, data?: Data, config?: AxiosRequestConfig) => { return ins.post>(url, data, config); }; export const PATCH = ( url: string, data?: Data, config?: AxiosRequestConfig, ) => { return ins.patch>(url, data, config); }; export const PUT = (url: string, data?: Data, config?: AxiosRequestConfig) => { return ins.put>(url, data, config); }; export const DELETE = ( url: string, params?: Params, config?: AxiosRequestConfig, ) => { return ins.delete>(url, { params, ...config }); }; export * from './app'; export * from './chat'; export * from './evaluate'; export * from './flow'; export * from './knowledge'; export * from './prompt'; export * from './request'; export * from './tools'; export * from './user';