| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | 
                        - import type { BuiltInMetadataItem, MetadataBatchEditToServer, MetadataItemWithValueLength } from '@/app/components/datasets/metadata/types'
 - import { del, get, patch, post } from '../base'
 - import { useDocumentListKey, useInvalidDocumentList } from './use-document'
 - import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
 - import { useInvalid } from '../use-base'
 - import type { DocumentDetailResponse } from '@/models/datasets'
 - 
 - const NAME_SPACE = 'dataset-metadata'
 - 
 - export const useDatasetMetaData = (datasetId: string) => {
 -   return useQuery<{ doc_metadata: MetadataItemWithValueLength[], built_in_field_enabled: boolean }>({
 -     queryKey: [NAME_SPACE, 'dataset', datasetId],
 -     queryFn: () => {
 -       return get<{ doc_metadata: MetadataItemWithValueLength[], built_in_field_enabled: boolean }>(`/datasets/${datasetId}/metadata`)
 -     },
 -   })
 - }
 - 
 - export const useInvalidDatasetMetaData = (datasetId: string) => {
 -   return useInvalid([NAME_SPACE, 'dataset', datasetId])
 - }
 - 
 - export const useCreateMetaData = (datasetId: string) => {
 -   const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId)
 -   return useMutation({
 -     mutationFn: async (payload: BuiltInMetadataItem) => {
 -       await post(`/datasets/${datasetId}/metadata`, {
 -         body: payload,
 -       })
 -       await invalidDatasetMetaData()
 -       return Promise.resolve(true)
 -     },
 -   })
 - }
 - export const useInvalidAllDocumentMetaData = (datasetId: string) => {
 -   const queryClient = useQueryClient()
 -   return () => {
 -     queryClient.invalidateQueries({
 -       queryKey: [NAME_SPACE, 'document', datasetId],
 -       exact: false, // invalidate all document metadata: [NAME_SPACE, 'document', datasetId, documentId]
 -     })
 -   }
 - }
 - 
 - const useInvalidAllMetaData = (datasetId: string) => {
 -   const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId)
 -   const invalidDocumentList = useInvalidDocumentList(datasetId)
 -   const invalidateAllDocumentMetaData = useInvalidAllDocumentMetaData(datasetId)
 - 
 -   return async () => {
 -     // meta data in dataset
 -     await invalidDatasetMetaData()
 -     // meta data in document list
 -     invalidDocumentList()
 -     // meta data in single document
 -     await invalidateAllDocumentMetaData() // meta data in document
 -   }
 - }
 - 
 - export const useRenameMeta = (datasetId: string) => {
 -   const invalidateAllMetaData = useInvalidAllMetaData(datasetId)
 -   return useMutation({
 -     mutationFn: async (payload: MetadataItemWithValueLength) => {
 -       await patch(`/datasets/${datasetId}/metadata/${payload.id}`, {
 -         body: {
 -           name: payload.name,
 -         },
 -       })
 -       await invalidateAllMetaData()
 -     },
 -   })
 - }
 - 
 - export const useDeleteMetaData = (datasetId: string) => {
 -   const invalidateAllMetaData = useInvalidAllMetaData(datasetId)
 -   return useMutation({
 -     mutationFn: async (metaDataId: string) => {
 -       // datasetMetaData = datasetMetaData.filter(item => item.id !== metaDataId)
 -       await del(`/datasets/${datasetId}/metadata/${metaDataId}`)
 -       await invalidateAllMetaData()
 -     },
 -   })
 - }
 - 
 - export const useBuiltInMetaDataFields = () => {
 -   return useQuery<{ fields: BuiltInMetadataItem[] }>({
 -     queryKey: [NAME_SPACE, 'built-in'],
 -     queryFn: () => {
 -       return get('/datasets/metadata/built-in')
 -     },
 -   })
 - }
 - 
 - export const useDocumentMetaData = ({ datasetId, documentId }: { datasetId: string, documentId: string }) => {
 -   return useQuery<DocumentDetailResponse>({
 -     queryKey: [NAME_SPACE, 'document', datasetId, documentId],
 -     queryFn: () => {
 -       return get<DocumentDetailResponse>(`/datasets/${datasetId}/documents/${documentId}`, { params: { metadata: 'only' } })
 -     },
 -   })
 - }
 - 
 - export const useBatchUpdateDocMetadata = () => {
 -   const queryClient = useQueryClient()
 -   return useMutation({
 -     mutationFn: async (payload: {
 -       dataset_id: string
 -       metadata_list: MetadataBatchEditToServer
 -     }) => {
 -       const documentIds = payload.metadata_list.map(item => item.document_id)
 -       await post(`/datasets/${payload.dataset_id}/documents/metadata`, {
 -         body: {
 -           operation_data: payload.metadata_list,
 -         },
 -       })
 -       // meta data in dataset
 -       await queryClient.invalidateQueries({
 -         queryKey: [NAME_SPACE, 'dataset', payload.dataset_id],
 -       })
 -       // meta data in document list
 -       await queryClient.invalidateQueries({
 -         queryKey: [NAME_SPACE, 'dataset', payload.dataset_id],
 -       })
 -       await queryClient.invalidateQueries({
 -         queryKey: [...useDocumentListKey, payload.dataset_id],
 -       })
 - 
 -       // meta data in single document
 -       await Promise.all(documentIds.map(documentId => queryClient.invalidateQueries(
 -         {
 -           queryKey: [NAME_SPACE, 'document', payload.dataset_id, documentId],
 -         },
 -       )))
 -     },
 -   })
 - }
 - 
 - export const useUpdateBuiltInStatus = (datasetId: string) => {
 -   const invalidDatasetMetaData = useInvalidDatasetMetaData(datasetId)
 -   return useMutation({
 -     mutationFn: async (enabled: boolean) => {
 -       await post(`/datasets/${datasetId}/metadata/built-in/${enabled ? 'enable' : 'disable'}`)
 -       invalidDatasetMetaData()
 -     },
 -   })
 - }
 
 
  |