From b2d785de4ba40813609617bc131e0d63345eedf3 Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:37:16 +0100 Subject: [PATCH] Page layout tab v2 (#16319) # Introduction Migrating `pageLayoutTab` to the v2 engine - Types and constants - Builder and validate - Runner Introduced a new `StrictSyncableEntity` that enforces that `universalIdentifier` and `applicationId` are defined As these entities are brand new we could enforce this rule already This still requires a migration command to associate the existing entities to custom workspace application instance and define universalIdentifier Handled retro-comp of the migration through a migration as upgrade command fallback --------- Co-authored-by: bosiraphael --- .../hooks/useMetadataErrorHandler.ts | 1 + ...entifierAndApplicationIdToPageLayoutTab.ts | 60 ++++++++ .../entities/page-layout-tab.entity.ts | 7 +- .../page-layout/page-layout.module.ts | 2 + .../__tests__/page-layout-tab.service.spec.ts | 15 ++ .../page-layout-update.service.spec.ts | 4 + .../services/page-layout-tab.service.ts | 11 ++ ...rties-to-compare-and-stringify.constant.ts | 5 + ...metadata-many-to-one-relations.constant.ts | 1 + ...quired-metadata-for-validation.constant.ts | 1 + .../all-flat-entity-types-by-metadata-name.ts | 16 ++ ...layout-tab-editable-properties.constant.ts | 6 + .../flat-page-layout-tab.module.ts | 16 ++ ...-flat-page-layout-tab-map-cache.service.ts | 45 ++++++ .../types/flat-page-layout-tab-maps.type.ts | 5 + .../types/flat-page-layout-tab.type.ts | 17 +++ ...tab-entity-to-flat-page-layout-tab.util.ts | 19 +++ .../types/workspace-cache-key.type.ts | 1 + .../get-page-layout-tab-data-seeds.util.ts | 27 +++- .../core/utils/seed-page-layout-tabs.util.ts | 23 ++- .../dev-seeder/services/dev-seeder.service.ts | 9 +- ...metadata-validation-response-error.util.ts | 1 + ...ce-migration-build-orchestrator.service.ts | 41 +++++ ...igration-page-layout-tab-action-v2.type.ts | 18 +++ ...page-layout-tab-actions-builder.service.ts | 113 ++++++++++++++ .../flat-page-layout-tab-validator.service.ts | 104 +++++++++++++ ...ace-migration-builder-validators.module.ts | 3 + .../workspace-migration-builder-v2.module.ts | 3 + ...-page-layout-tab-action-handler.service.ts | 61 ++++++++ ...-page-layout-tab-action-handler.service.ts | 59 ++++++++ ...-page-layout-tab-action-handler.service.ts | 74 +++++++++ ...migration-runner-action-handlers.module.ts | 7 + .../strict-syncable-entity.interface.ts | 21 +++ ...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 ++ ...ny-view-groups-v2.integration-spec.ts.snap | 2 + ...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 | 6 + ...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 + 56 files changed, 1284 insertions(+), 13 deletions(-) create mode 100644 packages/twenty-server/src/database/typeorm/core/migrations/common/1764854150563-addUniversalIdentifierAndApplicationIdToPageLayoutTab.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/constants/flat-page-layout-tab-editable-properties.constant.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-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-tab-validator.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-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-tab/services/delete-page-layout-tab-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-tab/services/update-page-layout-tab-action-handler.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-sync/interfaces/strict-syncable-entity.interface.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 ec9cb7aff1..0af3e70f65 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,6 +26,7 @@ export const useMetadataErrorHandler = () => { role: t`role`, roleTarget: t`role target`, agent: t`agent`, + pageLayoutTab: t`page layout tab`, } as const satisfies Record; const handleMetadataError = useCallback( diff --git a/packages/twenty-server/src/database/typeorm/core/migrations/common/1764854150563-addUniversalIdentifierAndApplicationIdToPageLayoutTab.ts b/packages/twenty-server/src/database/typeorm/core/migrations/common/1764854150563-addUniversalIdentifierAndApplicationIdToPageLayoutTab.ts new file mode 100644 index 0000000000..91ad28e910 --- /dev/null +++ b/packages/twenty-server/src/database/typeorm/core/migrations/common/1764854150563-addUniversalIdentifierAndApplicationIdToPageLayoutTab.ts @@ -0,0 +1,60 @@ +import { type MigrationInterface, type QueryRunner } from 'typeorm'; + +export class AddUniversalIdentifierAndApplicationIdToPageLayoutTab1764854150563 + implements MigrationInterface +{ + name = 'AddUniversalIdentifierAndApplicationIdToPageLayoutTab1764854150563'; + + public async up(queryRunner: QueryRunner): Promise { + // Add columns as nullable first + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" ADD "universalIdentifier" uuid`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" ADD "applicationId" uuid`, + ); + + // Populate existing rows with universalIdentifier and applicationId + await queryRunner.query( + `UPDATE "core"."pageLayoutTab" + SET "universalIdentifier" = gen_random_uuid(), + "applicationId" = ( + SELECT "workspaceCustomApplicationId" + FROM "core"."workspace" + WHERE "workspace"."id" = "pageLayoutTab"."workspaceId" + ) + WHERE "universalIdentifier" IS NULL OR "applicationId" IS NULL`, + ); + + // Add NOT NULL constraints + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" ALTER COLUMN "universalIdentifier" SET NOT NULL`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" ALTER COLUMN "applicationId" SET NOT NULL`, + ); + + // Add unique index and foreign key + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_3763c4e8f942ff1e24040a13a9" ON "core"."pageLayoutTab" ("workspaceId", "universalIdentifier")`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" ADD CONSTRAINT "FK_4493447c2e4029aa26cabf30460" 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"."pageLayoutTab" DROP CONSTRAINT "FK_4493447c2e4029aa26cabf30460"`, + ); + await queryRunner.query( + `DROP INDEX "core"."IDX_3763c4e8f942ff1e24040a13a9"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" DROP COLUMN "applicationId"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutTab" DROP COLUMN "universalIdentifier"`, + ); + } +} diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts b/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts index 16268785db..d02095de72 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts @@ -14,6 +14,8 @@ import { UpdateDateColumn, } from 'typeorm'; +import { StrictSyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/strict-syncable-entity.interface'; + import { PageLayoutWidgetEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-widget.entity'; import { PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; @@ -25,7 +27,10 @@ import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.ent ['workspaceId', 'pageLayoutId'], { where: '"deletedAt" IS NULL' }, ) -export class PageLayoutTabEntity implements Required { +export class PageLayoutTabEntity + extends StrictSyncableEntity + implements Required +{ @PrimaryGeneratedColumn('uuid') id: string; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/page-layout.module.ts b/packages/twenty-server/src/engine/core-modules/page-layout/page-layout.module.ts index 2921dd7cc1..3b7a86a01d 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/page-layout.module.ts +++ b/packages/twenty-server/src/engine/core-modules/page-layout/page-layout.module.ts @@ -15,6 +15,7 @@ import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/servic import { PageLayoutUpdateService } from 'src/engine/core-modules/page-layout/services/page-layout-update.service'; import { PageLayoutWidgetService } from 'src/engine/core-modules/page-layout/services/page-layout-widget.service'; import { PageLayoutService } from 'src/engine/core-modules/page-layout/services/page-layout.service'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; @@ -24,6 +25,7 @@ import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; PageLayoutEntity, PageLayoutTabEntity, PageLayoutWidgetEntity, + WorkspaceEntity, ]), TwentyORMModule, PermissionsModule, diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts b/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts index e7247c54c4..22450ce82d 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts @@ -3,6 +3,7 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { type Repository } from 'typeorm'; +import { type ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; import { type PageLayoutWidgetEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-widget.entity'; import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; @@ -18,6 +19,7 @@ import { } from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; import { PageLayoutService } from 'src/engine/core-modules/page-layout/services/page-layout.service'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; describe('PageLayoutTabService', () => { let pageLayoutTabService: PageLayoutTabService; @@ -36,6 +38,9 @@ describe('PageLayoutTabService', () => { createdAt: new Date(), updatedAt: new Date(), deletedAt: null, + application: {} as ApplicationEntity, + applicationId: 'application-id', + universalIdentifier: 'universal-identifier', } as PageLayoutTabEntity; const mockWidget = { @@ -71,6 +76,14 @@ describe('PageLayoutTabService', () => { insert: jest.fn(), }, }, + { + provide: getRepositoryToken(WorkspaceEntity), + useValue: { + findOneOrFail: jest.fn().mockResolvedValue({ + workspaceCustomApplicationId: 'application-id', + }), + }, + }, { provide: PageLayoutService, useValue: { @@ -261,6 +274,8 @@ describe('PageLayoutTabService', () => { expect(pageLayoutTabRepository.insert).toHaveBeenCalledWith({ ...pageLayoutTabData, workspaceId, + applicationId: 'application-id', + universalIdentifier: expect.any(String), }); expect(result).toEqual(mockPageLayoutTab); }); diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts b/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts index 83991a0f56..8e85582fb7 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts @@ -2,6 +2,7 @@ import { Test, type TestingModule } from '@nestjs/testing'; import { DataSource, type EntityManager } from 'typeorm'; +import { type ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; import { type UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input'; import { type UpdatePageLayoutWidgetWithIdInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input'; import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; @@ -49,6 +50,9 @@ describe('PageLayoutUpdateService', () => { createdAt: new Date(), updatedAt: new Date(), deletedAt: null, + application: {} as ApplicationEntity, + applicationId: 'application-id', + universalIdentifier: 'universal-identifier', } as PageLayoutTabEntity; const mockWidget = { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts b/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts index 6cd1bbd871..aa66fce9f7 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts +++ b/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts @@ -4,6 +4,7 @@ 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 { CreatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; @@ -18,12 +19,15 @@ import { PageLayoutExceptionCode, } from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; import { PageLayoutService } from 'src/engine/core-modules/page-layout/services/page-layout.service'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; @Injectable() export class PageLayoutTabService { constructor( @InjectRepository(PageLayoutTabEntity) private readonly pageLayoutTabRepository: Repository, + @InjectRepository(WorkspaceEntity) + private readonly workspaceRepository: Repository, private readonly pageLayoutService: PageLayoutService, ) {} @@ -113,11 +117,18 @@ export class PageLayoutTabService { 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, }); return this.findByIdOrThrow( 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 08a84438cf..3d75ac5c42 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 @@ -6,6 +6,7 @@ import { FLAT_AGENT_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat 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_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_ROLE_TARGET_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-role-target/constants/flat-role-target-editable-properties.constant'; import { FLAT_ROLE_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-role/constants/flat-role-editable-properties.constant'; import { FLAT_VIEW_FIELD_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-view-field/constants/flat-view-field-editable-properties.constant'; @@ -111,6 +112,10 @@ export const ALL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY = { 'evaluationInputs', ], }, + pageLayoutTab: { + propertiesToCompare: [...FLAT_PAGE_LAYOUT_TAB_EDITABLE_PROPERTIES], + propertiesToStringify: [], + }, } as const satisfies { [P in AllMetadataName]: OneFlatEntityConfiguration

; }; 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 a79c3895ba..8ddb248683 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 @@ -113,4 +113,5 @@ export const ALL_METADATA_RELATED_METADATA_BY_FOREIGN_KEY = { }, }, agent: {}, + pageLayoutTab: {}, } 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 71f7eb12c1..2bf854c701 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,4 +54,5 @@ export const ALL_METADATA_REQUIRED_METADATA_FOR_VALIDATION = { role: true, }, agent: {}, + pageLayoutTab: {}, } as const satisfies MetadataRequiredForValidation; 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 2f8034ea53..b49cf7dad4 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 @@ -1,3 +1,4 @@ +import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; import { type AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; import { type CronTriggerEntity } from 'src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity'; import { type FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type'; @@ -8,6 +9,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 FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type'; import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type'; import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; @@ -31,6 +33,11 @@ import { type DeleteAgentAction, type UpdateAgentAction, } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service'; +import { + type CreatePageLayoutTabAction, + type DeletePageLayoutTabAction, + type UpdatePageLayoutTabAction, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type'; import { type CreateCronTriggerAction, type DeleteCronTriggerAction, @@ -223,4 +230,13 @@ export type AllFlatEntityTypesByMetadataName = { flatEntity: FlatAgent; entity: AgentEntity; }; + pageLayoutTab: { + actions: { + created: CreatePageLayoutTabAction; + updated: UpdatePageLayoutTabAction; + deleted: DeletePageLayoutTabAction; + }; + flatEntity: FlatPageLayoutTab; + entity: PageLayoutTabEntity; + }; }; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/constants/flat-page-layout-tab-editable-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/constants/flat-page-layout-tab-editable-properties.constant.ts new file mode 100644 index 0000000000..5adda39e65 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/constants/flat-page-layout-tab-editable-properties.constant.ts @@ -0,0 +1,6 @@ +import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type'; + +export const FLAT_PAGE_LAYOUT_TAB_EDITABLE_PROPERTIES = [ + 'title', + 'position', +] as const satisfies (keyof FlatPageLayoutTab)[]; 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 new file mode 100644 index 0000000000..4418a2e4ed --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts @@ -0,0 +1,16 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +import { WorkspaceFlatPageLayoutTabMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service'; +import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([PageLayoutTabEntity]), + WorkspaceManyOrAllFlatEntityMapsCacheModule, + ], + providers: [WorkspaceFlatPageLayoutTabMapCacheService], + exports: [WorkspaceFlatPageLayoutTabMapCacheService], +}) +export class FlatPageLayoutTabModule {} 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 new file mode 100644 index 0000000000..a0f9479d1a --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts @@ -0,0 +1,45 @@ +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 { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +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 { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; +import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; +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('flatPageLayoutTabMaps') +export class WorkspaceFlatPageLayoutTabMapCacheService extends WorkspaceCacheProvider { + constructor( + @InjectRepository(PageLayoutTabEntity) + private readonly pageLayoutTabRepository: Repository, + ) { + super(); + } + + async computeForCache(workspaceId: string): Promise { + const pageLayoutTabs = await this.pageLayoutTabRepository.find({ + where: { workspaceId }, + withDeleted: true, + }); + + const flatPageLayoutTabMaps = createEmptyFlatEntityMaps(); + + for (const pageLayoutTabEntity of pageLayoutTabs) { + const flatPageLayoutTab = + transformPageLayoutTabEntityToFlatPageLayoutTab(pageLayoutTabEntity); + + addFlatEntityToFlatEntityMapsThroughMutationOrThrow({ + flatEntity: flatPageLayoutTab, + flatEntityMapsToMutate: flatPageLayoutTabMaps, + }); + } + + return flatPageLayoutTabMaps; + } +} diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type.ts new file mode 100644 index 0000000000..3b6abce324 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab-maps.type.ts @@ -0,0 +1,5 @@ +import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; + +import { type FlatPageLayoutTab } from './flat-page-layout-tab.type'; + +export type FlatPageLayoutTabMaps = FlatEntityMaps; 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 new file mode 100644 index 0000000000..7f0ee6b20c --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts @@ -0,0 +1,17 @@ +import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +import { type FlatEntityFrom } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; + +export const pageLayoutTabEntityRelationProperties = [ + 'workspace', + 'pageLayout', + 'widgets', + 'application', +] as const; + +export type PageLayoutTabEntityRelationProperties = + (typeof pageLayoutTabEntityRelationProperties)[number]; + +export type FlatPageLayoutTab = FlatEntityFrom< + PageLayoutTabEntity, + PageLayoutTabEntityRelationProperties +>; 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 new file mode 100644 index 0000000000..322dbd03e4 --- /dev/null +++ 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 @@ -0,0 +1,19 @@ +import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type'; + +export const transformPageLayoutTabEntityToFlatPageLayoutTab = ( + pageLayoutTabEntity: PageLayoutTabEntity, +): FlatPageLayoutTab => { + return { + createdAt: pageLayoutTabEntity.createdAt, + deletedAt: pageLayoutTabEntity.deletedAt, + updatedAt: pageLayoutTabEntity.updatedAt, + id: pageLayoutTabEntity.id, + title: pageLayoutTabEntity.title, + position: pageLayoutTabEntity.position, + pageLayoutId: pageLayoutTabEntity.pageLayoutId, + workspaceId: pageLayoutTabEntity.workspaceId, + universalIdentifier: pageLayoutTabEntity.universalIdentifier, + applicationId: pageLayoutTabEntity.applicationId, + }; +}; 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 7db0b1d852..c984f0f5b5 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', + flatPageLayoutTabMaps: 'flat-maps:flatPageLayoutTabMaps', } as const satisfies Record; type AdditionalCacheDataMap = { diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-tab-data-seeds.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-tab-data-seeds.util.ts index 31af03c1b3..cd5f7c4cd1 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-tab-data-seeds.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-tab-data-seeds.util.ts @@ -1,3 +1,6 @@ +import { v4 } from 'uuid'; + +import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type'; import { PAGE_LAYOUT_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-seeds.constant'; import { PAGE_LAYOUT_TAB_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-tab-seeds.constant'; import { generateSeedId } from 'src/engine/workspace-manager/dev-seeder/core/utils/generate-seed-id.util'; @@ -8,11 +11,15 @@ type PageLayoutTabSeed = { position: number; pageLayoutId: string; workspaceId: string; -}; +} & Pick; -export const getPageLayoutTabDataSeeds = ( - workspaceId: string, -): PageLayoutTabSeed[] => [ +export const getPageLayoutTabDataSeeds = ({ + applicationId, + workspaceId, +}: { + workspaceId: string; + applicationId: string; +}): PageLayoutTabSeed[] => [ { id: generateSeedId(workspaceId, PAGE_LAYOUT_TAB_SEEDS.SALES_OVERVIEW), title: 'Overview', @@ -22,6 +29,8 @@ export const getPageLayoutTabDataSeeds = ( PAGE_LAYOUT_SEEDS.SALES_DASHBOARD, ), workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_TAB_SEEDS.SALES_DETAILS), @@ -32,6 +41,8 @@ export const getPageLayoutTabDataSeeds = ( PAGE_LAYOUT_SEEDS.SALES_DASHBOARD, ), workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_TAB_SEEDS.CUSTOMER_OVERVIEW), @@ -42,6 +53,8 @@ export const getPageLayoutTabDataSeeds = ( PAGE_LAYOUT_SEEDS.CUSTOMER_DASHBOARD, ), workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_TAB_SEEDS.CUSTOMER_ANALYTICS), @@ -52,6 +65,8 @@ export const getPageLayoutTabDataSeeds = ( PAGE_LAYOUT_SEEDS.CUSTOMER_DASHBOARD, ), workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_TAB_SEEDS.TEAM_OVERVIEW), @@ -59,6 +74,8 @@ export const getPageLayoutTabDataSeeds = ( position: 0, pageLayoutId: generateSeedId(workspaceId, PAGE_LAYOUT_SEEDS.TEAM_DASHBOARD), workspaceId, + universalIdentifier: v4(), + applicationId, }, { id: generateSeedId(workspaceId, PAGE_LAYOUT_TAB_SEEDS.TEAM_METRICS), @@ -66,5 +83,7 @@ export const getPageLayoutTabDataSeeds = ( position: 1, pageLayoutId: generateSeedId(workspaceId, PAGE_LAYOUT_SEEDS.TEAM_DASHBOARD), workspaceId, + universalIdentifier: v4(), + applicationId, }, ]; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-tabs.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-tabs.util.ts index 6cdeabf1e9..0d3fe84c57 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-tabs.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-tabs.util.ts @@ -2,12 +2,21 @@ import { type DataSource } from 'typeorm'; import { getPageLayoutTabDataSeeds } from 'src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-tab-data-seeds.util'; -export const seedPageLayoutTabs = async ( - dataSource: DataSource, - schemaName: string, - workspaceId: string, -) => { - const pageLayoutTabs = getPageLayoutTabDataSeeds(workspaceId); +export const seedPageLayoutTabs = async ({ + applicationId, + dataSource, + schemaName, + workspaceId, +}: { + dataSource: DataSource; + schemaName: string; + applicationId: string; + workspaceId: string; +}) => { + const pageLayoutTabs = getPageLayoutTabDataSeeds({ + workspaceId, + applicationId, + }); if (pageLayoutTabs.length > 0) { await dataSource @@ -19,6 +28,8 @@ export const seedPageLayoutTabs = async ( 'position', 'pageLayoutId', 'workspaceId', + 'universalIdentifier', + 'applicationId', ]) .values(pageLayoutTabs) .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 4342b5abcb..39627d3a01 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 @@ -86,7 +86,7 @@ export class DevSeederService { ); } - const { twentyStandardFlatApplication } = + const { twentyStandardFlatApplication, workspaceCustomFlatApplication } = await this.applicationService.findWorkspaceTwentyStandardAndCustomApplicationOrThrow( { workspaceId, @@ -116,7 +116,12 @@ export class DevSeederService { }); await seedPageLayouts(this.coreDataSource, 'core', workspaceId); - await seedPageLayoutTabs(this.coreDataSource, 'core', workspaceId); + await seedPageLayoutTabs({ + applicationId: workspaceCustomFlatApplication.id, + workspaceId, + dataSource: this.coreDataSource, + schemaName: 'core', + }); const objectMetadataRepository = this.coreDataSource.getRepository(ObjectMetadataEntity); 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 3e8cb2d1dd..df06d53009 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 @@ -32,6 +32,7 @@ export const fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseE invalidRole: 0, invalidRoleTarget: 0, totalErrors: 0, + invalidPageLayoutTab: 0, }, errors: translatedReport, }; 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 38b09a4182..c30615e727 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 @@ -15,6 +15,7 @@ import { } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; import { aggregateOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report.util'; import { WorkspaceMigrationV2AgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-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 { WorkspaceMigrationV2CronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service'; import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service'; import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service'; @@ -46,6 +47,7 @@ export class WorkspaceMigrationBuildOrchestratorService { private readonly workspaceMigrationV2FieldActionsBuilderService: WorkspaceMigrationV2FieldActionsBuilderService, private readonly workspaceMigrationV2RoleActionsBuilderService: WorkspaceMigrationV2RoleActionsBuilderService, private readonly workspaceMigrationV2AgentActionsBuilderService: WorkspaceMigrationV2AgentActionsBuilderService, + private readonly workspaceMigrationV2PageLayoutTabActionsBuilderService: WorkspaceMigrationV2PageLayoutTabActionsBuilderService, ) {} private setupOptimisticCache({ @@ -134,6 +136,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatRoleMaps, flatRoleTargetMaps, flatAgentMaps, + flatPageLayoutTabMaps, } = fromToAllFlatEntityMaps; if (isDefined(flatObjectMetadataMaps)) { @@ -608,6 +611,38 @@ export class WorkspaceMigrationBuildOrchestratorService { } } + if (isDefined(flatPageLayoutTabMaps)) { + const { from: fromFlatPageLayoutTabMaps, to: toFlatPageLayoutTabMaps } = + flatPageLayoutTabMaps; + + const pageLayoutTabResult = + this.workspaceMigrationV2PageLayoutTabActionsBuilderService.validateAndBuild( + { + from: fromFlatPageLayoutTabMaps, + to: toFlatPageLayoutTabMaps, + buildOptions, + dependencyOptimisticFlatEntityMaps: undefined, + workspaceId, + }, + ); + + this.mergeFlatEntityMapsAndRelatedFlatEntityMapsInAllFlatEntityMapsThroughMutation( + { + allFlatEntityMaps: optimisticAllFlatEntityMaps, + flatEntityMapsAndRelatedFlatEntityMaps: + pageLayoutTabResult.optimisticFlatEntityMapsAndRelatedFlatEntityMaps, + }, + ); + + if (pageLayoutTabResult.status === 'fail') { + orchestratorFailureReport.pageLayoutTab.push( + ...pageLayoutTabResult.errors, + ); + } else { + orchestratorActionsReport.pageLayoutTab = pageLayoutTabResult.actions; + } + } + const allErrors = Object.values(orchestratorFailureReport); if (allErrors.some((report) => report.length > 0)) { @@ -702,6 +737,12 @@ export class WorkspaceMigrationBuildOrchestratorService { ...aggregatedOrchestratorActionsReport.agent.created, ...aggregatedOrchestratorActionsReport.agent.updated, /// + + // Page layout tabs + ...aggregatedOrchestratorActionsReport.pageLayoutTab.deleted, + ...aggregatedOrchestratorActionsReport.pageLayoutTab.created, + ...aggregatedOrchestratorActionsReport.pageLayoutTab.updated, + /// ], workspaceId, }, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts new file mode 100644 index 0000000000..caf66ed272 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts @@ -0,0 +1,18 @@ +import { type FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type'; +import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type'; + +export type UpdatePageLayoutTabAction = { + type: 'update_page_layout_tab'; + flatEntityId: string; + flatEntityUpdates: FlatEntityPropertiesUpdates<'pageLayoutTab'>; +}; + +export type CreatePageLayoutTabAction = { + type: 'create_page_layout_tab'; + flatEntity: FlatPageLayoutTab; +}; + +export type DeletePageLayoutTabAction = { + type: 'delete_page_layout_tab'; + flatEntityId: string; +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service.ts new file mode 100644 index 0000000000..19af3153d8 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service.ts @@ -0,0 +1,113 @@ +import { Injectable } from '@nestjs/common'; + +import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; + +import { UpdatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-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 { FlatPageLayoutTabValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service'; + +@Injectable() +export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< + typeof ALL_METADATA_NAME.pageLayoutTab +> { + constructor( + private readonly flatPageLayoutTabValidatorService: FlatPageLayoutTabValidatorService, + ) { + super(ALL_METADATA_NAME.pageLayoutTab); + } + + protected validateFlatEntityCreation( + args: FlatEntityValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayoutTab, + 'created' + > { + const validationResult = + this.flatPageLayoutTabValidatorService.validateFlatPageLayoutTabCreation( + args, + ); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityToValidate: flatPageLayoutTabToValidate } = args; + + return { + status: 'success', + action: { + type: 'create_page_layout_tab', + flatEntity: flatPageLayoutTabToValidate, + }, + }; + } + + protected validateFlatEntityDeletion( + args: FlatEntityValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayoutTab, + 'deleted' + > { + const validationResult = + this.flatPageLayoutTabValidatorService.validateFlatPageLayoutTabDeletion( + args, + ); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityToValidate: flatPageLayoutTabToValidate } = args; + + return { + status: 'success', + action: { + type: 'delete_page_layout_tab', + flatEntityId: flatPageLayoutTabToValidate.id, + }, + }; + } + + protected validateFlatEntityUpdate( + args: FlatEntityUpdateValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutTab + >, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayoutTab, + 'updated' + > { + const validationResult = + this.flatPageLayoutTabValidatorService.validateFlatPageLayoutTabUpdate( + args, + ); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityId, flatEntityUpdates } = args; + + const updatePageLayoutTabAction: UpdatePageLayoutTabAction = { + type: 'update_page_layout_tab', + flatEntityId, + flatEntityUpdates, + }; + + return { + status: 'success', + action: updatePageLayoutTabAction, + }; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service.ts new file mode 100644 index 0000000000..24f76c4f61 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-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 FlatPageLayoutTab } from 'src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.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_TAB_EXCEPTION_CODE = { + PAGE_LAYOUT_TAB_NOT_FOUND: 'PAGE_LAYOUT_TAB_NOT_FOUND', +} as const; + +@Injectable() +export class FlatPageLayoutTabValidatorService { + public validateFlatPageLayoutTabCreation({ + flatEntityToValidate: flatPageLayoutTab, + }: FlatEntityValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutTab + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'create_page_layout_tab', + errors: [], + flatEntityMinimalInformation: { + id: flatPageLayoutTab.id, + title: flatPageLayoutTab.title, + }, + }; + + return validationResult; + } + + public validateFlatPageLayoutTabDeletion({ + flatEntityToValidate, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutTabMaps: optimisticFlatPageLayoutTabMaps, + }, + }: FlatEntityValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutTab + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'delete_page_layout_tab', + errors: [], + flatEntityMinimalInformation: { + id: flatEntityToValidate.id, + title: flatEntityToValidate.title, + }, + }; + + const existingPageLayoutTab = findFlatEntityByIdInFlatEntityMaps({ + flatEntityId: flatEntityToValidate.id, + flatEntityMaps: optimisticFlatPageLayoutTabMaps, + }); + + if (!isDefined(existingPageLayoutTab)) { + validationResult.errors.push({ + code: PAGE_LAYOUT_TAB_EXCEPTION_CODE.PAGE_LAYOUT_TAB_NOT_FOUND, + message: t`Page layout tab not found`, + userFriendlyMessage: msg`Page layout tab not found`, + }); + + return validationResult; + } + + return validationResult; + } + + public validateFlatPageLayoutTabUpdate({ + flatEntityId, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutTabMaps: optimisticFlatPageLayoutTabMaps, + }, + }: FlatEntityUpdateValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutTab + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'update_page_layout_tab', + errors: [], + flatEntityMinimalInformation: { + id: flatEntityId, + }, + }; + + const fromFlatPageLayoutTab = findFlatEntityByIdInFlatEntityMaps({ + flatEntityId, + flatEntityMaps: optimisticFlatPageLayoutTabMaps, + }); + + if (!isDefined(fromFlatPageLayoutTab)) { + validationResult.errors.push({ + code: PAGE_LAYOUT_TAB_EXCEPTION_CODE.PAGE_LAYOUT_TAB_NOT_FOUND, + message: t`Page layout tab not found`, + userFriendlyMessage: msg`Page layout tab 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 076e27af13..ae957b638b 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 { FlatPageLayoutTabValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-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'; @@ -35,6 +36,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace FlatRoleValidatorService, FlatRoleTargetValidatorService, FlatAgentValidatorService, + FlatPageLayoutTabValidatorService, ], exports: [ FlatViewValidatorService, @@ -52,6 +54,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace FlatRoleValidatorService, FlatRoleTargetValidatorService, FlatAgentValidatorService, + FlatPageLayoutTabValidatorService, ], }) export class WorkspaceMigrationBuilderValidatorsModule {} 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 795a99b376..dcc4a4110e 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 @@ -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 { WorkspaceMigrationV2AgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-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 { WorkspaceMigrationV2CronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service'; import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service'; import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service'; @@ -36,6 +37,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace- WorkspaceMigrationV2RoleActionsBuilderService, WorkspaceMigrationV2RoleTargetActionsBuilderService, WorkspaceMigrationV2AgentActionsBuilderService, + WorkspaceMigrationV2PageLayoutTabActionsBuilderService, ], exports: [ WorkspaceMigrationV2ViewActionsBuilderService, @@ -52,6 +54,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace- WorkspaceMigrationV2RoleActionsBuilderService, WorkspaceMigrationV2RoleTargetActionsBuilderService, WorkspaceMigrationV2AgentActionsBuilderService, + WorkspaceMigrationV2PageLayoutTabActionsBuilderService, FlatFieldMetadataTypeValidatorService, ], }) diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts new file mode 100644 index 0000000000..a21ae116e2 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts @@ -0,0 +1,61 @@ +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 { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +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 { CreatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-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 CreatePageLayoutTabActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'create_page_layout_tab', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutTabMaps } = allFlatEntityMaps; + const { flatEntity } = action; + + const updatedFlatPageLayoutTabMaps = addFlatEntityToFlatEntityMapsOrThrow({ + flatEntity, + flatEntityMaps: flatPageLayoutTabMaps, + }); + + return { + flatPageLayoutTabMaps: updatedFlatPageLayoutTabMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { flatEntity } = action; + + const pageLayoutTabRepository = + queryRunner.manager.getRepository( + PageLayoutTabEntity, + ); + + await pageLayoutTabRepository.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-tab/services/delete-page-layout-tab-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts new file mode 100644 index 0000000000..1e8ccc7df4 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-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 { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +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 { DeletePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-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 DeletePageLayoutTabActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'delete_page_layout_tab', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutTabMaps } = allFlatEntityMaps; + const { flatEntityId } = action; + + const updatedFlatPageLayoutTabMaps = + deleteFlatEntityFromFlatEntityMapsOrThrow({ + entityToDeleteId: flatEntityId, + flatEntityMaps: flatPageLayoutTabMaps, + }); + + return { + flatPageLayoutTabMaps: updatedFlatPageLayoutTabMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { flatEntityId } = action; + + const pageLayoutTabRepository = + queryRunner.manager.getRepository( + PageLayoutTabEntity, + ); + + await pageLayoutTabRepository.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-tab/services/update-page-layout-tab-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts new file mode 100644 index 0000000000..af9c79fb9d --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts @@ -0,0 +1,74 @@ +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 { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +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 { UpdatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-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 UpdatePageLayoutTabActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'update_page_layout_tab', +) { + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutTabMaps } = allFlatEntityMaps; + const { flatEntityId, flatEntityUpdates } = action; + + const existingPageLayoutTab = findFlatEntityByIdInFlatEntityMapsOrThrow({ + flatEntityId, + flatEntityMaps: flatPageLayoutTabMaps, + }); + + const updatedPageLayoutTab = { + ...existingPageLayoutTab, + ...fromFlatEntityPropertiesUpdatesToPartialFlatEntity({ + updates: flatEntityUpdates, + }), + }; + + const updatedFlatPageLayoutTabMaps = + replaceFlatEntityInFlatEntityMapsOrThrow({ + flatEntity: updatedPageLayoutTab, + flatEntityMaps: flatPageLayoutTabMaps, + }); + + return { + flatPageLayoutTabMaps: updatedFlatPageLayoutTabMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { flatEntityId, flatEntityUpdates } = action; + + const pageLayoutTabRepository = + queryRunner.manager.getRepository( + PageLayoutTabEntity, + ); + + await pageLayoutTabRepository.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 3a9f069dfd..1da9a61018 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 { CreatePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service'; +import { DeletePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service'; +import { UpdatePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-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'; @@ -100,6 +103,10 @@ import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/wor CreateAgentActionHandlerService, UpdateAgentActionHandlerService, DeleteAgentActionHandlerService, + + CreatePageLayoutTabActionHandlerService, + UpdatePageLayoutTabActionHandlerService, + DeletePageLayoutTabActionHandlerService, ], }) export class WorkspaceSchemaMigrationRunnerActionHandlersModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync/interfaces/strict-syncable-entity.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync/interfaces/strict-syncable-entity.interface.ts new file mode 100644 index 0000000000..7c7f62fbf7 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync/interfaces/strict-syncable-entity.interface.ts @@ -0,0 +1,21 @@ +import { Column, Index, JoinColumn, ManyToOne, Relation } from 'typeorm'; + +import type { ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; + +@Index(['workspaceId', 'universalIdentifier'], { + unique: true, +}) +export abstract class StrictSyncableEntity { + @Column({ nullable: false, type: 'uuid' }) + universalIdentifier: string; + + @Column({ nullable: false, type: 'uuid' }) + applicationId: string; + + @ManyToOne('ApplicationEntity', { + onDelete: 'CASCADE', + nullable: false, + }) + @JoinColumn({ name: 'applicationId' }) + application: Relation; +} 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 76a2d48009..4b952d4497 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -82,6 +83,7 @@ exports[`View Field Resolver - Failing Create Many Operations - v2 should accumu "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 c0159ddb79..b4680e0f39 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -45,6 +46,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 Should fail to crea "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -73,6 +75,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -107,6 +110,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -135,6 +139,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -169,6 +174,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 da90c23709..f1045b11d9 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -45,6 +46,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -73,6 +75,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -107,6 +110,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -135,6 +139,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -167,6 +172,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -195,6 +201,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -229,6 +236,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -257,6 +265,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -291,6 +300,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-group/__snapshots__/failing-create-many-view-groups-v2.integration-spec.ts.snap b/packages/twenty-server/test/integration/graphql/suites/view/view-group/__snapshots__/failing-create-many-view-groups-v2.integration-spec.ts.snap index d9c96d1bc1..152fb8c8c8 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-group/__snapshots__/failing-create-many-view-groups-v2.integration-spec.ts.snap +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-group/__snapshots__/failing-create-many-view-groups-v2.integration-spec.ts.snap @@ -11,6 +11,7 @@ exports[`View Group Resolver - Failing Create Many Operations - v2 should accumu "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -82,6 +83,7 @@ exports[`View Group Resolver - Failing Create Many Operations - v2 should accumu "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 55eea40247..1125a5a47f 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -44,6 +45,7 @@ exports[`Agent creation should fail when computed name already exists 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -88,6 +90,7 @@ exports[`Agent creation should fail when label is empty string 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -105,6 +108,7 @@ exports[`Agent creation should fail when label is empty string 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -163,6 +167,7 @@ exports[`Agent creation should fail when modelId is empty string 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -180,6 +185,7 @@ exports[`Agent creation should fail when modelId is empty string 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -238,6 +244,7 @@ exports[`Agent creation should fail when prompt is empty string 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -255,6 +262,7 @@ exports[`Agent creation should fail when prompt is empty string 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -313,6 +321,7 @@ exports[`Agent creation should fail when responseFormat has invalid type 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -330,6 +339,7 @@ exports[`Agent creation should fail when responseFormat has invalid type 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -374,6 +384,7 @@ exports[`Agent creation should fail when responseFormat type is json but schema "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -391,6 +402,7 @@ exports[`Agent creation should fail when responseFormat type is json but schema "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -435,6 +447,7 @@ exports[`Agent creation should fail when responseFormat type is text but schema "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -452,6 +465,7 @@ exports[`Agent creation should fail when responseFormat type is text but schema "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 6966b79fd7..ca36d3a281 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -44,6 +45,7 @@ exports[`Agent deletion should fail should fail when attempting to delete a stan "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 2709357335..2a74d13f53 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -43,6 +44,7 @@ exports[`Agent update should fail should fail when attempting to update a standa "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -108,6 +110,7 @@ exports[`Agent update should fail when settings null required properties 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -125,6 +128,7 @@ exports[`Agent update should fail when settings null required properties 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -168,6 +172,7 @@ exports[`Agent update should fail when updating label to one that already exists "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -185,6 +190,7 @@ exports[`Agent update should fail when updating label to one that already exists "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -228,6 +234,7 @@ exports[`Agent update should fail when updating responseFormat type to json with "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -245,6 +252,7 @@ exports[`Agent update should fail when updating responseFormat type to json with "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -288,6 +296,7 @@ exports[`Agent update should fail when updating responseFormat type to text with "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -305,6 +314,7 @@ exports[`Agent update should fail when updating responseFormat type to text with "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -348,6 +358,7 @@ exports[`Agent update should fail when updating responseFormat with invalid type "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -365,6 +376,7 @@ exports[`Agent update should fail when updating responseFormat with invalid type "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -408,6 +420,7 @@ exports[`Agent update should fail when updating with empty label 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -425,6 +438,7 @@ exports[`Agent update should fail when updating with empty label 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -468,6 +482,7 @@ exports[`Agent update should fail when updating with empty modelId 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -485,6 +500,7 @@ exports[`Agent update should fail when updating with empty modelId 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -528,6 +544,7 @@ exports[`Agent update should fail when updating with empty prompt 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -545,6 +562,7 @@ exports[`Agent update should fail when updating with empty prompt 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 615d87bd2f..68ea2e00e1 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`createOne FieldMetadataService name/label sync should return an error w "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 78e6bae2b2..0ab84894ea 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -47,6 +48,7 @@ exports[`Failing create field metadata tests suite should fail to create NUMERIC "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -95,6 +97,7 @@ exports[`Failing create field metadata tests suite should fail to create POSITIO ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -112,6 +115,7 @@ exports[`Failing create field metadata tests suite should fail to create POSITIO "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -153,6 +157,7 @@ exports[`Failing create field metadata tests suite should fail to create TS_VECT "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -170,6 +175,7 @@ exports[`Failing create field metadata tests suite should fail to create TS_VECT "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 fbb21c8ee7..9ececb91a8 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`updateOne failing update should not update a field name if it is not sy "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -99,6 +101,7 @@ exports[`updateOne failing update should throw if the field name is not availabl ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -116,6 +119,7 @@ exports[`updateOne failing update should throw if the field name is not availabl "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 0d9f4be6d8..954f54fb52 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -47,6 +48,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -95,6 +97,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -112,6 +115,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -159,6 +163,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -176,6 +181,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -238,6 +244,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -255,6 +262,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -317,6 +325,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -334,6 +343,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -396,6 +406,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -413,6 +424,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -475,6 +487,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -492,6 +505,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -539,6 +553,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -556,6 +571,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -604,6 +620,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -621,6 +638,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -673,6 +691,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -690,6 +709,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -737,6 +757,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -754,6 +775,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -802,6 +824,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -819,6 +842,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -866,6 +890,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -883,6 +908,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -945,6 +971,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -962,6 +989,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1009,6 +1037,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1026,6 +1055,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1073,6 +1103,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1090,6 +1121,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1138,6 +1170,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1155,6 +1188,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1203,6 +1237,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1220,6 +1255,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1267,6 +1303,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1284,6 +1321,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1332,6 +1370,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1349,6 +1388,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1396,6 +1436,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1413,6 +1454,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1465,6 +1507,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1482,6 +1525,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1529,6 +1573,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1546,6 +1591,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1594,6 +1640,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1611,6 +1658,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1658,6 +1706,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1675,6 +1724,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1727,6 +1777,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1744,6 +1795,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1791,6 +1843,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1808,6 +1861,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1856,6 +1910,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1873,6 +1928,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1920,6 +1976,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1937,6 +1994,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1989,6 +2047,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2006,6 +2065,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2053,6 +2113,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2070,6 +2131,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2117,6 +2179,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2134,6 +2197,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2186,6 +2250,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2203,6 +2268,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2250,6 +2316,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2267,6 +2334,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2314,6 +2382,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2331,6 +2400,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2379,6 +2449,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2396,6 +2467,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2443,6 +2515,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2460,6 +2533,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2512,6 +2586,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2529,6 +2604,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2576,6 +2652,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2593,6 +2670,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2640,6 +2718,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2657,6 +2736,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2719,6 +2799,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2736,6 +2817,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2798,6 +2880,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2815,6 +2898,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2877,6 +2961,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2894,6 +2979,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2956,6 +3042,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2973,6 +3060,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3021,6 +3109,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3038,6 +3127,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3090,6 +3180,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3107,6 +3198,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3154,6 +3246,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3171,6 +3264,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3219,6 +3313,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3236,6 +3331,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3283,6 +3379,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3300,6 +3397,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3347,6 +3445,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3364,6 +3463,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3411,6 +3511,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3428,6 +3529,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3476,6 +3578,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3493,6 +3596,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3540,6 +3644,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3557,6 +3662,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3605,6 +3711,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3622,6 +3729,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3669,6 +3777,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3686,6 +3795,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3738,6 +3848,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3755,6 +3866,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3802,6 +3914,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3819,6 +3932,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3867,6 +3981,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3884,6 +3999,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3931,6 +4047,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3948,6 +4065,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4000,6 +4118,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4017,6 +4136,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4064,6 +4184,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4081,6 +4202,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4129,6 +4251,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4146,6 +4269,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4193,6 +4317,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4210,6 +4335,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4262,6 +4388,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4279,6 +4406,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4326,6 +4454,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4343,6 +4472,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4390,6 +4520,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4407,6 +4538,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4459,6 +4591,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4476,6 +4609,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4523,6 +4657,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4540,6 +4675,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4587,6 +4723,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4604,6 +4741,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4652,6 +4790,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4669,6 +4808,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 0935f6b827..a89b01358c 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -47,6 +48,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -95,6 +97,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -112,6 +115,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -159,6 +163,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -176,6 +181,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -238,6 +244,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -255,6 +262,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -317,6 +325,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -334,6 +343,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -396,6 +406,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -413,6 +424,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -475,6 +487,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -492,6 +505,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -539,6 +553,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -556,6 +571,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -604,6 +620,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -621,6 +638,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -673,6 +691,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -690,6 +709,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -737,6 +757,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -754,6 +775,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -802,6 +824,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -819,6 +842,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -866,6 +890,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -883,6 +908,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -945,6 +971,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -962,6 +989,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1009,6 +1037,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1026,6 +1055,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1073,6 +1103,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1090,6 +1121,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1138,6 +1170,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1155,6 +1188,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1203,6 +1237,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1220,6 +1255,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1267,6 +1303,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1284,6 +1321,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1332,6 +1370,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1349,6 +1388,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1396,6 +1436,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1413,6 +1454,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1465,6 +1507,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1482,6 +1525,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1529,6 +1573,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1546,6 +1591,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1593,6 +1639,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1610,6 +1657,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1662,6 +1710,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1679,6 +1728,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1726,6 +1776,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1743,6 +1794,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1791,6 +1843,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1808,6 +1861,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1855,6 +1909,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1872,6 +1927,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1924,6 +1980,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1941,6 +1998,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1988,6 +2046,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2005,6 +2064,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2052,6 +2112,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2069,6 +2130,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2121,6 +2183,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2138,6 +2201,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2185,6 +2249,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2202,6 +2267,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2249,6 +2315,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2266,6 +2333,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2313,6 +2381,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2330,6 +2399,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2377,6 +2447,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2394,6 +2465,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2446,6 +2518,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2463,6 +2536,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2510,6 +2584,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2527,6 +2602,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2574,6 +2650,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2591,6 +2668,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2653,6 +2731,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2670,6 +2749,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2732,6 +2812,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2749,6 +2830,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2811,6 +2893,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2828,6 +2911,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2890,6 +2974,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2907,6 +2992,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2955,6 +3041,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2972,6 +3059,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3024,6 +3112,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3041,6 +3130,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3088,6 +3178,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3105,6 +3196,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3153,6 +3245,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3170,6 +3263,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3217,6 +3311,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3234,6 +3329,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3281,6 +3377,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3298,6 +3395,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3345,6 +3443,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3362,6 +3461,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3410,6 +3510,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3427,6 +3528,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3474,6 +3576,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3491,6 +3594,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3539,6 +3643,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3556,6 +3661,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3603,6 +3709,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3620,6 +3727,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3672,6 +3780,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3689,6 +3798,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3736,6 +3846,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3753,6 +3864,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3800,6 +3912,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3817,6 +3930,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3869,6 +3983,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3886,6 +4001,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3933,6 +4049,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3950,6 +4067,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3998,6 +4116,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4015,6 +4134,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4062,6 +4182,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4079,6 +4200,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4131,6 +4253,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4148,6 +4271,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4195,6 +4319,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4212,6 +4337,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4259,6 +4385,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4276,6 +4403,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4328,6 +4456,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4345,6 +4474,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4392,6 +4522,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4409,6 +4540,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4456,6 +4588,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4473,6 +4606,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4520,6 +4654,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4537,6 +4672,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 d5c0cbefa7..b03995cb3e 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -89,6 +90,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -166,6 +168,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -183,6 +186,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 2f48fcae34..e3a9d7db26 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -94,6 +95,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -140,6 +142,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -157,6 +160,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -197,6 +201,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -214,6 +219,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -254,6 +260,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -271,6 +278,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -339,6 +347,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -356,6 +365,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -418,6 +428,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -435,6 +446,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -497,6 +509,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -514,6 +527,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -582,6 +596,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -599,6 +614,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -647,6 +663,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -664,6 +681,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -712,6 +730,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -729,6 +748,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -776,6 +796,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -793,6 +814,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -833,6 +855,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -850,6 +873,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -890,6 +914,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -907,6 +932,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -947,6 +973,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -964,6 +991,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1007,6 +1035,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1024,6 +1053,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1065,6 +1095,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1082,6 +1113,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1122,6 +1154,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1139,6 +1172,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 ee769c6a29..d1302484aa 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -92,6 +94,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -109,6 +112,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -161,6 +165,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -178,6 +183,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -224,6 +230,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -241,6 +248,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -293,6 +301,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -310,6 +319,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -356,6 +366,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -373,6 +384,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -419,6 +431,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -436,6 +449,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -481,6 +495,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -498,6 +513,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -576,6 +592,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -593,6 +610,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -639,6 +657,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -656,6 +675,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -719,6 +739,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -736,6 +757,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -800,6 +822,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -817,6 +840,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -887,6 +911,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -904,6 +929,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -968,6 +994,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -985,6 +1012,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1055,6 +1083,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1072,6 +1101,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1120,6 +1150,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1137,6 +1168,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1185,6 +1217,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1202,6 +1235,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1249,6 +1283,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1266,6 +1301,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1346,6 +1382,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1363,6 +1400,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1411,6 +1449,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "type": "create_field", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1428,6 +1467,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1475,6 +1515,7 @@ exports[`Field metadata relation creation should fail should fail when creating ], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1492,6 +1533,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1554,6 +1596,7 @@ exports[`Field metadata relation creation should fail should fail when creating }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1571,6 +1614,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1649,6 +1693,7 @@ exports[`Field metadata relation creation should fail should fail when creating }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1666,6 +1711,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1744,6 +1790,7 @@ exports[`Field metadata relation creation should fail should fail when creating }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1761,6 +1808,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 d7ff250727..36ca4ec144 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -53,6 +54,7 @@ exports[`Field metadata relation update should fail relation when name is not in "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 a779bc6c1a..630c7ba478 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -44,6 +45,7 @@ exports[`failing createOne unique field metadata should fail for composite type "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -88,6 +90,7 @@ exports[`failing createOne unique field metadata should fail when field has cust }, ], "objectMetadata": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -105,6 +108,7 @@ exports[`failing createOne unique field metadata should fail when field has cust "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 41dd852585..c60a7bc140 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 @@ -338,6 +338,7 @@ exports[`Object metadata creation should fail v2 when labelPlural contains only "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -602,6 +603,7 @@ exports[`Object metadata creation should fail v2 when labelPlural contains only "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -957,6 +959,7 @@ exports[`Object metadata creation should fail v2 when labelPlural exceeds maximu "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1221,6 +1224,7 @@ exports[`Object metadata creation should fail v2 when labelPlural exceeds maximu "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1587,6 +1591,7 @@ exports[`Object metadata creation should fail v2 when labelSingular contains onl "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1851,6 +1856,7 @@ exports[`Object metadata creation should fail v2 when labelSingular contains onl "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2206,6 +2212,7 @@ exports[`Object metadata creation should fail v2 when labelSingular exceeds maxi "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2470,6 +2477,7 @@ exports[`Object metadata creation should fail v2 when labelSingular exceeds maxi "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2837,6 +2845,7 @@ exports[`Object metadata creation should fail v2 when labels are identical 1`] = "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3101,6 +3110,7 @@ exports[`Object metadata creation should fail v2 when labels are identical 1`] = "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3457,6 +3467,7 @@ exports[`Object metadata creation should fail v2 when labels with whitespaces re "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3721,6 +3732,7 @@ exports[`Object metadata creation should fail v2 when labels with whitespaces re "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4106,6 +4118,7 @@ exports[`Object metadata creation should fail v2 when name exceeds maximum lengt "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4370,6 +4383,7 @@ exports[`Object metadata creation should fail v2 when name exceeds maximum lengt "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4725,6 +4739,7 @@ exports[`Object metadata creation should fail v2 when namePlural has invalid cha "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4989,6 +5004,7 @@ exports[`Object metadata creation should fail v2 when namePlural has invalid cha "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -5344,6 +5360,7 @@ exports[`Object metadata creation should fail v2 when namePlural is a reserved k "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -5608,6 +5625,7 @@ exports[`Object metadata creation should fail v2 when namePlural is a reserved k "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -5979,6 +5997,7 @@ exports[`Object metadata creation should fail v2 when namePlural is not camelCas "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -6243,6 +6262,7 @@ exports[`Object metadata creation should fail v2 when namePlural is not camelCas "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -6663,6 +6683,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -6927,6 +6948,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -7347,6 +7369,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -7611,6 +7634,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -7996,6 +8020,7 @@ exports[`Object metadata creation should fail v2 when nameSingular has invalid c "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -8260,6 +8285,7 @@ exports[`Object metadata creation should fail v2 when nameSingular has invalid c "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -8645,6 +8671,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is a reserved "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -8909,6 +8936,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is a reserved "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -9340,6 +9368,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is not camelC "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -9604,6 +9633,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is not camelC "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -9960,6 +9990,7 @@ exports[`Object metadata creation should fail v2 when names are identical 1`] = "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -10224,6 +10255,7 @@ exports[`Object metadata creation should fail v2 when names are identical 1`] = "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -10580,6 +10612,7 @@ exports[`Object metadata creation should fail v2 when names with whitespaces res "type": "create_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -10844,6 +10877,7 @@ exports[`Object metadata creation should fail v2 when names with whitespaces res "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 b25588637d..62b705ab77 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 not a TEXT o "type": "update_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -63,6 +64,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a TEXT o "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -110,6 +112,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a known "type": "update_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -149,6 +152,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a known "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -213,6 +217,7 @@ exports[`Object metadata update should fail when labelIdentifier is null 1`] = ` "type": "update_object", }, ], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -230,6 +235,7 @@ exports[`Object metadata update should fail when labelIdentifier is null 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 795c5f77d4..cdb245086a 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": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -44,6 +45,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -72,6 +74,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -105,6 +108,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -133,6 +137,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -166,6 +171,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -194,6 +200,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but mul "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -227,6 +234,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but mul "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -255,6 +263,7 @@ exports[`Role creation should fail when label already exists 1`] = ` "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -288,6 +297,7 @@ exports[`Role creation should fail when label already exists 1`] = ` "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 e1468add9f..0aeff71d9c 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": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -55,6 +56,7 @@ exports[`Role update should fail updating role with existing write permissions s "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -83,6 +85,7 @@ exports[`Role update should fail when updating a non-editable system role 1`] = "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -115,6 +118,7 @@ exports[`Role update should fail when updating a non-editable system role 1`] = "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -143,6 +147,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -175,6 +180,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -203,6 +209,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -235,6 +242,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -263,6 +271,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -295,6 +304,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -323,6 +333,7 @@ exports[`Role update should fail when updating label to one that already exists "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -355,6 +366,7 @@ exports[`Role update should fail when updating label to one that already exists "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -383,6 +395,7 @@ exports[`Role update should fail when updating to enable write permissions witho "fieldMetadata": [], "index": [], "objectMetadata": [], + "pageLayoutTab": [], "role": [ { "errors": [ @@ -415,6 +428,7 @@ exports[`Role update should fail when updating to enable write permissions witho "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 43438590cf..339bb61d4f 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": [], + "pageLayoutTab": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -44,6 +45,7 @@ exports[`View Group REST API POST /metadata/viewGroups should fail to create vie "invalidFieldMetadata": 0, "invalidIndex": 0, "invalidObjectMetadata": 0, + "invalidPageLayoutTab": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 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 cd9a319778..45d616b771 100644 --- a/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts +++ b/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts @@ -13,4 +13,5 @@ export const ALL_METADATA_NAME = { role: 'role', roleTarget: 'roleTarget', agent: 'agent', + pageLayoutTab: 'pageLayoutTab', } as const;