import { useGetRelationMetadata } from '@/object-metadata/hooks/useGetRelationMetadata'; import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { getFieldIdentifierType } from '@/settings/data-model/utils/getFieldIdentifierType'; import { getSettingsFieldTypeConfig } from '@/settings/data-model/utils/getSettingsFieldTypeConfig'; import { SettingsObjectDetailTableItem } from '~/pages/settings/data-model/types/SettingsObjectDetailTableItem'; import { getSettingsObjectFieldType } from '~/pages/settings/data-model/utils/getSettingsObjectFieldType'; export const useMapFieldMetadataItemToSettingsObjectDetailTableItem = ( objectMetadataItem: ObjectMetadataItem, ) => { const getRelationMetadata = useGetRelationMetadata(); const mapFieldMetadataItemToSettingsObjectDetailTableItem = ( fieldMetadataItem: FieldMetadataItem, ): SettingsObjectDetailTableItem => { const fieldType = getSettingsObjectFieldType( objectMetadataItem, fieldMetadataItem, ); const { relationObjectMetadataItem } = getRelationMetadata({ fieldMetadataItem, }) ?? {}; const identifierType = getFieldIdentifierType( fieldMetadataItem, objectMetadataItem, ); return { fieldMetadataItem, fieldType: fieldType ?? '', dataType: relationObjectMetadataItem?.labelPlural ?? getSettingsFieldTypeConfig(fieldMetadataItem.type)?.label ?? '', label: fieldMetadataItem.label, identifierType: identifierType, objectMetadataItem, } satisfies SettingsObjectDetailTableItem; }; return { mapFieldMetadataItemToSettingsObjectDetailTableItem }; };