dify/web/service/knowledge/use-metadata.ts

95 lines
3.0 KiB
TypeScript
Raw Normal View History

2025-02-28 11:50:46 +08:00
import type { BuiltInMetadataItem, MetadataBatchEditToServer, MetadataItemWithValueLength } from '@/app/components/datasets/metadata/types'
2025-03-04 10:48:35 +08:00
import { del, get, patch, post } from '../base'
2025-02-21 14:57:48 +08:00
import { useMutation, useQuery } from '@tanstack/react-query'
2025-02-21 15:25:43 +08:00
import { useInvalid } from '../use-base'
2025-02-21 14:57:48 +08:00
const NAME_SPACE = 'dataset-metadata'
export const useDatasetMetaData = (datasetId: string) => {
2025-03-04 18:08:22 +08:00
return useQuery<{ doc_metadata: MetadataItemWithValueLength[], built_in_field_enabled: boolean }>({
2025-02-21 14:57:48 +08:00
queryKey: [NAME_SPACE, 'dataset', datasetId],
queryFn: () => {
2025-03-04 18:08:22 +08:00
return get<{ doc_metadata: MetadataItemWithValueLength[], built_in_field_enabled: boolean }>(`/datasets/${datasetId}/metadata`)
2025-02-21 14:57:48 +08:00
},
})
}
2025-02-21 15:25:43 +08:00
export const useInvalidDatasetMetaData = (datasetId: string) => {
return useInvalid([NAME_SPACE, 'dataset', datasetId])
}
2025-02-21 15:50:43 +08:00
export const useCreateMetaData = (datasetId: string) => {
const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId)
return useMutation({
mutationFn: async (payload: BuiltInMetadataItem) => {
2025-03-04 18:08:22 +08:00
await post(`/datasets/${datasetId}/metadata`, {
body: payload,
})
2025-02-21 15:50:43 +08:00
await invalidDatasetMetaData()
return Promise.resolve(true)
},
})
}
2025-02-21 16:07:34 +08:00
export const useRenameMeta = (datasetId: string) => {
const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId)
return useMutation({
mutationFn: async (payload: MetadataItemWithValueLength) => {
2025-03-04 10:48:35 +08:00
// datasetMetaData = datasetMetaData.map((item) => {
// if (item.id === payload.id)
// return payload
2025-02-21 16:07:34 +08:00
2025-03-04 10:48:35 +08:00
// return item
// })
await patch(`/datasets/${datasetId}/metadata/${payload.id}`, {
name: payload.name,
type: payload.type,
2025-02-21 16:07:34 +08:00
})
await invalidDatasetMetaData()
return Promise.resolve(true)
},
})
}
2025-02-21 15:25:43 +08:00
export const useDeleteMetaData = (datasetId: string) => {
const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId)
return useMutation({
mutationFn: async (metaDataId: string) => {
2025-03-04 10:48:35 +08:00
// datasetMetaData = datasetMetaData.filter(item => item.id !== metaDataId)
await del(`/datasets/${datasetId}/metadata/${metaDataId}`)
2025-02-21 15:25:43 +08:00
await invalidDatasetMetaData()
return Promise.resolve(true)
},
})
}
2025-02-28 14:10:05 +08:00
export const useBuiltInMetaDataFields = () => {
2025-02-21 14:57:48 +08:00
return useQuery<{ fields: BuiltInMetadataItem[] }>({
queryKey: [NAME_SPACE, 'built-in'],
queryFn: () => {
2025-03-04 18:08:22 +08:00
return get('/datasets/metadata/built-in')
2025-02-21 14:57:48 +08:00
},
})
}
2025-02-27 18:27:17 +08:00
export const useBatchUpdateDocMetadata = () => {
2025-02-27 18:01:53 +08:00
return useMutation({
2025-02-27 18:27:17 +08:00
mutationFn: (payload: {
2025-02-28 11:50:46 +08:00
dataset_id: string
metadata_list: MetadataBatchEditToServer
}) => {
// /console/api/datasets/{dataset_id}/documents/metadata
2025-03-04 10:48:35 +08:00
return post(`/datasets/${payload.dataset_id}/documents/metadata`, payload.metadata_list)
2025-02-27 18:01:53 +08:00
},
})
}
2025-02-21 14:57:48 +08:00
export const useUpdateBuiltInStatus = (datasetId: string) => {
return useMutation({
mutationFn: (enabled: boolean) => {
2025-03-04 18:08:22 +08:00
return post(`/datasets/${datasetId}/metadata/built-in/${enabled ? 'enable' : 'disable'}`)
2025-02-21 14:57:48 +08:00
},
})
}