import { get, post } from './base' import type { DataSourceNotion, FileUploadConfigResponse, Member, StructuredOutputRulesRequestBody, StructuredOutputRulesResponse, } from '@/models/common' import { useMutation, useQuery } from '@tanstack/react-query' import type { FileTypesRes } from './datasets' const NAME_SPACE = 'common' export const useFileUploadConfig = () => { return useQuery({ queryKey: [NAME_SPACE, 'file-upload-config'], queryFn: () => get('/files/upload'), }) } export const useGenerateStructuredOutputRules = () => { return useMutation({ mutationKey: [NAME_SPACE, 'generate-structured-output-rules'], mutationFn: (body: StructuredOutputRulesRequestBody) => { return post( '/rule-structured-output-generate', { body }, ) }, }) } export const useFileSupportTypes = () => { return useQuery({ queryKey: [NAME_SPACE, 'file-types'], queryFn: () => get('/files/support-type'), }) } type DataSourcesResponse = { data: DataSourceNotion[] } export const useDataSources = () => { return useQuery({ queryKey: [NAME_SPACE, 'data-sources'], queryFn: () => get('/data-source/integrates'), }) } type MemberResponse = { accounts: Member[] | null } export const useMembers = () => { return useQuery({ queryKey: [NAME_SPACE, 'members'], queryFn: (params: Record) => get('/workspaces/current/members', { params, }), }) } type FilePreviewResponse = { content: string } export const useFilePreview = (fileID: string) => { return useQuery({ queryKey: [NAME_SPACE, 'file-preview', fileID], queryFn: () => get(`/files/${fileID}/preview`), enabled: !!fileID, }) }