Context : - IndexFieldMetadata was no longer available on 'objects' gql query ([since this PR](https://github.com/twentyhq/twenty/pull/12785)). Then, unicity checks on import do not work anymore. Fix : - Add a dataloader logic in indexFieldMetadata - Add extra check in unicity hook on import
43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
import { IndexFieldMetadataItem } from '@/object-metadata/types/IndexFieldMetadataItem';
|
|
import { IndexMetadataItem } from '@/object-metadata/types/IndexMetadataItem';
|
|
import { objectMetadataItemSchema } from '@/object-metadata/validation-schemas/objectMetadataItemSchema';
|
|
import { ObjectMetadataItemsQuery } from '~/generated-metadata/graphql';
|
|
import { ObjectMetadataItem } from '../types/ObjectMetadataItem';
|
|
|
|
export const mapPaginatedObjectMetadataItemsToObjectMetadataItems = ({
|
|
pagedObjectMetadataItems,
|
|
}: {
|
|
pagedObjectMetadataItems: ObjectMetadataItemsQuery | undefined;
|
|
}) => {
|
|
const formattedObjects: ObjectMetadataItem[] =
|
|
pagedObjectMetadataItems?.objects.edges.map((object) => {
|
|
const labelIdentifierFieldMetadataId =
|
|
objectMetadataItemSchema.shape.labelIdentifierFieldMetadataId.parse(
|
|
object.node.labelIdentifierFieldMetadataId,
|
|
);
|
|
|
|
const { fieldsList, indexMetadataList, ...objectWithoutFieldsList } =
|
|
object.node;
|
|
|
|
return {
|
|
...objectWithoutFieldsList,
|
|
fields: fieldsList,
|
|
labelIdentifierFieldMetadataId,
|
|
indexMetadatas: indexMetadataList.map(
|
|
(index) =>
|
|
({
|
|
...index,
|
|
indexFieldMetadatas: index.indexFieldMetadataList.map(
|
|
(indexFieldMetadata) =>
|
|
({
|
|
...indexFieldMetadata,
|
|
}) satisfies IndexFieldMetadataItem,
|
|
),
|
|
}) satisfies IndexMetadataItem,
|
|
),
|
|
} satisfies ObjectMetadataItem;
|
|
}) ?? [];
|
|
|
|
return formattedObjects;
|
|
};
|