Rework relations (#3431)

* Rework relations

* Fix tests
This commit is contained in:
Charles Bochet
2024-01-15 12:07:23 +01:00
committed by GitHub
parent 8c96acc2a3
commit 16a24c5f0c
60 changed files with 392 additions and 463 deletions

View File

@ -46,6 +46,7 @@ export const FIND_MANY_OBJECT_METADATA_ITEMS = gql`
dataSourceId
nameSingular
namePlural
isSystem
}
toFieldMetadataId
}
@ -57,6 +58,7 @@ export const FIND_MANY_OBJECT_METADATA_ITEMS = gql`
dataSourceId
nameSingular
namePlural
isSystem
}
fromFieldMetadataId
}

View File

@ -54,6 +54,26 @@ export const useMapFieldMetadataToGraphQLQuery = () => {
)
.join('\n')}
}`;
} else if (
fieldType === 'RELATION' &&
field.toRelationMetadata?.relationType === 'ONE_TO_ONE'
) {
const relationMetadataItem = objectMetadataItems.find(
(objectMetadataItem) =>
objectMetadataItem.id ===
(field.toRelationMetadata as any)?.fromObjectMetadata?.id,
);
return `${field.name}
{
id
${(relationMetadataItem?.fields ?? [])
.filter((field) => field.type !== 'RELATION')
.map((field) =>
mapFieldMetadataToGraphQLQuery(field, maxDepthForRelations - 1),
)
.join('\n')}
}`;
} else if (
fieldType === 'RELATION' &&
field.fromRelationMetadata?.relationType === 'ONE_TO_MANY'

View File

@ -9,7 +9,7 @@ export type FieldMetadataItem = Omit<
| (Pick<Relation, 'id' | 'toFieldMetadataId' | 'relationType'> & {
toObjectMetadata: Pick<
Relation['toObjectMetadata'],
'id' | 'nameSingular' | 'namePlural'
'id' | 'nameSingular' | 'namePlural' | 'isSystem'
>;
})
| null;
@ -17,7 +17,7 @@ export type FieldMetadataItem = Omit<
| (Pick<Relation, 'id' | 'fromFieldMetadataId' | 'relationType'> & {
fromObjectMetadata: Pick<
Relation['fromObjectMetadata'],
'id' | 'nameSingular' | 'namePlural'
'id' | 'nameSingular' | 'namePlural' | 'isSystem'
>;
})
| null;

View File

@ -1,5 +0,0 @@
export enum StandardObjectNameSingular {
Company = 'company',
Person = 'person',
Opportunity = 'opportunity',
}

View File

@ -0,0 +1,11 @@
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
export const isObjectMetadataAvailableForRelation = (
objectMetadataItem: Pick<ObjectMetadataItem, 'isSystem' | 'nameSingular'>,
) => {
return (
!objectMetadataItem.isSystem ||
objectMetadataItem.nameSingular === CoreObjectNameSingular.WorkspaceMember
);
};

View File

@ -1,11 +0,0 @@
import { StandardObjectNameSingular } from '@/object-metadata/types/StandardObjectNameSingular';
export const isStandardObject = (objectNameSingular: string) => {
const standardObjectNames = [
StandardObjectNameSingular.Company,
StandardObjectNameSingular.Person,
StandardObjectNameSingular.Opportunity,
] as string[];
return standardObjectNames.includes(objectNameSingular);
};