From 8abd5be4b5f174e02be5b35141c5490ddc51ee20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20M?= Date: Thu, 1 Feb 2024 14:25:50 +0100 Subject: [PATCH] fix: sync metadata shouldn't remove non custom fields (#3750) * fix: sync metadata shouldn't remove non custom fields * fix: filter out custom relations --- .../comparators/workspace-field.comparator.ts | 5 ++++- .../workspace-sync-object-metadata.service.ts | 6 +++++- .../workspace-sync-relation-metadata.service.ts | 12 +++++++++--- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/comparators/workspace-field.comparator.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/comparators/workspace-field.comparator.ts index 8febe3a6d..0cc2e222e 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/comparators/workspace-field.comparator.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/comparators/workspace-field.comparator.ts @@ -39,8 +39,11 @@ export class WorkspaceFieldComparator { string, Partial > = {}; + // Double security to only compare non-custom fields + const filteredOriginalFieldCollection = + originalObjectMetadata.fields.filter((field) => !field.isCustom); const originalFieldMetadataMap = transformMetadataForComparison( - originalObjectMetadata.fields, + filteredOriginalFieldCollection, { propertiesToIgnore: fieldPropertiesToIgnore, propertiesToStringify: fieldPropertiesToStringify, diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts index c268b72e5..d120ea42a 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts @@ -43,7 +43,11 @@ export class WorkspaceSyncObjectMetadataService { // Retrieve object metadata collection from DB const originalObjectMetadataCollection = await objectMetadataRepository.find({ - where: { workspaceId: context.workspaceId, isCustom: false }, + where: { + workspaceId: context.workspaceId, + isCustom: false, + fields: { isCustom: false }, + }, relations: ['dataSource', 'fields'], }); diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-relation-metadata.service.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-relation-metadata.service.ts index d4cd98003..29c55abc6 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-relation-metadata.service.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/services/workspace-sync-relation-metadata.service.ts @@ -44,7 +44,11 @@ export class WorkspaceSyncRelationMetadataService { // Retrieve object metadata collection from DB const originalObjectMetadataCollection = await objectMetadataRepository.find({ - where: { workspaceId: context.workspaceId, isCustom: false }, + where: { + workspaceId: context.workspaceId, + isCustom: false, + fields: { isCustom: false }, + }, relations: ['dataSource', 'fields'], }); @@ -58,10 +62,12 @@ export class WorkspaceSyncRelationMetadataService { ); // Retrieve relation metadata collection from DB - // TODO: filter out custom relations once isCustom has been added to relationMetadata table const originalRelationMetadataCollection = await relationMetadataRepository.find({ - where: { workspaceId: context.workspaceId }, + where: { + workspaceId: context.workspaceId, + fromFieldMetadata: { isCustom: false }, + }, }); // Create standard relation metadata collection