From 09e48addb23bc983127846706dadd84d6c6f1fba Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Thu, 12 Feb 2026 15:59:33 +0100 Subject: [PATCH] Fix index field comparison (#17896) # Introduction Related https://github.com/twentyhq/core-team-issues/issues/2227 On a field name update side effect leading to an index field mutation it wouldn't get caught by the builder leading to an index field desync We should land on a standard pattern regarding the field index either jsonb or syncableEntity so this would not occur anymore as it would have been strictly typed --- ...properties-to-compare-and-stringify.constant.spec.ts.snap | 4 ++-- ...ity-properties-configuration-by-metadata-name.constant.ts | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap index 553930681e..c980e46811 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/__tests__/__snapshots__/all-universal-flat-entity-properties-to-compare-and-stringify.constant.spec.ts.snap @@ -66,12 +66,12 @@ exports[`ALL_UNIVERSAL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY should ma "propertiesToCompare": [ "indexType", "indexWhereClause", - "flatIndexFieldMetadatas", + "universalFlatIndexFieldMetadatas", "isUnique", "name", ], "propertiesToStringify": [ - "flatIndexFieldMetadatas", + "universalFlatIndexFieldMetadatas", ], }, "logicFunction": { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts index 428ee6a0b3..fa7b36a022 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-entity-properties-configuration-by-metadata-name.constant.ts @@ -33,7 +33,7 @@ type MetadataEntityPropertyConfiguration< ? `universal${Capitalize}` : K extends MetadataManyToOneJoinColumn & string ? ToUniversalForeignKey - : undefined; + : undefined | string; toStringify: K extends ExtractJsonbProperties> ? true : K extends keyof MetadataEntity @@ -67,7 +67,6 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = { nameSingular: { toStringify: false, universalProperty: undefined }, labelIdentifierFieldMetadataId: { toStringify: false, - // @ts-expect-error remove once https://github.com/twentyhq/core-team-issues/issues/2172 has been resolved universalProperty: 'labelIdentifierFieldMetadataUniversalIdentifier', }, standardOverrides: { toStringify: true, universalProperty: undefined }, @@ -135,7 +134,7 @@ export const ALL_ENTITY_PROPERTIES_CONFIGURATION_BY_METADATA_NAME = { indexWhereClause: { toStringify: false, universalProperty: undefined }, flatIndexFieldMetadatas: { toStringify: true, - universalProperty: undefined, + universalProperty: 'universalFlatIndexFieldMetadatas', }, isUnique: { toStringify: false, universalProperty: undefined }, name: { toStringify: false, universalProperty: undefined },