Add MorphId column to MORPH_RELATION field metadata (#14285)

close https://github.com/twentyhq/core-team-issues/issues/1426
This commit is contained in:
Paul Rastoin
2025-09-03 18:33:17 +02:00
committed by GitHub
parent 11fd01eaa4
commit 4fa114b3ec
34 changed files with 2614 additions and 2545 deletions
@@ -4,6 +4,7 @@ import {
computeMorphRelationFieldJoinColumnName,
isDefined,
} from 'twenty-shared/utils';
import { v4 } from 'uuid';
import { type CreateFieldInput } from 'src/engine/metadata-modules/field-metadata/dtos/create-field.input';
import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception';
@@ -64,7 +65,7 @@ export const fromMorphRelationCreateFieldInputToFlatFieldMetadatas = async ({
const morphRelationCreationPayload =
morphRelationCreationPayloadValidation.result;
const morphId = v4();
const flatFieldMetadatas = morphRelationCreationPayload.flatMap(
({ relationCreationPayload, targetFlatObjectMetadata }) => {
const sourceFlatObjectMetadataJoinColumnName =
@@ -83,6 +84,7 @@ export const fromMorphRelationCreateFieldInputToFlatFieldMetadatas = async ({
sourceFlatObjectMetadata,
targetFlatObjectMetadata,
workspaceId,
morphId,
});
},
);
@@ -40,6 +40,7 @@ type GenerateMorphOrRelationFlatFieldMetadataPairArgs = {
Pick<CreateFieldInput, 'relationCreationPayload' | 'type' | 'name'>
> & { type: MorphOrRelationFieldMetadataType };
workspaceId: string;
morphId?: string | null;
};
export const generateMorphOrRelationFlatFieldMetadataPair = ({
createFieldInput,
@@ -47,6 +48,7 @@ export const generateMorphOrRelationFlatFieldMetadataPair = ({
targetFlatObjectMetadata,
workspaceId,
sourceFlatObjectMetadataJoinColumnName,
morphId = null,
}: GenerateMorphOrRelationFlatFieldMetadataPairArgs): FlatFieldMetadata<MorphOrRelationFieldMetadataType>[] => {
const { relationCreationPayload } = createFieldInput;
@@ -66,6 +68,7 @@ export const generateMorphOrRelationFlatFieldMetadataPair = ({
workspaceId,
fieldMetadataId: sourceRelationTargetFieldMetadataId,
}),
morphId,
objectMetadataId: sourceFlatObjectMetadata.id,
icon: createFieldInput.icon ?? 'IconRelationOneToMany',
type: createFieldInput.type,
@@ -54,5 +54,6 @@ export const getDefaultFlatFieldMetadata = ({
createdAt,
updatedAt: createdAt,
isUIReadOnly: createFieldInput.isUIReadOnly ?? false,
morphId: null,
} as const satisfies FlatFieldMetadata;
};