From 2c7a45963420a8fe58925ae468824cdaf0ec6042 Mon Sep 17 00:00:00 2001 From: Naifer <161821705+omarNaifer12@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:06:27 +0100 Subject: [PATCH] Fix: unexpected behavior when deleting Option A and renaming Option B with Option A's value. (#13204) resolve #12345 The issue was caused by the delete running after the update, which led to both the old and new options being deleted when they shared the same value. --------- Co-authored-by: Marie Stoppa --- .../field-metadata-related-records.service.ts | 12 +++++------- .../services/workspace-migration-enum.service.ts | 8 +++++++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts index a7c47e395..680fca7a0 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts @@ -71,7 +71,12 @@ export class FieldMetadataRelatedRecordsService { if (view.viewGroups.length === 0) { continue; } + const valuesToDelete = deleted.map((option) => option.value); + await viewGroupRepository.delete({ + fieldMetadataId: newFieldMetadata.id, + fieldValue: In(valuesToDelete), + }); const maxPosition = this.getMaxPosition(view.viewGroups); const viewGroupsToCreate = created.map((option, index) => @@ -103,13 +108,6 @@ export class FieldMetadataRelatedRecordsService { ); } - const valuesToDelete = deleted.map((option) => option.value); - - await viewGroupRepository.delete({ - fieldMetadataId: newFieldMetadata.id, - fieldValue: In(valuesToDelete), - }); - await this.syncNoValueViewGroup( newFieldMetadata, view, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts index 2e1aaa5c4..a5a5b85e2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts @@ -139,7 +139,13 @@ export class WorkspaceMigrationEnumService { } if (allEnumValues?.includes(value)) { - return value; + const isDestinationOfRename = renamedEnumValues?.some( + (enumVal) => enumVal.to === value, + ); + + if (!isDestinationOfRename) { + return value; + } } if (isDefined(defaultValueFallback)) {