diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-23/1-23-workspace-command-1780000001500-backfill-record-page-layouts.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-23/1-23-workspace-command-1780000001500-backfill-record-page-layouts.command.ts index 2b9a15eb510..0573a96e8ec 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-23/1-23-workspace-command-1780000001500-backfill-record-page-layouts.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-23/1-23-workspace-command-1780000001500-backfill-record-page-layouts.command.ts @@ -245,6 +245,17 @@ export class BackfillRecordPageLayoutsCommand extends ActiveOrSuspendedWorkspace twentyStandardApplicationId: twentyStandardFlatApplication.id, }); + const { flatObjectMetadataMaps } = + await this.workspaceCacheService.getOrRecompute(workspaceId, [ + 'flatObjectMetadataMaps', + ]); + + const existingObjectMetadataUniversalIdentifiers = new Set( + Object.values(flatObjectMetadataMaps.byUniversalIdentifier) + .filter(isDefined) + .map((objectMetadata) => objectMetadata.universalIdentifier), + ); + const recordPageLayoutUniversalIdentifiers = new Set(); const pageLayouts = Object.values( @@ -256,6 +267,19 @@ export class BackfillRecordPageLayoutsCommand extends ActiveOrSuspendedWorkspace return false; } + if ( + isDefined(pageLayout.objectMetadataUniversalIdentifier) && + !existingObjectMetadataUniversalIdentifiers.has( + pageLayout.objectMetadataUniversalIdentifier, + ) + ) { + this.logger.log( + `Skipping standard record page layout ${pageLayout.universalIdentifier} for workspace ${workspaceId}: associated object ${pageLayout.objectMetadataUniversalIdentifier} does not exist`, + ); + + return false; + } + recordPageLayoutUniversalIdentifiers.add( pageLayout.universalIdentifier, ); @@ -300,6 +324,15 @@ export class BackfillRecordPageLayoutsCommand extends ActiveOrSuspendedWorkspace return false; } + if ( + isDefined(view.objectMetadataUniversalIdentifier) && + !existingObjectMetadataUniversalIdentifiers.has( + view.objectMetadataUniversalIdentifier, + ) + ) { + return false; + } + fieldsWidgetViewUniversalIdentifiers.add(view.universalIdentifier); return true;