From 182f9b12daf707294b91b0b88d2fff9a5fccbfb2 Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 26 Nov 2024 11:19:19 +0100 Subject: [PATCH] Fix labelIdentifierFieldMetadata creation for custom objects (#8729) --- .../object-metadata/object-metadata.exception.ts | 1 + .../object-metadata/object-metadata.service.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.exception.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.exception.ts index 2d489b132..fb8b1b5dc 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.exception.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.exception.ts @@ -12,4 +12,5 @@ export enum ObjectMetadataExceptionCode { INVALID_OBJECT_INPUT = 'INVALID_OBJECT_INPUT', OBJECT_MUTATION_NOT_ALLOWED = 'OBJECT_MUTATION_NOT_ALLOWED', OBJECT_ALREADY_EXISTS = 'OBJECT_ALREADY_EXISTS', + MISSING_CUSTOM_OBJECT_DEFAULT_LABEL_IDENTIFIER_FIELD = 'MISSING_CUSTOM_OBJECT_DEFAULT_LABEL_IDENTIFIER_FIELD', } diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts index bca0132d8..9a82a9515 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts @@ -31,6 +31,7 @@ import { SearchService } from 'src/engine/metadata-modules/search/search.service import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/services/workspace-metadata-version.service'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service'; +import { CUSTOM_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; import { isSearchableFieldType } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util'; import { ObjectMetadataEntity } from './object-metadata.entity'; @@ -118,6 +119,21 @@ export class ObjectMetadataService extends TypeOrmQueryService field.standardId === CUSTOM_OBJECT_STANDARD_FIELD_IDS.name, + ); + + if (!labelIdentifierFieldMetadata) { + throw new ObjectMetadataException( + 'Label identifier field metadata not created properly', + ObjectMetadataExceptionCode.MISSING_CUSTOM_OBJECT_DEFAULT_LABEL_IDENTIFIER_FIELD, + ); + } + + await this.objectMetadataRepository.update(createdObjectMetadata.id, { + labelIdentifierFieldMetadataId: labelIdentifierFieldMetadata.id, + }); + if (objectMetadataInput.isRemote) { await this.remoteTableRelationsService.createForeignKeysMetadataAndMigrations( objectMetadataInput.workspaceId,