import { MetadataFieldDataType } from '@/settings/data-model/types/ObjectFieldDataType'; import { Field } from '~/generated/graphql'; import { formatFieldMetadataItemInput } from '../utils/formatFieldMetadataItemInput'; import { useCreateOneFieldMetadataItem } from './useCreateOneFieldMetadataItem'; import { useDeleteOneFieldMetadataItem } from './useDeleteOneFieldMetadataItem'; import { useUpdateOneFieldMetadataItem } from './useUpdateOneFieldMetadataItem'; export const useFieldMetadataItem = () => { const { createOneFieldMetadataItem } = useCreateOneFieldMetadataItem(); const { updateOneFieldMetadataItem } = useUpdateOneFieldMetadataItem(); const { deleteOneFieldMetadataItem } = useDeleteOneFieldMetadataItem(); const createMetadataField = ( input: Pick & { objectMetadataId: string; type: MetadataFieldDataType; }, ) => createOneFieldMetadataItem({ ...formatFieldMetadataItemInput(input), objectMetadataId: input.objectMetadataId, type: input.type, }); const editMetadataField = ( input: Pick, ) => updateOneFieldMetadataItem({ fieldMetadataIdToUpdate: input.id, updatePayload: formatFieldMetadataItemInput(input), }); const activateMetadataField = (metadataField: Field) => updateOneFieldMetadataItem({ fieldMetadataIdToUpdate: metadataField.id, updatePayload: { isActive: true }, }); const disableMetadataField = (metadataField: Field) => updateOneFieldMetadataItem({ fieldMetadataIdToUpdate: metadataField.id, updatePayload: { isActive: false }, }); const eraseMetadataField = (metadataField: Field) => deleteOneFieldMetadataItem(metadataField.id); return { activateMetadataField, createMetadataField, disableMetadataField, eraseMetadataField, editMetadataField, }; };