From 5fb7e76005911b3303778e2967a43c524e630631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Bosi?= <71827178+bosiraphael@users.noreply.github.com> Date: Mon, 8 Dec 2025 15:11:24 +0100 Subject: [PATCH] Migrate page layout to v2 (#16364) --- .../hooks/useMetadataErrorHandler.ts | 3 +- ...ge-layout-universal-identifiers.command.ts | 66 +++++++-- .../1-13-upgrade-version-command.module.ts | 2 + ...onIdAndUniversalIdentifierToPageLayouts.ts | 37 +++++ ...rties-to-compare-and-stringify.constant.ts | 5 + ...metadata-many-to-one-relations.constant.ts | 15 +- ...quired-metadata-for-validation.constant.ts | 9 +- ...ny-or-all-flat-entity-maps-cache.module.ts | 10 ++ .../all-flat-entity-types-by-metadata-name.ts | 16 ++ .../flat-page-layout-tab.module.ts | 3 +- ...-flat-page-layout-tab-map-cache.service.ts | 37 ++++- .../types/flat-page-layout-tab.type.ts | 4 +- ...tab-entity-to-flat-page-layout-tab.util.ts | 1 + ...age-layout-editable-properties.constant.ts | 7 + .../flat-page-layout.module.ts | 12 ++ ...pace-flat-page-layout-map-cache.service.ts | 66 +++++++++ .../types/flat-page-layout-maps.type.ts | 4 + .../types/flat-page-layout.type.ts | 19 +++ ...-layout-entity-to-flat-page-layout.util.ts | 21 +++ .../entities/page-layout.entity.ts | 11 +- .../__tests__/page-layout-tab.service.spec.ts | 18 +-- .../page-layout-update.service.spec.ts | 3 + .../page-layout-widget.service.spec.ts | 47 ++++-- .../__tests__/page-layout.service.spec.ts | 21 +++ .../services/page-layout-tab.service.ts | 12 +- .../services/page-layout-widget.service.ts | 46 +++--- .../services/page-layout.service.ts | 11 ++ .../types/workspace-cache-key.type.ts | 1 + .../utils/get-page-layout-data-seeds.util.ts | 11 ++ .../core/utils/seed-page-layouts.util.ts | 5 +- .../dev-seeder/services/dev-seeder.service.ts | 7 +- ...plication-all-flat-entity-maps.constant.ts | 5 + ...metadata-validation-response-error.util.ts | 1 + ...ce-migration-build-orchestrator.service.ts | 93 +++++++++++- ...ce-migration-page-layout-action-v2.type.ts | 18 +++ ...-v2-page-layout-actions-builder.service.ts | 105 +++++++++++++ .../flat-page-layout-validator.service.ts | 104 +++++++++++++ ...ace-migration-builder-validators.module.ts | 3 + .../workspace-migration-builder-v2.module.ts | 3 + ...eate-page-layout-action-handler.service.ts | 59 ++++++++ ...lete-page-layout-action-handler.service.ts | 58 ++++++++ ...date-page-layout-action-handler.service.ts | 71 +++++++++ ...migration-runner-action-handlers.module.ts | 7 + ...ny-view-fields-v2.integration-spec.ts.snap | 2 + ...ate-view-field-v2.integration-spec.ts.snap | 6 + ...ect-on-view-field.integration-spec.ts.snap | 10 ++ ...ng-agent-creation.integration-spec.ts.snap | 14 ++ ...ng-agent-deletion.integration-spec.ts.snap | 2 + ...ling-agent-update.integration-spec.ts.snap | 18 +++ ...ne-field-metadata.integration-spec.ts.snap | 2 + ...ne-field-metadata.integration-spec.ts.snap | 6 + ...ne-field-metadata.integration-spec.ts.snap | 4 + ...-metadata-enum-v2.integration-spec.ts.snap | 140 ++++++++++++++++++ ...field-metadata-v2.integration-spec.ts.snap | 136 +++++++++++++++++ ...morph-relation-v2.integration-spec.ts.snap | 4 + ...morph-relation-v2.integration-spec.ts.snap | 34 +++++ ...relation-creation.integration-spec.ts.snap | 48 ++++++ ...a-relation-update.integration-spec.ts.snap | 2 + ...ue-field-metadata.integration-spec.ts.snap | 4 + ...bject-metadata-v2.integration-spec.ts.snap | 34 +++++ ...e-object-metadata.integration-spec.ts.snap | 8 + ...ing-role-creation.integration-spec.ts.snap | 10 ++ ...iling-role-update.integration-spec.ts.snap | 14 ++ .../view-group.integration-spec.ts.snap | 2 + .../metadata/all-metadata-name.constant.ts | 1 + 65 files changed, 1474 insertions(+), 84 deletions(-) create mode 100644 packages/twenty-server/src/database/typeorm/core/migrations/common/1765200057592-addApplicationIdAndUniversalIdentifierToPageLayouts.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout/constants/flat-page-layout-editable-properties.constant.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout/flat-page-layout.module.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout-maps.type.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout/utils/transform-page-layout-entity-to-flat-page-layout.util.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts diff --git a/packages/twenty-front/src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts b/packages/twenty-front/src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts index aa01e7c849..09c8bca06d 100644 --- a/packages/twenty-front/src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts +++ b/packages/twenty-front/src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts @@ -26,8 +26,9 @@ export const useMetadataErrorHandler = () => { role: t`role`, roleTarget: t`role target`, agent: t`agent`, - pageLayoutWidget: t`page layout widget`, + pageLayout: t`page layout`, pageLayoutTab: t`page layout tab`, + pageLayoutWidget: t`page layout widget`, } as const satisfies Record; const handleMetadataError = useCallback( diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-backfill-page-layout-universal-identifiers.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-backfill-page-layout-universal-identifiers.command.ts index fe8150a7da..1b5b865d18 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-backfill-page-layout-universal-identifiers.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-backfill-page-layout-universal-identifiers.command.ts @@ -11,13 +11,14 @@ import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.ent import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; @Command({ name: 'upgrade:1-13:backfill-page-layout-universal-identifiers', description: - 'Backfill universalIdentifier and applicationId for pageLayoutWidget and pageLayoutTab', + 'Backfill universalIdentifier and applicationId for pageLayout, pageLayoutTab and pageLayoutWidget', }) export class BackfillPageLayoutUniversalIdentifiersCommand extends ActiveOrSuspendedWorkspacesMigrationCommandRunner { constructor( @@ -27,6 +28,8 @@ export class BackfillPageLayoutUniversalIdentifiersCommand extends ActiveOrSuspe private readonly pageLayoutWidgetRepository: Repository, @InjectRepository(PageLayoutTabEntity) private readonly pageLayoutTabRepository: Repository, + @InjectRepository(PageLayoutEntity) + private readonly pageLayoutRepository: Repository, protected readonly twentyORMGlobalManager: TwentyORMGlobalManager, protected readonly dataSourceService: DataSourceService, private readonly applicationService: ApplicationService, @@ -52,7 +55,7 @@ export class BackfillPageLayoutUniversalIdentifiersCommand extends ActiveOrSuspe const applicationId = workspaceCustomFlatApplication.id; - const widgetsToUpdate = await this.pageLayoutWidgetRepository.find({ + const pageLayoutsToUpdate = await this.pageLayoutRepository.find({ where: [ { workspaceId, universalIdentifier: IsNull() }, { workspaceId, applicationId: IsNull() }, @@ -61,29 +64,29 @@ export class BackfillPageLayoutUniversalIdentifiersCommand extends ActiveOrSuspe }); this.logger.log( - `Found ${widgetsToUpdate.length} pageLayoutWidget records to backfill`, + `Found ${pageLayoutsToUpdate.length} pageLayout records to backfill`, ); - for (const widget of widgetsToUpdate) { + for (const pageLayout of pageLayoutsToUpdate) { const universalIdentifier = v4(); if (options.dryRun) { this.logger.log( - `[DRY RUN] Would update pageLayoutWidget ${widget.id} with universalIdentifier ${universalIdentifier} and applicationId ${applicationId}`, + `[DRY RUN] Would update pageLayout ${pageLayout.id} with universalIdentifier ${universalIdentifier} and applicationId ${applicationId}`, ); } else { - await this.pageLayoutWidgetRepository.update( - { id: widget.id }, + await this.pageLayoutRepository.update( + { id: pageLayout.id }, { universalIdentifier, applicationId, }, ); - - this.logger.log( - `Updated pageLayoutWidget ${widget.id} with universalIdentifier ${universalIdentifier}`, - ); } + + this.logger.log( + `Updated pageLayout ${pageLayout.id} with universalIdentifier ${universalIdentifier}`, + ); } const tabsToUpdate = await this.pageLayoutTabRepository.find({ @@ -120,19 +123,56 @@ export class BackfillPageLayoutUniversalIdentifiersCommand extends ActiveOrSuspe } } + const widgetsToUpdate = await this.pageLayoutWidgetRepository.find({ + where: [ + { workspaceId, universalIdentifier: IsNull() }, + { workspaceId, applicationId: IsNull() }, + ], + select: ['id', 'workspaceId'], + }); + this.logger.log( - `${options.dryRun ? '[DRY RUN] Would have ' : ''}Successfully backfilled ${widgetsToUpdate.length} widgets and ${tabsToUpdate.length} tabs`, + `Found ${widgetsToUpdate.length} pageLayoutWidget records to backfill`, + ); + + for (const widget of widgetsToUpdate) { + const universalIdentifier = v4(); + + if (options.dryRun) { + this.logger.log( + `[DRY RUN] Would update pageLayoutWidget ${widget.id} with universalIdentifier ${universalIdentifier} and applicationId ${applicationId}`, + ); + } else { + await this.pageLayoutWidgetRepository.update( + { id: widget.id }, + { + universalIdentifier, + applicationId, + }, + ); + + this.logger.log( + `Updated pageLayoutWidget ${widget.id} with universalIdentifier ${universalIdentifier}`, + ); + } + } + + this.logger.log( + `${options.dryRun ? '[DRY RUN] Would have ' : ''}Successfully backfilled ${pageLayoutsToUpdate.length} pageLayouts, ${tabsToUpdate.length} pageLayoutTabs and ${widgetsToUpdate.length} pageLayoutWidgets`, ); if ( !options.dryRun && - (tabsToUpdate.length > 0 || widgetsToUpdate.length > 0) + (pageLayoutsToUpdate.length > 0 || + tabsToUpdate.length > 0 || + widgetsToUpdate.length > 0) ) { this.logger.log( `Invalidating and recomputing cache for workspace ${workspaceId}`, ); await this.workspaceCacheService.invalidateAndRecompute(workspaceId, [ + 'flatPageLayoutMaps', 'flatPageLayoutTabMaps', 'flatPageLayoutWidgetMaps', ]); diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-upgrade-version-command.module.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-upgrade-version-command.module.ts index f0838b25c3..ca30e18f5d 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-upgrade-version-command.module.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-upgrade-version-command.module.ts @@ -14,6 +14,7 @@ import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @@ -29,6 +30,7 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache ViewGroupEntity, FeatureFlagEntity, RoleTargetEntity, + PageLayoutEntity, PageLayoutWidgetEntity, PageLayoutTabEntity, ]), diff --git a/packages/twenty-server/src/database/typeorm/core/migrations/common/1765200057592-addApplicationIdAndUniversalIdentifierToPageLayouts.ts b/packages/twenty-server/src/database/typeorm/core/migrations/common/1765200057592-addApplicationIdAndUniversalIdentifierToPageLayouts.ts new file mode 100644 index 0000000000..b9767ec7da --- /dev/null +++ b/packages/twenty-server/src/database/typeorm/core/migrations/common/1765200057592-addApplicationIdAndUniversalIdentifierToPageLayouts.ts @@ -0,0 +1,37 @@ +import { type MigrationInterface, type QueryRunner } from 'typeorm'; + +export class AddApplicationIdAndUniversalIdentifierToPageLayouts1765200057592 + implements MigrationInterface +{ + name = 'AddApplicationIdAndUniversalIdentifierToPageLayouts1765200057592'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "core"."pageLayout" ADD "universalIdentifier" uuid`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayout" ADD "applicationId" uuid`, + ); + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_256fabec226411154baba649df" ON "core"."pageLayout" ("workspaceId", "universalIdentifier") `, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayout" ADD CONSTRAINT "FK_5e7f19b88c0864db19e2bad0fc5" FOREIGN KEY ("applicationId") REFERENCES "core"."application"("id") ON DELETE CASCADE ON UPDATE NO ACTION`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "core"."pageLayout" DROP CONSTRAINT "FK_5e7f19b88c0864db19e2bad0fc5"`, + ); + await queryRunner.query( + `DROP INDEX "core"."IDX_256fabec226411154baba649df"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayout" DROP COLUMN "applicationId"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayout" DROP COLUMN "universalIdentifier"`, + ); + } +} diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-flat-entity-properties-to-compare-and-stringify.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-flat-entity-properties-to-compare-and-stringify.constant.ts index 4549aba614..1ecaf4668f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-flat-entity-properties-to-compare-and-stringify.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-flat-entity-properties-to-compare-and-stringify.constant.ts @@ -5,6 +5,7 @@ import { FLAT_DATABASE_EVENT_TRIGGER_EDITABLE_PROPERTIES } from 'src/engine/meta import { FLAT_AGENT_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-agent/constants/flat-agent-editable-properties.constant'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; import { FLAT_FIELD_METADATA_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-field-metadata/constants/flat-field-metadata-editable-properties.constant'; +import { FLAT_PAGE_LAYOUT_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout/constants/flat-page-layout-editable-properties.constant'; import { FLAT_OBJECT_METADATA_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-object-metadata/constants/flat-object-metadata-editable-properties.constant'; import { FLAT_PAGE_LAYOUT_TAB_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout-tab/constants/flat-page-layout-tab-editable-properties.constant'; import { FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-editable-properties.constant'; @@ -113,6 +114,10 @@ export const ALL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY = { 'evaluationInputs', ], }, + pageLayout: { + propertiesToCompare: [...FLAT_PAGE_LAYOUT_EDITABLE_PROPERTIES], + propertiesToStringify: [], + }, pageLayoutWidget: { propertiesToCompare: [ ...FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-many-to-one-relations.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-many-to-one-relations.constant.ts index 40afeaba26..af5956352d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-many-to-one-relations.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-many-to-one-relations.constant.ts @@ -109,6 +109,17 @@ export const ALL_METADATA_RELATED_METADATA_BY_FOREIGN_KEY = { }, }, agent: {}, - pageLayoutWidget: {}, - pageLayoutTab: {}, + pageLayout: {}, + pageLayoutWidget: { + pageLayoutTabId: { + metadataName: 'pageLayoutTab', + flatEntityForeignKeyAggregator: 'widgetIds', + }, + }, + pageLayoutTab: { + pageLayoutId: { + metadataName: 'pageLayout', + flatEntityForeignKeyAggregator: 'tabIds', + }, + }, } as const satisfies MetadataNameAndRelations; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-required-metadata-for-validation.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-required-metadata-for-validation.constant.ts index 5322172b90..aa08a4140c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-required-metadata-for-validation.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-required-metadata-for-validation.constant.ts @@ -54,6 +54,11 @@ export const ALL_METADATA_REQUIRED_METADATA_FOR_VALIDATION = { role: true, }, agent: {}, - pageLayoutWidget: {}, - pageLayoutTab: {}, + pageLayout: {}, + pageLayoutTab: { + pageLayout: true, + }, + pageLayoutWidget: { + pageLayoutTab: true, + }, } as const satisfies MetadataRequiredForValidation; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts index 8fa6560492..a7cdfa4193 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts @@ -6,7 +6,9 @@ import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadat import { WorkspaceFlatFieldMetadataMapCacheService } from 'src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service'; import { WorkspaceFlatIndexMapCacheService } from 'src/engine/metadata-modules/flat-index-metadata/services/workspace-flat-index-map-cache.service'; import { WorkspaceFlatObjectMetadataMapCacheService } from 'src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service'; +import { WorkspaceFlatPageLayoutTabMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service'; import { WorkspaceFlatPageLayoutWidgetMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service'; +import { WorkspaceFlatPageLayoutMapCacheService } from 'src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service'; import { WorkspaceFlatViewFieldMapCacheService } from 'src/engine/metadata-modules/flat-view-field/services/workspace-flat-view-field-map-cache.service'; import { WorkspaceFlatViewFilterMapCacheService } from 'src/engine/metadata-modules/flat-view-filter/services/workspace-flat-view-filter-map-cache.service'; import { WorkspaceFlatViewGroupMapCacheService } from 'src/engine/metadata-modules/flat-view-group/services/workspace-flat-view-group-map-cache.service'; @@ -14,7 +16,9 @@ import { WorkspaceFlatViewMapCacheService } from 'src/engine/metadata-modules/fl import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; @@ -33,6 +37,8 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache IndexFieldMetadataEntity, FieldMetadataEntity, ObjectMetadataEntity, + PageLayoutEntity, + PageLayoutTabEntity, PageLayoutWidgetEntity, ]), ], @@ -45,6 +51,8 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache WorkspaceFlatIndexMapCacheService, WorkspaceFlatFieldMetadataMapCacheService, WorkspaceFlatViewGroupMapCacheService, + WorkspaceFlatPageLayoutMapCacheService, + WorkspaceFlatPageLayoutTabMapCacheService, WorkspaceFlatPageLayoutWidgetMapCacheService, ], exports: [ @@ -56,6 +64,8 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache WorkspaceFlatIndexMapCacheService, WorkspaceFlatFieldMetadataMapCacheService, WorkspaceFlatViewGroupMapCacheService, + WorkspaceFlatPageLayoutMapCacheService, + WorkspaceFlatPageLayoutTabMapCacheService, WorkspaceFlatPageLayoutWidgetMapCacheService, ], }) diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts index 6565132f78..ded0fa71bd 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts @@ -8,6 +8,7 @@ import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/fla import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; +import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type'; import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type'; import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type'; @@ -18,6 +19,7 @@ import { type FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/ import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { type RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; @@ -59,6 +61,11 @@ import { type DeleteObjectAction, type UpdateObjectAction, } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +import { + type CreatePageLayoutAction, + type DeletePageLayoutAction, + type UpdatePageLayoutAction, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; import { type CreatePageLayoutTabAction, type DeletePageLayoutTabAction, @@ -237,6 +244,15 @@ export type AllFlatEntityTypesByMetadataName = { flatEntity: FlatAgent; entity: AgentEntity; }; + pageLayout: { + actions: { + created: CreatePageLayoutAction; + updated: UpdatePageLayoutAction; + deleted: DeletePageLayoutAction; + }; + flatEntity: FlatPageLayout; + entity: PageLayoutEntity; + }; pageLayoutWidget: { actions: { created: CreatePageLayoutWidgetAction; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts index 21e6472ea3..bc85144dd4 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts @@ -4,10 +4,11 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { WorkspaceFlatPageLayoutTabMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; @Module({ imports: [ - TypeOrmModule.forFeature([PageLayoutTabEntity]), + TypeOrmModule.forFeature([PageLayoutTabEntity, PageLayoutWidgetEntity]), WorkspaceManyOrAllFlatEntityMapsCacheModule, ], providers: [WorkspaceFlatPageLayoutTabMapCacheService], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts index 194a5f4e5c..5c1af29ecc 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts @@ -9,7 +9,9 @@ import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-enti import { type FlatPageLayoutTabMaps } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type'; import { transformPageLayoutTabEntityToFlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; +import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @@ -18,21 +20,44 @@ export class WorkspaceFlatPageLayoutTabMapCacheService extends WorkspaceCachePro constructor( @InjectRepository(PageLayoutTabEntity) private readonly pageLayoutTabRepository: Repository, + @InjectRepository(PageLayoutWidgetEntity) + private readonly pageLayoutWidgetRepository: Repository, ) { super(); } async computeForCache(workspaceId: string): Promise { - const pageLayoutTabs = await this.pageLayoutTabRepository.find({ - where: { workspaceId }, - withDeleted: true, - }); + const [pageLayoutTabs, pageLayoutWidgets] = await Promise.all([ + await this.pageLayoutTabRepository.find({ + where: { workspaceId }, + withDeleted: true, + }), + await this.pageLayoutWidgetRepository.find({ + where: { workspaceId }, + withDeleted: true, + }), + ]); + + const [pageLayoutWidgetsByPageLayoutTabId] = ( + [ + { + entities: pageLayoutWidgets, + foreignKey: 'pageLayoutTabId', + }, + ] as const + ).map(regroupEntitiesByRelatedEntityId); const flatPageLayoutTabMaps = createEmptyFlatEntityMaps(); for (const pageLayoutTabEntity of pageLayoutTabs) { - const flatPageLayoutTab = - transformPageLayoutTabEntityToFlatPageLayoutTab(pageLayoutTabEntity); + const flatPageLayoutTab = transformPageLayoutTabEntityToFlatPageLayoutTab( + { + ...pageLayoutTabEntity, + widgets: + pageLayoutWidgetsByPageLayoutTabId.get(pageLayoutTabEntity.id) || + [], + } as PageLayoutTabEntity, + ); addFlatEntityToFlatEntityMapsThroughMutationOrThrow({ flatEntity: flatPageLayoutTab, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts index 96856f2fbe..657c0fc8f5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts @@ -14,4 +14,6 @@ export type PageLayoutTabEntityRelationProperties = export type FlatPageLayoutTab = FlatEntityFrom< PageLayoutTabEntity, PageLayoutTabEntityRelationProperties ->; +> & { + widgetIds: string[]; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts index 3ee058ad03..889b8a57c1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts @@ -16,5 +16,6 @@ export const transformPageLayoutTabEntityToFlatPageLayoutTab = ( universalIdentifier: pageLayoutTabEntity.universalIdentifier ?? pageLayoutTabEntity.id, applicationId: pageLayoutTabEntity.applicationId, + widgetIds: pageLayoutTabEntity.widgets.map((widget) => widget.id), }; }; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/constants/flat-page-layout-editable-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/constants/flat-page-layout-editable-properties.constant.ts new file mode 100644 index 0000000000..9ce02671ba --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/constants/flat-page-layout-editable-properties.constant.ts @@ -0,0 +1,7 @@ +import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type'; + +export const FLAT_PAGE_LAYOUT_EDITABLE_PROPERTIES: (keyof FlatPageLayout)[] = [ + 'name', + 'type', + 'objectMetadataId', +]; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/flat-page-layout.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/flat-page-layout.module.ts new file mode 100644 index 0000000000..c070aff5ba --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/flat-page-layout.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { WorkspaceFlatPageLayoutMapCacheService } from 'src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([PageLayoutEntity], 'core')], + providers: [WorkspaceFlatPageLayoutMapCacheService], + exports: [WorkspaceFlatPageLayoutMapCacheService], +}) +export class FlatPageLayoutModule {} diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts new file mode 100644 index 0000000000..4a204fe075 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts @@ -0,0 +1,66 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; + +import { Repository } from 'typeorm'; + +import { WorkspaceCacheProvider } from 'src/engine/workspace-cache/interfaces/workspace-cache-provider.service'; + +import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; +import { type FlatPageLayoutMaps } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout-maps.type'; +import { transformPageLayoutEntityToFlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/utils/transform-page-layout-entity-to-flat-page-layout.util'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; +import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; + +@Injectable() +@WorkspaceCache('flatPageLayoutMaps') +export class WorkspaceFlatPageLayoutMapCacheService extends WorkspaceCacheProvider { + constructor( + @InjectRepository(PageLayoutEntity) + private readonly pageLayoutRepository: Repository, + @InjectRepository(PageLayoutTabEntity) + private readonly pageLayoutTabRepository: Repository, + ) { + super(); + } + + async computeForCache(workspaceId: string): Promise { + const [pageLayouts, pageLayoutTabs] = await Promise.all([ + await this.pageLayoutRepository.find({ + where: { workspaceId }, + withDeleted: true, + }), + await this.pageLayoutTabRepository.find({ + where: { workspaceId }, + withDeleted: true, + }), + ]); + + const [pageLayoutTabsByPageLayoutId] = ( + [ + { + entities: pageLayoutTabs, + foreignKey: 'pageLayoutId', + }, + ] as const + ).map(regroupEntitiesByRelatedEntityId); + + const flatPageLayoutMaps = createEmptyFlatEntityMaps(); + + for (const pageLayoutEntity of pageLayouts) { + const flatPageLayout = transformPageLayoutEntityToFlatPageLayout({ + ...pageLayoutEntity, + tabs: pageLayoutTabsByPageLayoutId.get(pageLayoutEntity.id) || [], + } as PageLayoutEntity); + + addFlatEntityToFlatEntityMapsThroughMutationOrThrow({ + flatEntity: flatPageLayout, + flatEntityMapsToMutate: flatPageLayoutMaps, + }); + } + + return flatPageLayoutMaps; + } +} diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout-maps.type.ts new file mode 100644 index 0000000000..0b047f9c4a --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout-maps.type.ts @@ -0,0 +1,4 @@ +import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; +import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type'; + +export type FlatPageLayoutMaps = FlatEntityMaps; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type.ts new file mode 100644 index 0000000000..e112334493 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type.ts @@ -0,0 +1,19 @@ +import { type FlatEntityFrom } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; + +export const pageLayoutEntityRelationProperties = [ + 'workspace', + 'objectMetadata', + 'tabs', + 'application', +] as const; + +export type PageLayoutEntityRelationProperties = + (typeof pageLayoutEntityRelationProperties)[number]; + +export type FlatPageLayout = FlatEntityFrom< + PageLayoutEntity, + PageLayoutEntityRelationProperties +> & { + tabIds: string[]; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/utils/transform-page-layout-entity-to-flat-page-layout.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/utils/transform-page-layout-entity-to-flat-page-layout.util.ts new file mode 100644 index 0000000000..820b793863 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/utils/transform-page-layout-entity-to-flat-page-layout.util.ts @@ -0,0 +1,21 @@ +import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; + +export const transformPageLayoutEntityToFlatPageLayout = ( + pageLayoutEntity: PageLayoutEntity, +): FlatPageLayout => { + return { + createdAt: pageLayoutEntity.createdAt, + deletedAt: pageLayoutEntity.deletedAt, + updatedAt: pageLayoutEntity.updatedAt, + id: pageLayoutEntity.id, + name: pageLayoutEntity.name, + type: pageLayoutEntity.type, + objectMetadataId: pageLayoutEntity.objectMetadataId, + workspaceId: pageLayoutEntity.workspaceId, + universalIdentifier: + pageLayoutEntity.universalIdentifier ?? pageLayoutEntity.id, + applicationId: pageLayoutEntity.applicationId, + tabIds: pageLayoutEntity.tabs.map((tab) => tab.id), + }; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts index c87a538fd8..1f19aed3b0 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts @@ -14,10 +14,12 @@ import { UpdateDateColumn, } from 'typeorm'; -import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; -import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; + import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; @Entity({ name: 'pageLayout', schema: 'core' }) @ObjectType('PageLayout') @@ -26,7 +28,10 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat ['workspaceId', 'objectMetadataId'], { where: '"deletedAt" IS NULL' }, ) -export class PageLayoutEntity implements Required { +export class PageLayoutEntity + extends SyncableEntity + implements Required +{ @PrimaryGeneratedColumn('uuid') id: string; diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts index c78743ece1..d86c1375fb 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts @@ -19,7 +19,6 @@ import { } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; describe('PageLayoutTabService', () => { let pageLayoutTabService: PageLayoutTabService; @@ -76,14 +75,6 @@ describe('PageLayoutTabService', () => { insert: jest.fn(), }, }, - { - provide: getRepositoryToken(WorkspaceEntity), - useValue: { - findOneOrFail: jest.fn().mockResolvedValue({ - workspaceCustomApplicationId: 'application-id', - }), - }, - }, { provide: PageLayoutService, useValue: { @@ -251,6 +242,15 @@ describe('PageLayoutTabService', () => { position: 1, }; + const mockPageLayout = { + id: 'page-layout-id', + applicationId: 'application-id', + }; + + jest + .spyOn(pageLayoutService, 'findByIdOrThrow') + .mockResolvedValue(mockPageLayout as any); + jest .spyOn(pageLayoutTabService, 'findByIdOrThrow') .mockResolvedValue(mockPageLayoutTab as any); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts index aa26530317..8f1aa51334 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts @@ -36,6 +36,9 @@ describe('PageLayoutUpdateService', () => { createdAt: new Date(), updatedAt: new Date(), deletedAt: null, + universalIdentifier: 'universal-identifier', + applicationId: 'application-id', + application: {} as ApplicationEntity, } as PageLayoutEntity; const mockTab = { diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts index 0eb3fe1c3f..ee05fc4404 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts @@ -4,7 +4,6 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { IsNull, type Repository } from 'typeorm'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { @@ -58,15 +57,11 @@ describe('PageLayoutWidgetService', () => { softDelete: jest.fn(), delete: jest.fn(), restore: jest.fn(), - }, - }, - { - provide: getRepositoryToken(WorkspaceEntity), - useValue: { - findOne: jest.fn(), - findOneOrFail: jest.fn().mockResolvedValue({ - workspaceCustomApplicationId: 'application-id', - }), + manager: { + getRepository: jest.fn().mockReturnValue({ + findOne: jest.fn(), + }), + }, }, }, { @@ -193,6 +188,22 @@ describe('PageLayoutWidgetService', () => { it('should create a new page layout widget successfully', async () => { const workspaceId = 'workspace-id'; + const mockPageLayoutTab = { + id: 'page-layout-tab-id', + pageLayout: { + id: 'page-layout-id', + applicationId: 'application-id', + }, + }; + + const tabRepository = { + findOne: jest.fn().mockResolvedValue(mockPageLayoutTab), + }; + + jest + .spyOn(pageLayoutWidgetRepository.manager, 'getRepository') + .mockReturnValue(tabRepository as any); + jest.spyOn(pageLayoutWidgetRepository, 'insert').mockResolvedValue({ identifiers: [{ id: 'page-layout-widget-id' }], generatedMaps: [], @@ -207,6 +218,14 @@ describe('PageLayoutWidgetService', () => { workspaceId, ); + expect(tabRepository.findOne).toHaveBeenCalledWith({ + where: { + id: validPageLayoutWidgetData.pageLayoutTabId, + workspaceId, + deletedAt: IsNull(), + }, + relations: ['pageLayout'], + }); expect(pageLayoutWidgetRepository.insert).toHaveBeenCalledWith({ ...validPageLayoutWidgetData, workspaceId, @@ -303,9 +322,13 @@ describe('PageLayoutWidgetService', () => { const workspaceId = 'workspace-id'; const unexpectedError = new Error('Unexpected error'); + const tabRepository = { + findOne: jest.fn().mockRejectedValue(unexpectedError), + }; + jest - .spyOn(pageLayoutTabService, 'findByIdOrThrow') - .mockRejectedValue(unexpectedError); + .spyOn(pageLayoutWidgetRepository.manager, 'getRepository') + .mockReturnValue(tabRepository as any); await expect( pageLayoutWidgetService.create(validPageLayoutWidgetData, workspaceId), diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts index e7a0855a71..32d6910ea6 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts @@ -3,6 +3,7 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { IsNull, type Repository } from 'typeorm'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { type CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; @@ -18,6 +19,7 @@ import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global. describe('PageLayoutService', () => { let pageLayoutService: PageLayoutService; let pageLayoutRepository: Repository; + let workspaceRepository: Repository; let twentyORMGlobalManager: TwentyORMGlobalManager; const mockPageLayout = { @@ -52,6 +54,12 @@ describe('PageLayoutService', () => { insert: jest.fn(), }, }, + { + provide: getRepositoryToken(WorkspaceEntity), + useValue: { + findOneOrFail: jest.fn(), + }, + }, { provide: TwentyORMGlobalManager, useValue: { @@ -65,6 +73,9 @@ describe('PageLayoutService', () => { pageLayoutRepository = module.get>( getRepositoryToken(PageLayoutEntity), ); + workspaceRepository = module.get>( + getRepositoryToken(WorkspaceEntity), + ); twentyORMGlobalManager = module.get( TwentyORMGlobalManager, ); @@ -170,6 +181,10 @@ describe('PageLayoutService', () => { }; it('should create a page layout successfully', async () => { + jest.spyOn(workspaceRepository, 'findOneOrFail').mockResolvedValue({ + id: 'workspace-id', + workspaceCustomApplicationId: 'application-id', + } as WorkspaceEntity); jest.spyOn(pageLayoutRepository, 'insert').mockResolvedValue({ identifiers: [{ id: 'page-layout-id' }], generatedMaps: [], @@ -184,9 +199,15 @@ describe('PageLayoutService', () => { 'workspace-id', ); + expect(workspaceRepository.findOneOrFail).toHaveBeenCalledWith({ + where: { id: 'workspace-id' }, + select: ['workspaceCustomApplicationId'], + }); expect(pageLayoutRepository.insert).toHaveBeenCalledWith({ ...validPageLayoutData, workspaceId: 'workspace-id', + universalIdentifier: expect.any(String), + applicationId: 'application-id', }); expect(result).toEqual(mockPageLayout); }); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts index 09f332feeb..8bf2476077 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts @@ -6,7 +6,6 @@ import { EntityManager, IsNull, Repository } from 'typeorm'; import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity'; import { v4 } from 'uuid'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { CreatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { @@ -26,8 +25,6 @@ export class PageLayoutTabService { constructor( @InjectRepository(PageLayoutTabEntity) private readonly pageLayoutTabRepository: Repository, - @InjectRepository(WorkspaceEntity) - private readonly workspaceRepository: Repository, private readonly pageLayoutService: PageLayoutService, ) {} @@ -111,24 +108,19 @@ export class PageLayoutTabService { } try { - await this.pageLayoutService.findByIdOrThrow( + const pageLayout = await this.pageLayoutService.findByIdOrThrow( pageLayoutTabData.pageLayoutId, workspaceId, transactionManager, ); - const workspace = await this.workspaceRepository.findOneOrFail({ - where: { id: workspaceId }, - select: ['workspaceCustomApplicationId'], - }); - const repository = this.getPageLayoutTabRepository(transactionManager); const insertResult = await repository.insert({ ...pageLayoutTabData, workspaceId, universalIdentifier: v4(), - applicationId: workspace.workspaceCustomApplicationId, + applicationId: pageLayout.applicationId, }); return this.findByIdOrThrow( diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts index a896ae0ee3..7ddecd6403 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts @@ -8,10 +8,10 @@ import { v4 } from 'uuid'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; import { UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; import { WidgetConfigurationInterface } from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { PageLayoutTabException, @@ -32,8 +32,6 @@ export class PageLayoutWidgetService { constructor( @InjectRepository(PageLayoutWidgetEntity) private readonly pageLayoutWidgetRepository: Repository, - @InjectRepository(WorkspaceEntity) - private readonly workspaceRepository: Repository, private readonly pageLayoutTabService: PageLayoutTabService, private readonly featureFlagService: FeatureFlagService, ) {} @@ -130,11 +128,30 @@ export class PageLayoutWidgetService { ); try { - await this.pageLayoutTabService.findByIdOrThrow( - pageLayoutWidgetData.pageLayoutTabId, - workspaceId, - transactionManager, - ); + const repository = this.getPageLayoutWidgetRepository(transactionManager); + + const pageLayoutTab = await ( + transactionManager + ? transactionManager.getRepository(PageLayoutTabEntity) + : repository.manager.getRepository(PageLayoutTabEntity) + ).findOne({ + where: { + id: pageLayoutWidgetData.pageLayoutTabId, + workspaceId, + deletedAt: IsNull(), + }, + relations: ['pageLayout'], + }); + + if (!isDefined(pageLayoutTab)) { + throw new PageLayoutWidgetException( + generatePageLayoutWidgetExceptionMessage( + PageLayoutWidgetExceptionMessageKey.PAGE_LAYOUT_TAB_NOT_FOUND, + pageLayoutWidgetData.pageLayoutTabId, + ), + PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA, + ); + } let validatedConfig: WidgetConfigurationInterface | null = null; @@ -175,22 +192,11 @@ export class PageLayoutWidgetService { } } - const workspace = await ( - transactionManager - ? transactionManager.getRepository(WorkspaceEntity) - : this.workspaceRepository - ).findOneOrFail({ - where: { id: workspaceId }, - select: ['workspaceCustomApplicationId'], - }); - - const repository = this.getPageLayoutWidgetRepository(transactionManager); - const insertResult = await repository.insert({ ...pageLayoutWidgetData, workspaceId, universalIdentifier: v4(), - applicationId: workspace.workspaceCustomApplicationId, + applicationId: pageLayoutTab.pageLayout.applicationId, ...(validatedConfig && { configuration: validatedConfig }), } as QueryDeepPartialEntity); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts index 5498aadd63..2405554c9f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts @@ -4,7 +4,9 @@ import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; import { EntityManager, IsNull, Repository } from 'typeorm'; import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity'; +import { v4 } from 'uuid'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; @@ -23,6 +25,8 @@ export class PageLayoutService { constructor( @InjectRepository(PageLayoutEntity) private readonly pageLayoutRepository: Repository, + @InjectRepository(WorkspaceEntity) + private readonly workspaceRepository: Repository, private readonly twentyORMGlobalManager: TwentyORMGlobalManager, ) {} @@ -109,11 +113,18 @@ export class PageLayoutService { ); } + const workspace = await this.workspaceRepository.findOneOrFail({ + where: { id: workspaceId }, + select: ['workspaceCustomApplicationId'], + }); + const repository = this.getPageLayoutRepository(transactionManager); const insertResult = await repository.insert({ ...pageLayoutData, workspaceId, + universalIdentifier: v4(), + applicationId: workspace.workspaceCustomApplicationId, }); return this.findByIdOrThrow( diff --git a/packages/twenty-server/src/engine/workspace-cache/types/workspace-cache-key.type.ts b/packages/twenty-server/src/engine/workspace-cache/types/workspace-cache-key.type.ts index 7fc65365c4..27ac6ba2d0 100644 --- a/packages/twenty-server/src/engine/workspace-cache/types/workspace-cache-key.type.ts +++ b/packages/twenty-server/src/engine/workspace-cache/types/workspace-cache-key.type.ts @@ -29,6 +29,7 @@ export const WORKSPACE_CACHE_KEYS_V2 = { ORMEntityMetadatas: 'orm:entity-metadatas', flatAgentMaps: 'flat-maps:agent', flatRoleTargetByAgentIdMaps: 'flat-maps:flatRoleTargetByAgentId', + flatPageLayoutMaps: 'flat-maps:page-layout', flatPageLayoutWidgetMaps: 'flat-maps:page-layout-widget', flatPageLayoutTabMaps: 'flat-maps:flatPageLayoutTabMaps', } as const satisfies Record; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts index e947d3f5c9..7ccfd48fca 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts @@ -1,3 +1,5 @@ +import { v4 } from 'uuid'; + import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PAGE_LAYOUT_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-seeds.constant'; import { generateSeedId } from 'src/engine/workspace-manager/dev-seeder/core/utils/generate-seed-id.util'; @@ -8,10 +10,13 @@ type PageLayoutSeed = { type: PageLayoutType; objectMetadataId: string | null; workspaceId: string; + universalIdentifier: string; + applicationId: string; }; export const getPageLayoutDataSeeds = ( workspaceId: string, + applicationId: string, ): PageLayoutSeed[] => [ { id: generateSeedId(workspaceId, PAGE_LAYOUT_SEEDS.SALES_DASHBOARD), @@ -19,6 +24,8 @@ export const getPageLayoutDataSeeds = ( type: PageLayoutType.DASHBOARD, objectMetadataId: null, workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_SEEDS.CUSTOMER_DASHBOARD), @@ -26,6 +33,8 @@ export const getPageLayoutDataSeeds = ( type: PageLayoutType.DASHBOARD, objectMetadataId: null, workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_SEEDS.TEAM_DASHBOARD), @@ -33,5 +42,7 @@ export const getPageLayoutDataSeeds = ( type: PageLayoutType.DASHBOARD, objectMetadataId: null, workspaceId, + universalIdentifier: v4(), + applicationId, }, ]; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layouts.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layouts.util.ts index 3cc2aa6dc3..26fd69b551 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layouts.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layouts.util.ts @@ -6,8 +6,9 @@ export const seedPageLayouts = async ( dataSource: DataSource, schemaName: string, workspaceId: string, + applicationId: string, ) => { - const pageLayouts = getPageLayoutDataSeeds(workspaceId); + const pageLayouts = getPageLayoutDataSeeds(workspaceId, applicationId); if (pageLayouts.length > 0) { await dataSource @@ -19,6 +20,8 @@ export const seedPageLayouts = async ( 'type', 'objectMetadataId', 'workspaceId', + 'universalIdentifier', + 'applicationId', ]) .values(pageLayouts) .orIgnore() diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts index ca11e27b04..48014739bc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts @@ -111,7 +111,12 @@ export class DevSeederService { twentyStandardApplication, }); - await seedPageLayouts(this.coreDataSource, 'core', workspaceId); + await seedPageLayouts( + this.coreDataSource, + 'core', + workspaceId, + workspaceCustomFlatApplication.id, + ); await seedPageLayoutTabs({ applicationId: workspaceCustomFlatApplication.id, workspaceId, diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts index b5e0636bfb..e3034e2f5f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts @@ -89,6 +89,11 @@ export const computeTwentyStandardApplicationAllFlatEntityMaps = ({ idByUniversalIdentifier: {}, universalIdentifiersByApplicationId: {}, }, + flatPageLayoutMaps: { + byId: {}, + idByUniversalIdentifier: {}, + universalIdentifiersByApplicationId: {}, + }, flatPageLayoutWidgetMaps: { byId: {}, idByUniversalIdentifier: {}, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts index 2413cc6635..5b6404b2a0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts @@ -31,6 +31,7 @@ export const fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseE invalidViewGroup: 0, invalidRole: 0, invalidRoleTarget: 0, + invalidPageLayout: 0, invalidPageLayoutWidget: 0, totalErrors: 0, invalidPageLayoutTab: 0, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts index 7b1dd8b8b2..0632211d47 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts @@ -21,6 +21,8 @@ import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/works import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service'; import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service'; import { WorkspaceMigrationV2PageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service'; +import { WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service'; +import { WorkspaceMigrationV2PageLayoutActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service'; import { WorkspaceMigrationV2RoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service'; import { WorkspaceMigrationV2RoleActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service'; import { WorkspaceMigrationV2RouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service'; @@ -47,6 +49,8 @@ export class WorkspaceMigrationBuildOrchestratorService { private readonly workspaceMigrationV2FieldActionsBuilderService: WorkspaceMigrationV2FieldActionsBuilderService, private readonly workspaceMigrationV2RoleActionsBuilderService: WorkspaceMigrationV2RoleActionsBuilderService, private readonly workspaceMigrationV2AgentActionsBuilderService: WorkspaceMigrationV2AgentActionsBuilderService, + private readonly workspaceMigrationV2PageLayoutActionsBuilderService: WorkspaceMigrationV2PageLayoutActionsBuilderService, + private readonly workspaceMigrationV2PageLayoutWidgetActionsBuilderService: WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, private readonly workspaceMigrationV2PageLayoutTabActionsBuilderService: WorkspaceMigrationV2PageLayoutTabActionsBuilderService, ) {} @@ -139,6 +143,8 @@ export class WorkspaceMigrationBuildOrchestratorService { flatRoleMaps, flatRoleTargetMaps, flatAgentMaps, + flatPageLayoutMaps, + flatPageLayoutWidgetMaps, flatPageLayoutTabMaps, } = fromToAllFlatEntityMaps; @@ -614,6 +620,74 @@ export class WorkspaceMigrationBuildOrchestratorService { } } + if (isDefined(flatPageLayoutMaps)) { + const { from: fromFlatPageLayoutMaps, to: toFlatPageLayoutMaps } = + flatPageLayoutMaps; + + const pageLayoutResult = + this.workspaceMigrationV2PageLayoutActionsBuilderService.validateAndBuild( + { + from: fromFlatPageLayoutMaps, + to: toFlatPageLayoutMaps, + buildOptions, + dependencyOptimisticFlatEntityMaps: undefined, + workspaceId, + }, + ); + + this.mergeFlatEntityMapsAndRelatedFlatEntityMapsInAllFlatEntityMapsThroughMutation( + { + allFlatEntityMaps: optimisticAllFlatEntityMaps, + flatEntityMapsAndRelatedFlatEntityMaps: + pageLayoutResult.optimisticFlatEntityMapsAndRelatedFlatEntityMaps, + }, + ); + + if (pageLayoutResult.status === 'fail') { + orchestratorFailureReport.pageLayout.push(...pageLayoutResult.errors); + } else { + orchestratorActionsReport.pageLayout = pageLayoutResult.actions; + } + } + + if (isDefined(flatPageLayoutWidgetMaps)) { + const { + from: fromFlatPageLayoutWidgetMaps, + to: toFlatPageLayoutWidgetMaps, + } = flatPageLayoutWidgetMaps; + + const pageLayoutWidgetResult = + this.workspaceMigrationV2PageLayoutWidgetActionsBuilderService.validateAndBuild( + { + from: fromFlatPageLayoutWidgetMaps, + to: toFlatPageLayoutWidgetMaps, + buildOptions, + dependencyOptimisticFlatEntityMaps: { + flatPageLayoutTabMaps: + optimisticAllFlatEntityMaps.flatPageLayoutTabMaps, + }, + workspaceId, + }, + ); + + this.mergeFlatEntityMapsAndRelatedFlatEntityMapsInAllFlatEntityMapsThroughMutation( + { + allFlatEntityMaps: optimisticAllFlatEntityMaps, + flatEntityMapsAndRelatedFlatEntityMaps: + pageLayoutWidgetResult.optimisticFlatEntityMapsAndRelatedFlatEntityMaps, + }, + ); + + if (pageLayoutWidgetResult.status === 'fail') { + orchestratorFailureReport.pageLayoutWidget.push( + ...pageLayoutWidgetResult.errors, + ); + } else { + orchestratorActionsReport.pageLayoutWidget = + pageLayoutWidgetResult.actions; + } + } + if (isDefined(flatPageLayoutTabMaps)) { const { from: fromFlatPageLayoutTabMaps, to: toFlatPageLayoutTabMaps } = flatPageLayoutTabMaps; @@ -624,7 +698,10 @@ export class WorkspaceMigrationBuildOrchestratorService { from: fromFlatPageLayoutTabMaps, to: toFlatPageLayoutTabMaps, buildOptions, - dependencyOptimisticFlatEntityMaps: undefined, + dependencyOptimisticFlatEntityMaps: { + flatPageLayoutMaps: + optimisticAllFlatEntityMaps.flatPageLayoutMaps, + }, workspaceId, }, ); @@ -735,12 +812,24 @@ export class WorkspaceMigrationBuildOrchestratorService { ...aggregatedOrchestratorActionsReport.roleTarget.updated, /// - // + // Agents ...aggregatedOrchestratorActionsReport.agent.deleted, ...aggregatedOrchestratorActionsReport.agent.created, ...aggregatedOrchestratorActionsReport.agent.updated, /// + // Page layouts + ...aggregatedOrchestratorActionsReport.pageLayout.deleted, + ...aggregatedOrchestratorActionsReport.pageLayout.created, + ...aggregatedOrchestratorActionsReport.pageLayout.updated, + /// + + // Page layout widgets + ...aggregatedOrchestratorActionsReport.pageLayoutWidget.deleted, + ...aggregatedOrchestratorActionsReport.pageLayoutWidget.created, + ...aggregatedOrchestratorActionsReport.pageLayoutWidget.updated, + /// + // Page layout tabs ...aggregatedOrchestratorActionsReport.pageLayoutTab.deleted, ...aggregatedOrchestratorActionsReport.pageLayoutTab.created, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts new file mode 100644 index 0000000000..793469e298 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts @@ -0,0 +1,18 @@ +import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type'; +import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type'; + +export type UpdatePageLayoutAction = { + type: 'update_page_layout'; + flatEntityId: string; + flatEntityUpdates: FlatEntityPropertiesUpdates<'pageLayout'>; +}; + +export type CreatePageLayoutAction = { + type: 'create_page_layout'; + flatEntity: FlatPageLayout; +}; + +export type DeletePageLayoutAction = { + type: 'delete_page_layout'; + flatEntityId: string; +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts new file mode 100644 index 0000000000..b9357b64bd --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts @@ -0,0 +1,105 @@ +import { Injectable } from '@nestjs/common'; + +import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; + +import { UpdatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; +import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; +import { FlatPageLayoutValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service'; + +@Injectable() +export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< + typeof ALL_METADATA_NAME.pageLayout +> { + constructor( + private readonly flatPageLayoutValidatorService: FlatPageLayoutValidatorService, + ) { + super(ALL_METADATA_NAME.pageLayout); + } + + protected validateFlatEntityCreation( + args: FlatEntityValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayout, + 'created' + > { + const validationResult = + this.flatPageLayoutValidatorService.validateFlatPageLayoutCreation(args); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityToValidate: flatPageLayoutToValidate } = args; + + return { + status: 'success', + action: { + type: 'create_page_layout', + flatEntity: flatPageLayoutToValidate, + }, + }; + } + + protected validateFlatEntityDeletion( + args: FlatEntityValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayout, + 'deleted' + > { + const validationResult = + this.flatPageLayoutValidatorService.validateFlatPageLayoutDeletion(args); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityToValidate: flatPageLayoutToValidate } = args; + + return { + status: 'success', + action: { + type: 'delete_page_layout', + flatEntityId: flatPageLayoutToValidate.id, + }, + }; + } + + protected validateFlatEntityUpdate( + args: FlatEntityUpdateValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayout, + 'updated' + > { + const validationResult = + this.flatPageLayoutValidatorService.validateFlatPageLayoutUpdate(args); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityId, flatEntityUpdates } = args; + + const updatePageLayoutAction: UpdatePageLayoutAction = { + type: 'update_page_layout', + flatEntityId, + flatEntityUpdates, + }; + + return { + status: 'success', + action: updatePageLayoutAction, + }; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts new file mode 100644 index 0000000000..d6e01be612 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts @@ -0,0 +1,104 @@ +import { Injectable } from '@nestjs/common'; + +import { msg, t } from '@lingui/core/macro'; +import { type ALL_METADATA_NAME } from 'twenty-shared/metadata'; +import { isDefined } from 'twenty-shared/utils'; + +import { type FlatPageLayout } from 'src/engine/metadata-modules/flat-page-layout/types/flat-page-layout.type'; +import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; + +const PAGE_LAYOUT_EXCEPTION_CODE = { + PAGE_LAYOUT_NOT_FOUND: 'PAGE_LAYOUT_NOT_FOUND', +} as const; + +@Injectable() +export class FlatPageLayoutValidatorService { + public validateFlatPageLayoutCreation({ + flatEntityToValidate: flatPageLayout, + }: FlatEntityValidationArgs< + typeof ALL_METADATA_NAME.pageLayout + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'create_page_layout', + errors: [], + flatEntityMinimalInformation: { + id: flatPageLayout.id, + name: flatPageLayout.name, + }, + }; + + return validationResult; + } + + public validateFlatPageLayoutDeletion({ + flatEntityToValidate, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutMaps: optimisticFlatPageLayoutMaps, + }, + }: FlatEntityValidationArgs< + typeof ALL_METADATA_NAME.pageLayout + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'delete_page_layout', + errors: [], + flatEntityMinimalInformation: { + id: flatEntityToValidate.id, + name: flatEntityToValidate.name, + }, + }; + + const existingPageLayout = findFlatEntityByIdInFlatEntityMaps({ + flatEntityId: flatEntityToValidate.id, + flatEntityMaps: optimisticFlatPageLayoutMaps, + }); + + if (!isDefined(existingPageLayout)) { + validationResult.errors.push({ + code: PAGE_LAYOUT_EXCEPTION_CODE.PAGE_LAYOUT_NOT_FOUND, + message: t`Page layout not found`, + userFriendlyMessage: msg`Page layout not found`, + }); + + return validationResult; + } + + return validationResult; + } + + public validateFlatPageLayoutUpdate({ + flatEntityId, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutMaps: optimisticFlatPageLayoutMaps, + }, + }: FlatEntityUpdateValidationArgs< + typeof ALL_METADATA_NAME.pageLayout + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'update_page_layout', + errors: [], + flatEntityMinimalInformation: { + id: flatEntityId, + }, + }; + + const fromFlatPageLayout = findFlatEntityByIdInFlatEntityMaps({ + flatEntityId, + flatEntityMaps: optimisticFlatPageLayoutMaps, + }); + + if (!isDefined(fromFlatPageLayout)) { + validationResult.errors.push({ + code: PAGE_LAYOUT_EXCEPTION_CODE.PAGE_LAYOUT_NOT_FOUND, + message: t`Page layout not found`, + userFriendlyMessage: msg`Page layout not found`, + }); + + return validationResult; + } + + return validationResult; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts index 32d2b0e3b5..258ca6be06 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts @@ -3,6 +3,7 @@ import { Module } from '@nestjs/common'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service'; import { FlatAgentValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service'; +import { FlatPageLayoutValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service'; import { FlatCronTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service'; import { FlatDatabaseEventTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service'; import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service'; @@ -37,6 +38,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace FlatRoleValidatorService, FlatRoleTargetValidatorService, FlatAgentValidatorService, + FlatPageLayoutValidatorService, FlatPageLayoutWidgetValidatorService, FlatPageLayoutTabValidatorService, ], @@ -56,6 +58,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace FlatRoleValidatorService, FlatRoleTargetValidatorService, FlatAgentValidatorService, + FlatPageLayoutValidatorService, FlatPageLayoutWidgetValidatorService, FlatPageLayoutTabValidatorService, ], diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts index dd475140a2..384c673113 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts @@ -8,6 +8,7 @@ import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 's import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service'; import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service'; import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service'; +import { WorkspaceMigrationV2PageLayoutActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service'; import { WorkspaceMigrationV2PageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service'; import { WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service'; import { WorkspaceMigrationV2RoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service'; @@ -38,6 +39,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace- WorkspaceMigrationV2RoleActionsBuilderService, WorkspaceMigrationV2RoleTargetActionsBuilderService, WorkspaceMigrationV2AgentActionsBuilderService, + WorkspaceMigrationV2PageLayoutActionsBuilderService, WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, WorkspaceMigrationV2PageLayoutTabActionsBuilderService, ], @@ -56,6 +58,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace- WorkspaceMigrationV2RoleActionsBuilderService, WorkspaceMigrationV2RoleTargetActionsBuilderService, WorkspaceMigrationV2AgentActionsBuilderService, + WorkspaceMigrationV2PageLayoutActionsBuilderService, WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, WorkspaceMigrationV2PageLayoutTabActionsBuilderService, FlatFieldMetadataTypeValidatorService, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts new file mode 100644 index 0000000000..b3f66a0c5d --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts @@ -0,0 +1,59 @@ +import { Injectable } from '@nestjs/common'; + +import { + OptimisticallyApplyActionOnAllFlatEntityMapsArgs, + WorkspaceMigrationRunnerActionHandler, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; + +import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; +import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { CreatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; + +@Injectable() +export class CreatePageLayoutActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'create_page_layout', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutMaps } = allFlatEntityMaps; + const { flatEntity } = action; + + const updatedFlatPageLayoutMaps = addFlatEntityToFlatEntityMapsOrThrow({ + flatEntity, + flatEntityMaps: flatPageLayoutMaps, + }); + + return { + flatPageLayoutMaps: updatedFlatPageLayoutMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { flatEntity } = action; + + const pageLayoutRepository = + queryRunner.manager.getRepository(PageLayoutEntity); + + await pageLayoutRepository.insert({ + ...flatEntity, + workspaceId, + }); + } + + async executeForWorkspaceSchema( + _context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + return; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts new file mode 100644 index 0000000000..2e869c18f3 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts @@ -0,0 +1,58 @@ +import { Injectable } from '@nestjs/common'; + +import { + OptimisticallyApplyActionOnAllFlatEntityMapsArgs, + WorkspaceMigrationRunnerActionHandler, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; + +import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; +import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { DeletePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; + +@Injectable() +export class DeletePageLayoutActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'delete_page_layout', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutMaps } = allFlatEntityMaps; + const { flatEntityId } = action; + + const updatedFlatPageLayoutMaps = deleteFlatEntityFromFlatEntityMapsOrThrow( + { + entityToDeleteId: flatEntityId, + flatEntityMaps: flatPageLayoutMaps, + }, + ); + + return { + flatPageLayoutMaps: updatedFlatPageLayoutMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { flatEntityId } = action; + + const pageLayoutRepository = + queryRunner.manager.getRepository(PageLayoutEntity); + + await pageLayoutRepository.delete({ id: flatEntityId, workspaceId }); + } + + async executeForWorkspaceSchema( + _context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + return; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts new file mode 100644 index 0000000000..3f20decfb1 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts @@ -0,0 +1,71 @@ +import { Injectable } from '@nestjs/common'; + +import { + OptimisticallyApplyActionOnAllFlatEntityMapsArgs, + WorkspaceMigrationRunnerActionHandler, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; + +import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; +import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; +import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { UpdatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; + +@Injectable() +export class UpdatePageLayoutActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'update_page_layout', +) { + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutMaps } = allFlatEntityMaps; + const { flatEntityId, flatEntityUpdates } = action; + + const existingPageLayout = findFlatEntityByIdInFlatEntityMapsOrThrow({ + flatEntityId, + flatEntityMaps: flatPageLayoutMaps, + }); + + const updatedPageLayout = { + ...existingPageLayout, + ...fromFlatEntityPropertiesUpdatesToPartialFlatEntity({ + updates: flatEntityUpdates, + }), + }; + + const updatedFlatPageLayoutMaps = replaceFlatEntityInFlatEntityMapsOrThrow({ + flatEntity: updatedPageLayout, + flatEntityMaps: flatPageLayoutMaps, + }); + + return { + flatPageLayoutMaps: updatedFlatPageLayoutMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { flatEntityId, flatEntityUpdates } = action; + + const pageLayoutRepository = + queryRunner.manager.getRepository(PageLayoutEntity); + + await pageLayoutRepository.update( + { id: flatEntityId, workspaceId }, + fromFlatEntityPropertiesUpdatesToPartialFlatEntity({ + updates: flatEntityUpdates, + }), + ); + } + + async executeForWorkspaceSchema( + _context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + return; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts index 5c2b17ccda..362590e34b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts @@ -4,6 +4,9 @@ import { WorkspaceSchemaManagerModule } from 'src/engine/twenty-orm/workspace-sc import { CreateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/create-agent-action-handler.service'; import { DeleteAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/delete-agent-action-handler.service'; import { UpdateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/update-agent-action-handler.service'; +import { CreatePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service'; +import { DeletePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service'; +import { UpdatePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service'; import { CreateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service'; import { DeleteCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service'; import { UpdateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service'; @@ -107,6 +110,10 @@ import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/wor UpdateAgentActionHandlerService, DeleteAgentActionHandlerService, + CreatePageLayoutActionHandlerService, + UpdatePageLayoutActionHandlerService, + DeletePageLayoutActionHandlerService, + CreatePageLayoutWidgetActionHandlerService, UpdatePageLayoutWidgetActionHandlerService, DeletePageLayoutWidgetActionHandlerService, diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-many-view-fields-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-many-view-fields-v2.integration-spec.ts.snap index cc00976433..32fd00f54d 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-many-view-fields-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-many-view-fields-v2.integration-spec.ts.snap @@ -11,6 +11,7 @@ exports[`View Field Resolver - Failing Create Many Operations - v2 should accumu "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -84,6 +85,7 @@ exports[`View Field Resolver - Failing Create Many Operations - v2 should accumu "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-view-field-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-view-field-v2.integration-spec.ts.snap index 7a67e3e1f4..04ea3a36df 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-view-field-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/failing-create-view-field-v2.integration-spec.ts.snap @@ -11,6 +11,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 Should fail to crea "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -47,6 +48,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 Should fail to crea "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -77,6 +79,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -113,6 +116,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -143,6 +147,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -179,6 +184,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/object-identifier-update-side-effect-on-view-field.integration-spec.ts.snap b/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/object-identifier-update-side-effect-on-view-field.integration-spec.ts.snap index 93f9fb6e00..a936ddd2fa 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/object-identifier-update-side-effect-on-view-field.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/__snapshots__/object-identifier-update-side-effect-on-view-field.integration-spec.ts.snap @@ -11,6 +11,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -47,6 +48,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -77,6 +79,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -113,6 +116,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -143,6 +147,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -177,6 +182,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -207,6 +213,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -243,6 +250,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -273,6 +281,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -309,6 +318,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-creation.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-creation.integration-spec.ts.snap index ae8f806f72..16b959adba 100644 --- a/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-creation.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-creation.integration-spec.ts.snap @@ -27,6 +27,7 @@ exports[`Agent creation should fail when computed name already exists 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -46,6 +47,7 @@ exports[`Agent creation should fail when computed name already exists 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -92,6 +94,7 @@ exports[`Agent creation should fail when label is empty string 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -111,6 +114,7 @@ exports[`Agent creation should fail when label is empty string 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -171,6 +175,7 @@ exports[`Agent creation should fail when modelId is empty string 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -190,6 +195,7 @@ exports[`Agent creation should fail when modelId is empty string 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -250,6 +256,7 @@ exports[`Agent creation should fail when prompt is empty string 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -269,6 +276,7 @@ exports[`Agent creation should fail when prompt is empty string 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -329,6 +337,7 @@ exports[`Agent creation should fail when responseFormat has invalid type 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -348,6 +357,7 @@ exports[`Agent creation should fail when responseFormat has invalid type 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -394,6 +404,7 @@ exports[`Agent creation should fail when responseFormat type is json but schema "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -413,6 +424,7 @@ exports[`Agent creation should fail when responseFormat type is json but schema "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -459,6 +471,7 @@ exports[`Agent creation should fail when responseFormat type is text but schema "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -478,6 +491,7 @@ exports[`Agent creation should fail when responseFormat type is text but schema "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-deletion.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-deletion.integration-spec.ts.snap index 7f8950d722..789b2e7078 100644 --- a/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-deletion.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-deletion.integration-spec.ts.snap @@ -27,6 +27,7 @@ exports[`Agent deletion should fail should fail when attempting to delete a stan "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -46,6 +47,7 @@ exports[`Agent deletion should fail should fail when attempting to delete a stan "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-update.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-update.integration-spec.ts.snap index 042ed929f3..a05b98d4bc 100644 --- a/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-update.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/agent/__snapshots__/failing-agent-update.integration-spec.ts.snap @@ -26,6 +26,7 @@ exports[`Agent update should fail should fail when attempting to update a standa "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -45,6 +46,7 @@ exports[`Agent update should fail should fail when attempting to update a standa "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -112,6 +114,7 @@ exports[`Agent update should fail when settings null required properties 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -131,6 +134,7 @@ exports[`Agent update should fail when settings null required properties 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -176,6 +180,7 @@ exports[`Agent update should fail when updating label to one that already exists "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -195,6 +200,7 @@ exports[`Agent update should fail when updating label to one that already exists "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -240,6 +246,7 @@ exports[`Agent update should fail when updating responseFormat type to json with "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -259,6 +266,7 @@ exports[`Agent update should fail when updating responseFormat type to json with "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -304,6 +312,7 @@ exports[`Agent update should fail when updating responseFormat type to text with "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -323,6 +332,7 @@ exports[`Agent update should fail when updating responseFormat type to text with "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -368,6 +378,7 @@ exports[`Agent update should fail when updating responseFormat with invalid type "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -387,6 +398,7 @@ exports[`Agent update should fail when updating responseFormat with invalid type "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -432,6 +444,7 @@ exports[`Agent update should fail when updating with empty label 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -451,6 +464,7 @@ exports[`Agent update should fail when updating with empty label 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -496,6 +510,7 @@ exports[`Agent update should fail when updating with empty modelId 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -515,6 +530,7 @@ exports[`Agent update should fail when updating with empty modelId 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -560,6 +576,7 @@ exports[`Agent update should fail when updating with empty prompt 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -579,6 +596,7 @@ exports[`Agent update should fail when updating with empty prompt 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/create-one-field-metadata.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/create-one-field-metadata.integration-spec.ts.snap index 0654d2bcd6..8749b7c5f4 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/create-one-field-metadata.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/create-one-field-metadata.integration-spec.ts.snap @@ -29,6 +29,7 @@ exports[`createOne FieldMetadataService name/label sync should return an error w ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -48,6 +49,7 @@ exports[`createOne FieldMetadataService name/label sync should return an error w "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/failing-create-one-field-metadata.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/failing-create-one-field-metadata.integration-spec.ts.snap index 6a942f93bb..2ce90f0890 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/failing-create-one-field-metadata.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/failing-create-one-field-metadata.integration-spec.ts.snap @@ -30,6 +30,7 @@ exports[`Failing create field metadata tests suite should fail to create NUMERIC ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -49,6 +50,7 @@ exports[`Failing create field metadata tests suite should fail to create NUMERIC "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -99,6 +101,7 @@ exports[`Failing create field metadata tests suite should fail to create POSITIO ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -118,6 +121,7 @@ exports[`Failing create field metadata tests suite should fail to create POSITIO "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -161,6 +165,7 @@ exports[`Failing create field metadata tests suite should fail to create TS_VECT "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -180,6 +185,7 @@ exports[`Failing create field metadata tests suite should fail to create TS_VECT "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/update-one-field-metadata.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/update-one-field-metadata.integration-spec.ts.snap index 3ec7876b8d..b555a36f49 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/update-one-field-metadata.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/__snapshots__/update-one-field-metadata.integration-spec.ts.snap @@ -29,6 +29,7 @@ exports[`updateOne failing update should not update a field name if it is not sy ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -48,6 +49,7 @@ exports[`updateOne failing update should not update a field name if it is not sy "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -103,6 +105,7 @@ exports[`updateOne failing update should throw if the field name is not availabl ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -122,6 +125,7 @@ exports[`updateOne failing update should throw if the field name is not availabl "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-create-one-field-metadata-enum-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-create-one-field-metadata-enum-v2.integration-spec.ts.snap index 9c5e767886..9dd2242d18 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-create-one-field-metadata-enum-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-create-one-field-metadata-enum-v2.integration-spec.ts.snap @@ -30,6 +30,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -49,6 +50,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -99,6 +101,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -118,6 +121,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -168,6 +172,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -187,6 +192,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -252,6 +258,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -271,6 +278,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -336,6 +344,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -355,6 +364,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -420,6 +430,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -439,6 +450,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -504,6 +516,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -523,6 +536,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -573,6 +587,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -592,6 +607,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -642,6 +658,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -661,6 +678,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -717,6 +735,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -736,6 +755,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -786,6 +806,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -805,6 +826,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -855,6 +877,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -874,6 +897,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -924,6 +948,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -943,6 +968,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1011,6 +1037,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1030,6 +1057,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1080,6 +1108,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1099,6 +1128,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1149,6 +1179,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1168,6 +1199,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1218,6 +1250,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1237,6 +1270,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1287,6 +1321,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1306,6 +1341,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1356,6 +1392,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1375,6 +1412,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1425,6 +1463,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1444,6 +1483,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1494,6 +1534,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1513,6 +1554,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1568,6 +1610,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1587,6 +1630,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1636,6 +1680,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1655,6 +1700,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1705,6 +1751,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1724,6 +1771,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1773,6 +1821,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1792,6 +1841,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1848,6 +1898,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1867,6 +1918,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1917,6 +1969,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1936,6 +1989,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1986,6 +2040,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2005,6 +2060,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2055,6 +2111,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2074,6 +2131,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2130,6 +2188,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2149,6 +2208,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2199,6 +2259,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2218,6 +2279,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2268,6 +2330,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2287,6 +2350,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2343,6 +2407,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2362,6 +2427,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2411,6 +2477,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2430,6 +2497,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2479,6 +2547,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2498,6 +2567,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2548,6 +2618,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2567,6 +2638,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2617,6 +2689,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2636,6 +2709,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2692,6 +2766,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2711,6 +2786,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2761,6 +2837,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2780,6 +2857,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2830,6 +2908,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2849,6 +2928,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2914,6 +2994,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2933,6 +3014,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2998,6 +3080,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3017,6 +3100,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3082,6 +3166,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3101,6 +3186,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3166,6 +3252,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3185,6 +3272,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3235,6 +3323,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3254,6 +3343,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3310,6 +3400,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3329,6 +3420,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3379,6 +3471,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3398,6 +3491,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3448,6 +3542,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3467,6 +3562,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3517,6 +3613,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3536,6 +3633,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3586,6 +3684,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3605,6 +3704,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3655,6 +3755,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3674,6 +3775,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3724,6 +3826,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3743,6 +3846,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3793,6 +3897,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3812,6 +3917,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3862,6 +3968,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3881,6 +3988,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3931,6 +4039,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3950,6 +4059,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4005,6 +4115,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4024,6 +4135,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4073,6 +4185,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4092,6 +4205,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4142,6 +4256,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4161,6 +4276,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4210,6 +4326,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4229,6 +4346,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4285,6 +4403,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4304,6 +4423,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4354,6 +4474,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4373,6 +4494,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4423,6 +4545,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4442,6 +4565,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4492,6 +4616,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4511,6 +4636,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4567,6 +4693,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4586,6 +4713,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4636,6 +4764,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4655,6 +4784,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4705,6 +4835,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4724,6 +4855,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4780,6 +4912,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4799,6 +4932,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4848,6 +4982,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4867,6 +5002,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4916,6 +5052,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4935,6 +5072,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4985,6 +5123,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -5004,6 +5143,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-update-one-enum-field-metadata-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-update-one-enum-field-metadata-v2.integration-spec.ts.snap index 1ab1d011bd..43ef8ae2e4 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-update-one-enum-field-metadata-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/enum/__snapshots__/failing-update-one-enum-field-metadata-v2.integration-spec.ts.snap @@ -30,6 +30,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -49,6 +50,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -99,6 +101,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -118,6 +121,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -168,6 +172,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -187,6 +192,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -252,6 +258,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -271,6 +278,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -336,6 +344,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -355,6 +364,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -420,6 +430,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -439,6 +450,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -504,6 +516,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -523,6 +536,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -573,6 +587,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -592,6 +607,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -642,6 +658,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -661,6 +678,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -717,6 +735,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -736,6 +755,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -786,6 +806,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -805,6 +826,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -855,6 +877,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -874,6 +897,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -924,6 +948,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -943,6 +968,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1011,6 +1037,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1030,6 +1057,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1080,6 +1108,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1099,6 +1128,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1149,6 +1179,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1168,6 +1199,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1218,6 +1250,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1237,6 +1270,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1287,6 +1321,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1306,6 +1341,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1356,6 +1392,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1375,6 +1412,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1425,6 +1463,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1444,6 +1483,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1494,6 +1534,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1513,6 +1554,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1568,6 +1610,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1587,6 +1630,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1636,6 +1680,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1655,6 +1700,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1704,6 +1750,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1723,6 +1770,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1779,6 +1827,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1798,6 +1847,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1848,6 +1898,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1867,6 +1918,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1917,6 +1969,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1936,6 +1989,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1986,6 +2040,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2005,6 +2060,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2061,6 +2117,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2080,6 +2137,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2130,6 +2188,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2149,6 +2208,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2199,6 +2259,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2218,6 +2279,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2274,6 +2336,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2293,6 +2356,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2342,6 +2406,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2361,6 +2426,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2410,6 +2476,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2429,6 +2496,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2479,6 +2547,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2498,6 +2567,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2548,6 +2618,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2567,6 +2638,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2623,6 +2695,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2642,6 +2715,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2692,6 +2766,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2711,6 +2786,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2761,6 +2837,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2780,6 +2857,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2845,6 +2923,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2864,6 +2943,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2929,6 +3009,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2948,6 +3029,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3013,6 +3095,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3032,6 +3115,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3097,6 +3181,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3116,6 +3201,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3166,6 +3252,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3185,6 +3272,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3241,6 +3329,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3260,6 +3349,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3310,6 +3400,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3329,6 +3420,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3379,6 +3471,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3398,6 +3491,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3448,6 +3542,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3467,6 +3562,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3517,6 +3613,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3536,6 +3633,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3586,6 +3684,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3605,6 +3704,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3655,6 +3755,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3674,6 +3775,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3724,6 +3826,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3743,6 +3846,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3793,6 +3897,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3812,6 +3917,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3862,6 +3968,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3881,6 +3988,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3936,6 +4044,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3955,6 +4064,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4004,6 +4114,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4023,6 +4134,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4072,6 +4184,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4091,6 +4204,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4147,6 +4261,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4166,6 +4281,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4216,6 +4332,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4235,6 +4352,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4285,6 +4403,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4304,6 +4423,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4354,6 +4474,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4373,6 +4494,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4429,6 +4551,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4448,6 +4571,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4498,6 +4622,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4517,6 +4642,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4567,6 +4693,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4586,6 +4713,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4642,6 +4770,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4661,6 +4790,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4710,6 +4840,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4729,6 +4860,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4778,6 +4910,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4797,6 +4930,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4847,6 +4981,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4866,6 +5001,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-add-one-target-to-metadata-morph-relation-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-add-one-target-to-metadata-morph-relation-v2.integration-spec.ts.snap index bce94184a9..06dd0bbc56 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-add-one-target-to-metadata-morph-relation-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-add-one-target-to-metadata-morph-relation-v2.integration-spec.ts.snap @@ -72,6 +72,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -91,6 +92,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -170,6 +172,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -189,6 +192,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap index 3a65cfe512..447627458f 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/morph-relation/__snapshots__/failing-create-one-field-metadata-morph-relation-v2.integration-spec.ts.snap @@ -77,6 +77,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -96,6 +97,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -144,6 +146,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -163,6 +166,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -205,6 +209,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -224,6 +229,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -266,6 +272,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -285,6 +292,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -355,6 +363,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -374,6 +383,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -438,6 +448,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -457,6 +468,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -521,6 +533,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -540,6 +553,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -610,6 +624,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -629,6 +644,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -679,6 +695,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -698,6 +715,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -748,6 +766,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -767,6 +786,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -816,6 +836,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -835,6 +856,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -877,6 +899,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -896,6 +919,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -938,6 +962,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -957,6 +982,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -999,6 +1025,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1018,6 +1045,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1063,6 +1091,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1082,6 +1111,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1125,6 +1155,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1144,6 +1175,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1186,6 +1218,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1205,6 +1238,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-creation.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-creation.integration-spec.ts.snap index ae375dd24c..b4c29ee003 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-creation.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-creation.integration-spec.ts.snap @@ -29,6 +29,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -48,6 +49,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -96,6 +98,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -115,6 +118,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -169,6 +173,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -188,6 +193,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -236,6 +242,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -255,6 +262,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -309,6 +317,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -328,6 +337,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -376,6 +386,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -395,6 +406,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -443,6 +455,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -462,6 +475,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -509,6 +523,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -528,6 +543,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -608,6 +624,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -627,6 +644,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -675,6 +693,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -694,6 +713,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -759,6 +779,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -778,6 +799,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -844,6 +866,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -863,6 +886,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -935,6 +959,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -954,6 +979,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1020,6 +1046,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1039,6 +1066,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1111,6 +1139,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1130,6 +1159,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1180,6 +1210,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1199,6 +1230,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1249,6 +1281,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1268,6 +1301,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1317,6 +1351,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1336,6 +1371,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1418,6 +1454,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1437,6 +1474,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1487,6 +1525,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "type": "create_field", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1506,6 +1545,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1555,6 +1595,7 @@ exports[`Field metadata relation creation should fail should fail when creating ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1574,6 +1615,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1638,6 +1680,7 @@ exports[`Field metadata relation creation should fail should fail when creating }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1657,6 +1700,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1737,6 +1781,7 @@ exports[`Field metadata relation creation should fail should fail when creating }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1756,6 +1801,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1836,6 +1882,7 @@ exports[`Field metadata relation creation should fail should fail when creating }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1855,6 +1902,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-update.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-update.integration-spec.ts.snap index caad68c39f..04dd264340 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-update.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/relation/__snapshots__/failing-field-metadata-relation-update.integration-spec.ts.snap @@ -36,6 +36,7 @@ exports[`Field metadata relation update should fail relation when name is not in ], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -55,6 +56,7 @@ exports[`Field metadata relation update should fail relation when name is not in "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/unique-field/__snapshots__/create-one-unique-field-metadata.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/field-metadata/unique-field/__snapshots__/create-one-unique-field-metadata.integration-spec.ts.snap index 3996412087..dbd370e6c2 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/unique-field/__snapshots__/create-one-unique-field-metadata.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/unique-field/__snapshots__/create-one-unique-field-metadata.integration-spec.ts.snap @@ -27,6 +27,7 @@ exports[`failing createOne unique field metadata should fail for composite type }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -46,6 +47,7 @@ exports[`failing createOne unique field metadata should fail for composite type "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -92,6 +94,7 @@ exports[`failing createOne unique field metadata should fail when field has cust }, ], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -111,6 +114,7 @@ exports[`failing createOne unique field metadata should fail when field has cust "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-create-one-object-metadata-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-create-one-object-metadata-v2.integration-spec.ts.snap index fbe945b300..5306078346 100644 --- a/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-create-one-object-metadata-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-create-one-object-metadata-v2.integration-spec.ts.snap @@ -339,6 +339,7 @@ exports[`Object metadata creation should fail v2 when labelPlural contains only "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -605,6 +606,7 @@ exports[`Object metadata creation should fail v2 when labelPlural contains only "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -963,6 +965,7 @@ exports[`Object metadata creation should fail v2 when labelPlural exceeds maximu "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1229,6 +1232,7 @@ exports[`Object metadata creation should fail v2 when labelPlural exceeds maximu "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -1598,6 +1602,7 @@ exports[`Object metadata creation should fail v2 when labelSingular contains onl "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -1864,6 +1869,7 @@ exports[`Object metadata creation should fail v2 when labelSingular contains onl "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2222,6 +2228,7 @@ exports[`Object metadata creation should fail v2 when labelSingular exceeds maxi "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -2488,6 +2495,7 @@ exports[`Object metadata creation should fail v2 when labelSingular exceeds maxi "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -2857,6 +2865,7 @@ exports[`Object metadata creation should fail v2 when labels are identical 1`] = "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3123,6 +3132,7 @@ exports[`Object metadata creation should fail v2 when labels are identical 1`] = "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -3481,6 +3491,7 @@ exports[`Object metadata creation should fail v2 when labels with whitespaces re "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -3747,6 +3758,7 @@ exports[`Object metadata creation should fail v2 when labels with whitespaces re "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4135,6 +4147,7 @@ exports[`Object metadata creation should fail v2 when name exceeds maximum lengt "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -4401,6 +4414,7 @@ exports[`Object metadata creation should fail v2 when name exceeds maximum lengt "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -4759,6 +4773,7 @@ exports[`Object metadata creation should fail v2 when namePlural has invalid cha "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -5025,6 +5040,7 @@ exports[`Object metadata creation should fail v2 when namePlural has invalid cha "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -5383,6 +5399,7 @@ exports[`Object metadata creation should fail v2 when namePlural is a reserved k "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -5649,6 +5666,7 @@ exports[`Object metadata creation should fail v2 when namePlural is a reserved k "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -6024,6 +6042,7 @@ exports[`Object metadata creation should fail v2 when namePlural is not camelCas "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -6290,6 +6309,7 @@ exports[`Object metadata creation should fail v2 when namePlural is not camelCas "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -6714,6 +6734,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -6980,6 +7001,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -7404,6 +7426,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -7670,6 +7693,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -8058,6 +8082,7 @@ exports[`Object metadata creation should fail v2 when nameSingular has invalid c "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -8324,6 +8349,7 @@ exports[`Object metadata creation should fail v2 when nameSingular has invalid c "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -8712,6 +8738,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is a reserved "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -8978,6 +9005,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is a reserved "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -9413,6 +9441,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is not camelC "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -9679,6 +9708,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is not camelC "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -10037,6 +10067,7 @@ exports[`Object metadata creation should fail v2 when names are identical 1`] = "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -10303,6 +10334,7 @@ exports[`Object metadata creation should fail v2 when names are identical 1`] = "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -10661,6 +10693,7 @@ exports[`Object metadata creation should fail v2 when names with whitespaces res "type": "create_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -10927,6 +10960,7 @@ exports[`Object metadata creation should fail v2 when names with whitespaces res "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-update-one-object-metadata.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-update-one-object-metadata.integration-spec.ts.snap index d212a74c48..55deee8037 100644 --- a/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-update-one-object-metadata.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/object-metadata/__snapshots__/failing-update-one-object-metadata.integration-spec.ts.snap @@ -29,6 +29,7 @@ exports[`Object metadata update should fail when labelIdentifier is a UUID field "type": "update_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -65,6 +66,7 @@ exports[`Object metadata update should fail when labelIdentifier is a UUID field "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -114,6 +116,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a TEXT o "type": "update_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -150,6 +153,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a TEXT o "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -199,6 +203,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a known "type": "update_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -240,6 +245,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a known "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -306,6 +312,7 @@ exports[`Object metadata update should fail when labelIdentifier is null 1`] = ` "type": "update_object", }, ], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -325,6 +332,7 @@ exports[`Object metadata update should fail when labelIdentifier is null 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-creation.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-creation.integration-spec.ts.snap index 4da38917f8..08090310c0 100644 --- a/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-creation.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-creation.integration-spec.ts.snap @@ -11,6 +11,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -46,6 +47,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -76,6 +78,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -111,6 +114,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -141,6 +145,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -176,6 +181,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -206,6 +212,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but mul "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -241,6 +248,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but mul "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -271,6 +279,7 @@ exports[`Role creation should fail when label already exists 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -306,6 +315,7 @@ exports[`Role creation should fail when label already exists 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-update.integration-spec.ts.snap b/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-update.integration-spec.ts.snap index fc1b42fe7f..ecd5cef373 100644 --- a/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-update.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/metadata/suites/role/__snapshots__/failing-role-update.integration-spec.ts.snap @@ -23,6 +23,7 @@ exports[`Role update should fail updating role with existing write permissions s "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -57,6 +58,7 @@ exports[`Role update should fail updating role with existing write permissions s "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -87,6 +89,7 @@ exports[`Role update should fail when updating a non-editable system role 1`] = "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -121,6 +124,7 @@ exports[`Role update should fail when updating a non-editable system role 1`] = "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -151,6 +155,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -185,6 +190,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -215,6 +221,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -249,6 +256,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -279,6 +287,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -313,6 +322,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -343,6 +353,7 @@ exports[`Role update should fail when updating label to one that already exists "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -377,6 +388,7 @@ exports[`Role update should fail when updating label to one that already exists "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, @@ -407,6 +419,7 @@ exports[`Role update should fail when updating to enable write permissions witho "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [ @@ -441,6 +454,7 @@ exports[`Role update should fail when updating to enable write permissions witho "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-server/test/integration/rest/suites/__snapshots__/view-group.integration-spec.ts.snap b/packages/twenty-server/test/integration/rest/suites/__snapshots__/view-group.integration-spec.ts.snap index cb3f671775..67d6563066 100644 --- a/packages/twenty-server/test/integration/rest/suites/__snapshots__/view-group.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/rest/suites/__snapshots__/view-group.integration-spec.ts.snap @@ -10,6 +10,7 @@ exports[`View Group REST API POST /metadata/viewGroups should fail to create vie "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayout": [], "pageLayoutTab": [], "pageLayoutWidget": [], "role": [], @@ -46,6 +47,7 @@ exports[`View Group REST API POST /metadata/viewGroups should fail to create vie "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayout": 0, "invalidPageLayoutTab": 0, "invalidPageLayoutWidget": 0, "invalidRole": 0, diff --git a/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts b/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts index 4121bf80c8..8d102244c3 100644 --- a/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts +++ b/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts @@ -13,6 +13,7 @@ export const ALL_METADATA_NAME = { role: 'role', roleTarget: 'roleTarget', agent: 'agent', + pageLayout: 'pageLayout', pageLayoutWidget: 'pageLayoutWidget', pageLayoutTab: 'pageLayoutTab', } as const;