diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-20/1-20-backfill-page-layouts.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-20/1-20-backfill-page-layouts.command.ts index 16c5a0592b..edc692a6a9 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-20/1-20-backfill-page-layouts.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-20/1-20-backfill-page-layouts.command.ts @@ -135,6 +135,16 @@ export class BackfillPageLayoutsCommand extends ActiveOrSuspendedWorkspacesMigra tabUniversalIdentifiers.has(widget.pageLayoutTabUniversalIdentifier), ); + const { + flatViewMaps: existingFlatViewMaps, + flatViewFieldMaps: existingFlatViewFieldMaps, + flatViewFieldGroupMaps: existingFlatViewFieldGroupMaps, + } = await this.workspaceCacheService.getOrRecompute(workspaceId, [ + 'flatViewMaps', + 'flatViewFieldMaps', + 'flatViewFieldGroupMaps', + ]); + const viewUniversalIdentifiers = new Set(); const viewsToCreate = Object.values( @@ -146,6 +156,16 @@ export class BackfillPageLayoutsCommand extends ActiveOrSuspendedWorkspacesMigra return false; } + if ( + isDefined( + existingFlatViewMaps.byUniversalIdentifier[ + view.universalIdentifier + ], + ) + ) { + return false; + } + viewUniversalIdentifiers.add(view.universalIdentifier); return true; @@ -155,16 +175,30 @@ export class BackfillPageLayoutsCommand extends ActiveOrSuspendedWorkspacesMigra standardAllFlatEntityMaps.flatViewFieldMaps.byUniversalIdentifier, ) .filter(isDefined) - .filter((viewField) => - viewUniversalIdentifiers.has(viewField.viewUniversalIdentifier), + .filter( + (viewField) => + viewUniversalIdentifiers.has(viewField.viewUniversalIdentifier) && + !isDefined( + existingFlatViewFieldMaps.byUniversalIdentifier[ + viewField.universalIdentifier + ], + ), ); const viewFieldGroupsToCreate = Object.values( standardAllFlatEntityMaps.flatViewFieldGroupMaps.byUniversalIdentifier, ) .filter(isDefined) - .filter((viewFieldGroup) => - viewUniversalIdentifiers.has(viewFieldGroup.viewUniversalIdentifier), + .filter( + (viewFieldGroup) => + viewUniversalIdentifiers.has( + viewFieldGroup.viewUniversalIdentifier, + ) && + !isDefined( + existingFlatViewFieldGroupMaps.byUniversalIdentifier[ + viewFieldGroup.universalIdentifier + ], + ), ); const validateAndBuildResult =