morph backend CORE api (#13517)
# Morph Relation needs some work on the core API Especially on the Morph types <img width="682" height="394" alt="Screenshot 2025-07-31 at 12 19 40" src="https://github.com/user-attachments/assets/8b185ae3-3fe7-4886-97b1-ec143bb1b0f4" /> ## Focus Areas: - GraphQL schema generation - Query parsing and field selection - Morph relation field support - Input type definition preparation
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
import { capitalize } from 'twenty-shared/utils';
|
||||
|
||||
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
|
||||
|
||||
import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity';
|
||||
|
||||
type ComputeMorphRelationFieldNameArgs = {
|
||||
fieldName: string;
|
||||
relationDirection: RelationType;
|
||||
targetObjectMetadata: Pick<
|
||||
ObjectMetadataEntity,
|
||||
'nameSingular' | 'namePlural'
|
||||
>;
|
||||
};
|
||||
|
||||
export const computeMorphRelationFieldName = ({
|
||||
fieldName,
|
||||
relationDirection,
|
||||
targetObjectMetadata,
|
||||
}: ComputeMorphRelationFieldNameArgs): string => {
|
||||
if (relationDirection === RelationType.MANY_TO_ONE) {
|
||||
return `${fieldName}${capitalize(targetObjectMetadata.nameSingular)}`;
|
||||
}
|
||||
|
||||
if (relationDirection === RelationType.ONE_TO_MANY) {
|
||||
return `${fieldName}${capitalize(targetObjectMetadata.namePlural)}`;
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Invalid relation direction: ${relationDirection} for field ${fieldName}`,
|
||||
);
|
||||
};
|
||||
+8
-1
@@ -20,7 +20,14 @@ export const generateObjectMetadataMaps = (
|
||||
|
||||
for (const fieldMetadata of objectMetadata.fields) {
|
||||
if (
|
||||
isFieldMetadataEntityOfType(fieldMetadata, FieldMetadataType.RELATION)
|
||||
isFieldMetadataEntityOfType(
|
||||
fieldMetadata,
|
||||
FieldMetadataType.RELATION,
|
||||
) ||
|
||||
isFieldMetadataEntityOfType(
|
||||
fieldMetadata,
|
||||
FieldMetadataType.MORPH_RELATION,
|
||||
)
|
||||
) {
|
||||
if (fieldMetadata.settings?.joinColumnName) {
|
||||
fieldIdByJoinColumnNameMap[fieldMetadata.settings.joinColumnName] =
|
||||
|
||||
Reference in New Issue
Block a user