From 077be7644c2b94d0a83e73e3312cec0950695031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Bosi?= <71827178+bosiraphael@users.noreply.github.com> Date: Fri, 5 Dec 2025 14:04:06 +0100 Subject: [PATCH] Migrate page layout widget to v2 of the API (#16323) --- .../hooks/useMetadataErrorHandler.ts | 1 + ...ifierAndApplicationIdToPageLayoutWidget.ts | 61 ++++++++ .../engine/core-modules/core-engine.module.ts | 2 +- .../page-layout/page-layout.module.ts | 50 ------- ...rties-to-compare-and-stringify.constant.ts | 8 + ...metadata-many-to-one-relations.constant.ts | 1 + ...quired-metadata-for-validation.constant.ts | 1 + ...ny-or-all-flat-entity-maps-cache.module.ts | 7 +- .../all-flat-entity-types-by-metadata-name.ts | 28 +++- .../flat-page-layout-tab.module.ts | 4 +- ...-flat-page-layout-tab-map-cache.service.ts | 4 +- .../types/flat-page-layout-tab.type.ts | 2 +- ...tab-entity-to-flat-page-layout-tab.util.ts | 2 +- ...out-widget-editable-properties.constant.ts | 9 ++ ...get-entity-relation-properties.constant.ts | 8 + .../flat-page-layout-widget.module.ts | 12 ++ ...at-page-layout-widget-map-cache.service.ts | 52 +++++++ .../flat-page-layout-widget-maps.type.ts | 4 + .../types/flat-page-layout-widget.type.ts | 21 +++ ...-flat-page-layout-widget-to-create.util.ts | 44 ++++++ ...o-flat-page-layout-widget-or-throw.util.ts | 41 +++++ ...o-flat-page-layout-widget-or-throw.util.ts | 38 +++++ ...-entity-to-flat-page-layout-widget.util.ts | 22 +++ ...e-layout-widget-to-update-or-throw.util.ts | 55 +++++++ .../widget-grid-max-columns.constant.ts | 0 .../widget-grid-max-rows.constant.ts | 0 .../controllers/page-layout-tab.controller.ts | 12 +- .../page-layout-widget.controller.ts | 22 +-- .../controllers/page-layout.controller.ts | 12 +- .../dtos/aggregate-chart-configuration.dto.ts | 2 +- .../dtos/bar-chart-configuration.dto.ts | 10 +- .../dtos/gauge-chart-configuration.dto.ts | 2 +- .../dtos/iframe-configuration.dto.ts | 0 .../inputs/create-page-layout-tab.input.ts | 0 .../inputs/create-page-layout-widget.input.ts | 4 +- .../dtos/inputs/create-page-layout.input.ts | 2 +- .../inputs/delete-page-layout-widget.input.ts | 13 ++ .../destroy-page-layout-widget.input.ts | 13 ++ .../dtos/inputs/grid-position.input.ts | 2 +- ...date-page-layout-tab-with-widgets.input.ts | 2 +- .../inputs/update-page-layout-tab.input.ts | 0 ...update-page-layout-widget-with-id.input.ts | 4 +- .../inputs/update-page-layout-widget.input.ts | 4 +- .../update-page-layout-with-tabs.input.ts | 4 +- .../dtos/inputs/update-page-layout.input.ts | 2 +- .../dtos/line-chart-configuration.dto.ts | 8 +- .../page-layout/dtos/page-layout-tab.dto.ts | 2 +- .../dtos/page-layout-widget.dto.ts | 4 +- .../page-layout/dtos/page-layout.dto.ts | 4 +- .../dtos/pie-chart-configuration.dto.ts | 6 +- .../page-layout/dtos/rich-text-v2-body.dto.ts | 0 .../standalone-rich-text-configuration.dto.ts | 2 +- .../dtos/widget-configuration.interface.ts | 18 +-- .../entities/page-layout-tab.entity.ts | 4 +- .../entities/page-layout-widget.entity.ts | 11 +- .../entities/page-layout.entity.ts | 4 +- .../enums/axis-name-display.enum.ts | 0 .../enums/bar-chart-group-mode.enum.ts | 0 .../enums/date-granularity.enum.ts | 0 .../page-layout/enums/graph-order-by.enum.ts | 0 .../page-layout/enums/graph-type.enum.ts | 0 .../enums/page-layout-type.enum.ts | 0 .../enums/widget-configuration-type.enum.ts | 0 .../page-layout/enums/widget-type.enum.ts | 0 .../exceptions/page-layout-tab.exception.ts | 0 .../page-layout-widget.exception.ts | 0 .../exceptions/page-layout.exception.ts | 0 .../page-layout-rest-api-exception.filter.ts | 2 +- ...ge-layout-tab-rest-api-exception.filter.ts | 2 +- ...layout-widget-rest-api-exception.filter.ts | 2 +- .../page-layout/page-layout.module.ts | 56 +++++++ .../resolvers/page-layout-tab.resolver.ts | 10 +- .../resolvers/page-layout-widget.resolver.ts | 14 +- .../resolvers/page-layout.resolver.ts | 14 +- .../__tests__/page-layout-tab.service.spec.ts | 16 +- .../page-layout-update.service.spec.ts | 22 +-- .../page-layout-widget.service.spec.ts | 24 ++- .../__tests__/page-layout.service.spec.ts | 10 +- .../services/page-layout-tab.service.ts | 12 +- .../services/page-layout-update.service.ts | 20 +-- .../services/page-layout-widget.service.ts | 33 +++-- .../services/page-layout.service.ts | 8 +- .../page-layout/types/grid-position.type.ts | 0 ...ransform-widget-configuration.util.spec.ts | 4 +- ...validate-widget-grid-position.util.spec.ts | 8 +- ...widget-configuration-discriminator.util.ts | 6 +- ...yout-graphql-api-exception-handler.util.ts | 6 +- ...age-layout-graphql-api-exception.filter.ts | 8 +- ...and-transform-widget-configuration.util.ts | 22 +-- .../validate-widget-grid-position.util.ts | 6 +- .../types/workspace-cache-key.type.ts | 1 + .../utils/get-page-layout-data-seeds.util.ts | 2 +- ...t-page-layout-widget-data-seeds-v2.util.ts | 4 +- .../get-page-layout-widget-data-seeds.util.ts | 6 +- .../utils/seed-page-layout-widgets.util.ts | 9 +- .../dev-seeder/services/dev-seeder.service.ts | 1 + ...plication-all-flat-entity-maps.constant.ts | 5 + ...metadata-validation-response-error.util.ts | 1 + ...ation-page-layout-widget-action-v2.type.ts | 18 +++ ...e-layout-widget-actions-builder.service.ts | 111 ++++++++++++++ ...at-page-layout-widget-validator.service.ts | 129 ++++++++++++++++ ...ace-migration-builder-validators.module.ts | 5 +- .../workspace-migration-builder-v2.module.ts | 5 +- ...-page-layout-tab-action-handler.service.ts | 2 +- ...-page-layout-tab-action-handler.service.ts | 2 +- ...-page-layout-tab-action-handler.service.ts | 2 +- ...ge-layout-widget-action-handler.service.ts | 62 ++++++++ ...ge-layout-widget-action-handler.service.ts | 59 ++++++++ ...ge-layout-widget-action-handler.service.ts | 81 ++++++++++ ...migration-runner-action-handlers.module.ts | 13 +- .../dashboard-create-one.pre-query.hook.ts | 6 +- .../dashboard-query-hook.module.ts | 2 +- ...idget-configuration-test-data.constants.ts | 6 +- .../page-layout-resolver.integration-spec.ts | 4 +- ...ge-layout-tab-resolver.integration-spec.ts | 4 +- ...-with-tabs-and-widgets.integration-spec.ts | 6 +- ...layout-widget-resolver.integration-spec.ts | 8 +- ...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 + ...eate-page-layout-operation-factory.util.ts | 2 +- ...-page-layout-tab-operation-factory.util.ts | 2 +- ...ge-layout-widget-operation-factory.util.ts | 2 +- .../graphql/utils/page-layout-graphql.util.ts | 4 +- .../utils/page-layout-tab-graphql.util.ts | 2 +- .../utils/page-layout-widget-graphql.util.ts | 4 +- ...date-page-layout-operation-factory.util.ts | 2 +- ...-page-layout-tab-operation-factory.util.ts | 2 +- ...ge-layout-widget-operation-factory.util.ts | 2 +- ...layout-with-tabs-operation-factory.util.ts | 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 | 8 + ...ing-role-creation.integration-spec.ts.snap | 10 ++ ...iling-role-update.integration-spec.ts.snap | 14 ++ .../view-group.integration-spec.ts.snap | 2 + .../page-layout-tab.integration-spec.ts | 4 +- .../page-layout-widget.integration-spec.ts | 6 +- .../suites/page-layout.integration-spec.ts | 4 +- .../rest/utils/page-layout-rest-api.util.ts | 4 +- .../utils/page-layout-tab-rest-api.util.ts | 2 +- .../utils/page-layout-widget-rest-api.util.ts | 4 +- .../utils/page-layout-tab-test.util.ts | 2 +- .../utils/page-layout-test.util.ts | 4 +- .../utils/page-layout-widget-test.util.ts | 2 +- .../metadata/all-metadata-name.constant.ts | 1 + 159 files changed, 1760 insertions(+), 308 deletions(-) create mode 100644 packages/twenty-server/src/database/typeorm/core/migrations/common/1764858276847-addUniversalIdentifierAndApplicationIdToPageLayoutWidget.ts delete mode 100644 packages/twenty-server/src/engine/core-modules/page-layout/page-layout.module.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-editable-properties.constant.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/page-layout-widget-entity-relation-properties.constant.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/flat-page-layout-widget.module.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-create-page-layout-widget-input-to-flat-page-layout-widget-to-create.util.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-delete-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-destroy-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-entity-to-flat-page-layout-widget.util.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-update-page-layout-widget-input-to-flat-page-layout-widget-to-update-or-throw.util.ts rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/constants/widget-grid-max-columns.constant.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/constants/widget-grid-max-rows.constant.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/controllers/page-layout-tab.controller.ts (82%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/controllers/page-layout-widget.controller.ts (81%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/controllers/page-layout.controller.ts (79%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/aggregate-chart-configuration.dto.ts (95%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/bar-chart-configuration.dto.ts (88%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/gauge-chart-configuration.dto.ts (95%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/iframe-configuration.dto.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/create-page-layout-tab.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/create-page-layout-widget.input.ts (85%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/create-page-layout.input.ts (86%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/delete-page-layout-widget.input.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/destroy-page-layout-widget.input.ts rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/grid-position.input.ts (82%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts (84%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/update-page-layout-tab.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts (84%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/update-page-layout-widget.input.ts (83%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts (83%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/inputs/update-page-layout.input.ts (85%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/line-chart-configuration.dto.ts (90%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/page-layout-tab.dto.ts (87%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/page-layout-widget.dto.ts (87%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/page-layout.dto.ts (81%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/pie-chart-configuration.dto.ts (89%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/rich-text-v2-body.dto.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/standalone-rich-text-configuration.dto.ts (78%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/dtos/widget-configuration.interface.ts (65%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/entities/page-layout-tab.entity.ts (88%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/entities/page-layout-widget.entity.ts (78%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/entities/page-layout.entity.ts (89%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/axis-name-display.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/bar-chart-group-mode.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/date-granularity.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/graph-order-by.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/graph-type.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/page-layout-type.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/widget-configuration-type.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/enums/widget-type.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/exceptions/page-layout-tab.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/exceptions/page-layout-widget.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/exceptions/page-layout.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/filters/page-layout-rest-api-exception.filter.ts (93%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts (93%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts (93%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/resolvers/page-layout-tab.resolver.ts (86%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/resolvers/page-layout-widget.resolver.ts (83%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/resolvers/page-layout.resolver.ts (84%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/__tests__/page-layout-tab.service.spec.ts (95%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/__tests__/page-layout-update.service.spec.ts (94%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/__tests__/page-layout-widget.service.spec.ts (94%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/__tests__/page-layout.service.spec.ts (96%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/page-layout-tab.service.ts (94%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/page-layout-update.service.ts (85%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/page-layout-widget.service.ts (88%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/services/page-layout.service.ts (94%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/types/grid-position.type.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts (98%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts (90%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/inject-widget-configuration-discriminator.util.ts (75%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts (87%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/page-layout-graphql-api-exception.filter.ts (55%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/validate-and-transform-widget-configuration.util.ts (80%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/page-layout/utils/validate-widget-grid-position.util.ts (86%) create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-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-widget-validator.service.ts create mode 100644 packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-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-widget/services/delete-page-layout-widget-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-widget/services/update-page-layout-widget-action-handler.service.ts diff --git a/packages/twenty-front/src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts b/packages/twenty-front/src/modules/metadata-error-handler/hooks/useMetadataErrorHandler.ts index 0af3e70f65..aa01e7c849 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`, + pageLayoutWidget: t`page layout widget`, pageLayoutTab: t`page layout tab`, } as const satisfies Record; diff --git a/packages/twenty-server/src/database/typeorm/core/migrations/common/1764858276847-addUniversalIdentifierAndApplicationIdToPageLayoutWidget.ts b/packages/twenty-server/src/database/typeorm/core/migrations/common/1764858276847-addUniversalIdentifierAndApplicationIdToPageLayoutWidget.ts new file mode 100644 index 0000000000..3a24e629e3 --- /dev/null +++ b/packages/twenty-server/src/database/typeorm/core/migrations/common/1764858276847-addUniversalIdentifierAndApplicationIdToPageLayoutWidget.ts @@ -0,0 +1,61 @@ +import { type MigrationInterface, type QueryRunner } from 'typeorm'; + +export class AddUniversalIdentifierAndApplicationIdToPageLayoutWidget1764858276847 + implements MigrationInterface +{ + name = + 'AddUniversalIdentifierAndApplicationIdToPageLayoutWidget1764858276847'; + + public async up(queryRunner: QueryRunner): Promise { + // Add columns as nullable first + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" ADD "universalIdentifier" uuid`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" ADD "applicationId" uuid`, + ); + + // Populate existing rows with universalIdentifier and applicationId + await queryRunner.query( + `UPDATE "core"."pageLayoutWidget" + SET "universalIdentifier" = gen_random_uuid(), + "applicationId" = ( + SELECT "workspaceCustomApplicationId" + FROM "core"."workspace" + WHERE "workspace"."id" = "pageLayoutWidget"."workspaceId" + ) + WHERE "universalIdentifier" IS NULL OR "applicationId" IS NULL`, + ); + + // Add NOT NULL constraints + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" ALTER COLUMN "universalIdentifier" SET NOT NULL`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" ALTER COLUMN "applicationId" SET NOT NULL`, + ); + + // Add unique index and foreign key + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_2a33a0e7e44c393ca7bb578dae" ON "core"."pageLayoutWidget" ("workspaceId", "universalIdentifier")`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" ADD CONSTRAINT "FK_fb84d310b4cfe5916ced6fc3e2a" 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"."pageLayoutWidget" DROP CONSTRAINT "FK_fb84d310b4cfe5916ced6fc3e2a"`, + ); + await queryRunner.query( + `DROP INDEX "core"."IDX_2a33a0e7e44c393ca7bb578dae"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" DROP COLUMN "applicationId"`, + ); + await queryRunner.query( + `ALTER TABLE "core"."pageLayoutWidget" DROP COLUMN "universalIdentifier"`, + ); + } +} diff --git a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts index 0d13aa2806..5e154c6ae0 100644 --- a/packages/twenty-server/src/engine/core-modules/core-engine.module.ts +++ b/packages/twenty-server/src/engine/core-modules/core-engine.module.ts @@ -37,7 +37,7 @@ import { MessageQueueModule } from 'src/engine/core-modules/message-queue/messag import { messageQueueModuleFactory } from 'src/engine/core-modules/message-queue/message-queue.module-factory'; import { TimelineMessagingModule } from 'src/engine/core-modules/messaging/timeline-messaging.module'; import { OpenApiModule } from 'src/engine/core-modules/open-api/open-api.module'; -import { PageLayoutModule } from 'src/engine/core-modules/page-layout/page-layout.module'; +import { PageLayoutModule } from 'src/engine/metadata-modules/page-layout/page-layout.module'; import { PostgresCredentialsModule } from 'src/engine/core-modules/postgres-credentials/postgres-credentials.module'; import { PublicDomainModule } from 'src/engine/core-modules/public-domain/public-domain.module'; import { RedisClientModule } from 'src/engine/core-modules/redis-client/redis-client.module'; 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 deleted file mode 100644 index 3b7a86a01d..0000000000 --- a/packages/twenty-server/src/engine/core-modules/page-layout/page-layout.module.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; - -import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { PageLayoutTabController } from 'src/engine/core-modules/page-layout/controllers/page-layout-tab.controller'; -import { PageLayoutWidgetController } from 'src/engine/core-modules/page-layout/controllers/page-layout-widget.controller'; -import { PageLayoutController } from 'src/engine/core-modules/page-layout/controllers/page-layout.controller'; -import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; -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 { PageLayoutTabResolver } from 'src/engine/core-modules/page-layout/resolvers/page-layout-tab.resolver'; -import { PageLayoutWidgetResolver } from 'src/engine/core-modules/page-layout/resolvers/page-layout-widget.resolver'; -import { PageLayoutResolver } from 'src/engine/core-modules/page-layout/resolvers/page-layout.resolver'; -import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; -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'; - -@Module({ - imports: [ - TypeOrmModule.forFeature([ - PageLayoutEntity, - PageLayoutTabEntity, - PageLayoutWidgetEntity, - WorkspaceEntity, - ]), - TwentyORMModule, - PermissionsModule, - FeatureFlagModule, - ], - controllers: [ - PageLayoutController, - PageLayoutTabController, - PageLayoutWidgetController, - ], - providers: [ - PageLayoutService, - PageLayoutTabService, - PageLayoutWidgetService, - PageLayoutResolver, - PageLayoutTabResolver, - PageLayoutWidgetResolver, - PageLayoutUpdateService, - ], - exports: [PageLayoutService, PageLayoutTabService, PageLayoutWidgetService], -}) -export class PageLayoutModule {} 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 3d75ac5c42..4549aba614 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 @@ -7,6 +7,7 @@ import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity 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_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-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'; @@ -112,6 +113,13 @@ export const ALL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY = { 'evaluationInputs', ], }, + pageLayoutWidget: { + propertiesToCompare: [ + ...FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES, + 'deletedAt', + ], + propertiesToStringify: ['gridPosition', 'configuration'], + }, pageLayoutTab: { propertiesToCompare: [...FLAT_PAGE_LAYOUT_TAB_EDITABLE_PROPERTIES], propertiesToStringify: [], 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 8ddb248683..6996393332 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,5 +113,6 @@ export const ALL_METADATA_RELATED_METADATA_BY_FOREIGN_KEY = { }, }, agent: {}, + pageLayoutWidget: {}, 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 2bf854c701..5322172b90 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,5 +54,6 @@ export const ALL_METADATA_REQUIRED_METADATA_FOR_VALIDATION = { role: true, }, agent: {}, + pageLayoutWidget: {}, pageLayoutTab: {}, } as const satisfies MetadataRequiredForValidation; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts index d5d418a42b..8fa6560492 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module.ts @@ -1,11 +1,12 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; import { WorkspaceFlatFieldMetadataMapCacheService } from 'src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service'; import { WorkspaceFlatIndexMapCacheService } from 'src/engine/metadata-modules/flat-index-metadata/services/workspace-flat-index-map-cache.service'; import { WorkspaceFlatObjectMetadataMapCacheService } from 'src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service'; +import { WorkspaceFlatPageLayoutWidgetMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service'; import { WorkspaceFlatViewFieldMapCacheService } from 'src/engine/metadata-modules/flat-view-field/services/workspace-flat-view-field-map-cache.service'; import { WorkspaceFlatViewFilterMapCacheService } from 'src/engine/metadata-modules/flat-view-filter/services/workspace-flat-view-filter-map-cache.service'; import { WorkspaceFlatViewGroupMapCacheService } from 'src/engine/metadata-modules/flat-view-group/services/workspace-flat-view-group-map-cache.service'; @@ -13,6 +14,7 @@ import { WorkspaceFlatViewMapCacheService } from 'src/engine/metadata-modules/fl import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; @@ -31,6 +33,7 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache IndexFieldMetadataEntity, FieldMetadataEntity, ObjectMetadataEntity, + PageLayoutWidgetEntity, ]), ], providers: [ @@ -42,6 +45,7 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache WorkspaceFlatIndexMapCacheService, WorkspaceFlatFieldMetadataMapCacheService, WorkspaceFlatViewGroupMapCacheService, + WorkspaceFlatPageLayoutWidgetMapCacheService, ], exports: [ WorkspaceManyOrAllFlatEntityMapsCacheService, @@ -52,6 +56,7 @@ import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache WorkspaceFlatIndexMapCacheService, WorkspaceFlatFieldMetadataMapCacheService, WorkspaceFlatViewGroupMapCacheService, + WorkspaceFlatPageLayoutWidgetMapCacheService, ], }) export class WorkspaceManyOrAllFlatEntityMapsCacheModule {} 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 b49cf7dad4..6565132f78 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,4 +1,3 @@ -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'; @@ -10,6 +9,7 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-m 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 FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type'; 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'; @@ -18,6 +18,8 @@ import { type FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/ import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { type RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; import { type RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { type RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity'; @@ -33,11 +35,6 @@ 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, @@ -62,6 +59,16 @@ import { type DeleteObjectAction, type UpdateObjectAction, } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +import { + type 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 CreatePageLayoutWidgetAction, + type DeletePageLayoutWidgetAction, + type UpdatePageLayoutWidgetAction, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type'; import { type CreateRoleTargetAction, type DeleteRoleTargetAction, @@ -230,6 +237,15 @@ export type AllFlatEntityTypesByMetadataName = { flatEntity: FlatAgent; entity: AgentEntity; }; + pageLayoutWidget: { + actions: { + created: CreatePageLayoutWidgetAction; + updated: UpdatePageLayoutWidgetAction; + deleted: DeletePageLayoutWidgetAction; + }; + flatEntity: FlatPageLayoutWidget; + entity: PageLayoutWidgetEntity; + }; pageLayoutTab: { actions: { created: CreatePageLayoutTabAction; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts index 4418a2e4ed..21e6472ea3 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/flat-page-layout-tab.module.ts @@ -1,9 +1,9 @@ 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'; +import { WorkspaceFlatPageLayoutTabMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; @Module({ imports: [ diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts index a0f9479d1a..194a5f4e5c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts @@ -5,10 +5,10 @@ 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 { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; 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 { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; 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'; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts index 7f0ee6b20c..96856f2fbe 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/types/flat-page-layout-tab.type.ts @@ -1,5 +1,5 @@ -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'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; export const pageLayoutTabEntityRelationProperties = [ 'workspace', diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts index 322dbd03e4..c2f5702d2e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/utils/transform-page-layout-tab-entity-to-flat-page-layout-tab.util.ts @@ -1,5 +1,5 @@ -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'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; export const transformPageLayoutTabEntityToFlatPageLayoutTab = ( pageLayoutTabEntity: PageLayoutTabEntity, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-editable-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-editable-properties.constant.ts new file mode 100644 index 0000000000..e3c5bc0439 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-editable-properties.constant.ts @@ -0,0 +1,9 @@ +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; + +export const FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES = [ + 'title', + 'type', + 'objectMetadataId', + 'gridPosition', + 'configuration', +] as const satisfies (keyof FlatPageLayoutWidget)[]; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/page-layout-widget-entity-relation-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/page-layout-widget-entity-relation-properties.constant.ts new file mode 100644 index 0000000000..8f0be2fa5a --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/constants/page-layout-widget-entity-relation-properties.constant.ts @@ -0,0 +1,8 @@ +import { type PageLayoutWidgetEntityRelationProperties } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; + +export const PAGE_LAYOUT_WIDGET_ENTITY_RELATION_PROPERTIES = [ + 'workspace', + 'pageLayoutTab', + 'objectMetadata', + 'application', +] as const satisfies PageLayoutWidgetEntityRelationProperties[]; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/flat-page-layout-widget.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/flat-page-layout-widget.module.ts new file mode 100644 index 0000000000..223c032d5a --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/flat-page-layout-widget.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { WorkspaceFlatPageLayoutWidgetMapCacheService } from 'src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([PageLayoutWidgetEntity])], + providers: [WorkspaceFlatPageLayoutWidgetMapCacheService], + exports: [WorkspaceFlatPageLayoutWidgetMapCacheService], +}) +export class FlatPageLayoutWidgetModule {} diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts new file mode 100644 index 0000000000..219ccf66b2 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts @@ -0,0 +1,52 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; + +import { Repository } from 'typeorm'; + +import { WorkspaceCacheProvider } from 'src/engine/workspace-cache/interfaces/workspace-cache-provider.service'; + +import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; +import { FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type'; +import { fromPageLayoutWidgetEntityToFlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-entity-to-flat-page-layout-widget.util'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; + +@Injectable() +@WorkspaceCache('flatPageLayoutWidgetMaps') +export class WorkspaceFlatPageLayoutWidgetMapCacheService extends WorkspaceCacheProvider { + constructor( + @InjectRepository(PageLayoutWidgetEntity) + private readonly pageLayoutWidgetRepository: Repository, + ) { + super(); + } + + async computeForCache( + workspaceId: string, + ): Promise { + const existingPageLayoutWidgets = + await this.pageLayoutWidgetRepository.find({ + where: { + workspaceId, + }, + withDeleted: true, + }); + + const flatPageLayoutWidgetMaps = createEmptyFlatEntityMaps(); + + for (const pageLayoutWidgetEntity of existingPageLayoutWidgets) { + const flatPageLayoutWidget = + fromPageLayoutWidgetEntityToFlatPageLayoutWidget( + pageLayoutWidgetEntity, + ); + + addFlatEntityToFlatEntityMapsThroughMutationOrThrow({ + flatEntity: flatPageLayoutWidget, + flatEntityMapsToMutate: flatPageLayoutWidgetMaps, + }); + } + + return flatPageLayoutWidgetMaps; + } +} diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type.ts new file mode 100644 index 0000000000..86656cdbbb --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type.ts @@ -0,0 +1,4 @@ +import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; + +export type FlatPageLayoutWidgetMaps = FlatEntityMaps; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type.ts new file mode 100644 index 0000000000..1d184096b6 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type.ts @@ -0,0 +1,21 @@ +import { type ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; +import { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; +import { type FlatEntityFrom } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; +import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { type ExtractRecordTypeOrmRelationProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-relation-properties.type'; + +export type PageLayoutWidgetEntityRelationProperties = + ExtractRecordTypeOrmRelationProperties< + PageLayoutWidgetEntity, + | PageLayoutTabEntity + | ObjectMetadataEntity + | WorkspaceEntity + | ApplicationEntity + >; + +export type FlatPageLayoutWidget = FlatEntityFrom< + PageLayoutWidgetEntity, + PageLayoutWidgetEntityRelationProperties +>; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-create-page-layout-widget-input-to-flat-page-layout-widget-to-create.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-create-page-layout-widget-input-to-flat-page-layout-widget-to-create.util.ts new file mode 100644 index 0000000000..22c3175061 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-create-page-layout-widget-input-to-flat-page-layout-widget-to-create.util.ts @@ -0,0 +1,44 @@ +import { trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties } from 'twenty-shared/utils'; +import { v4 } from 'uuid'; + +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; +import { type CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; + +export type FromCreatePageLayoutWidgetInputToFlatPageLayoutWidgetToCreateArgs = + { + createPageLayoutWidgetInput: CreatePageLayoutWidgetInput; + workspaceId: string; + workspaceCustomApplicationId: string; + }; + +export const fromCreatePageLayoutWidgetInputToFlatPageLayoutWidgetToCreate = ({ + createPageLayoutWidgetInput: rawCreatePageLayoutWidgetInput, + workspaceId, + workspaceCustomApplicationId, +}: FromCreatePageLayoutWidgetInputToFlatPageLayoutWidgetToCreateArgs): FlatPageLayoutWidget => { + const { pageLayoutTabId, ...createPageLayoutWidgetInput } = + trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties( + rawCreatePageLayoutWidgetInput, + ['pageLayoutTabId'], + ); + + const createdAt = new Date(); + const pageLayoutWidgetId = v4(); + + return { + id: pageLayoutWidgetId, + pageLayoutTabId, + workspaceId, + createdAt, + updatedAt: createdAt, + deletedAt: null, + universalIdentifier: pageLayoutWidgetId, + title: createPageLayoutWidgetInput.title, + type: createPageLayoutWidgetInput.type ?? WidgetType.VIEW, + objectMetadataId: createPageLayoutWidgetInput.objectMetadataId ?? null, + gridPosition: createPageLayoutWidgetInput.gridPosition, + configuration: createPageLayoutWidgetInput.configuration ?? null, + applicationId: workspaceCustomApplicationId, + }; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-delete-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-delete-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts new file mode 100644 index 0000000000..73af83ef34 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-delete-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts @@ -0,0 +1,41 @@ +import { t } from '@lingui/core/macro'; +import { + extractAndSanitizeObjectStringFields, + isDefined, +} from 'twenty-shared/utils'; + +import { type FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type'; +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; +import { type DeletePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/delete-page-layout-widget.input'; +import { + PageLayoutWidgetException, + PageLayoutWidgetExceptionCode, +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; + +export const fromDeletePageLayoutWidgetInputToFlatPageLayoutWidgetOrThrow = ({ + deletePageLayoutWidgetInput: rawDeletePageLayoutWidgetInput, + flatPageLayoutWidgetMaps, +}: { + deletePageLayoutWidgetInput: DeletePageLayoutWidgetInput; + flatPageLayoutWidgetMaps: FlatPageLayoutWidgetMaps; +}): FlatPageLayoutWidget => { + const { id: pageLayoutWidgetId } = extractAndSanitizeObjectStringFields( + rawDeletePageLayoutWidgetInput, + ['id'], + ); + + const existingFlatPageLayoutWidgetToDelete = + flatPageLayoutWidgetMaps.byId[pageLayoutWidgetId]; + + if (!isDefined(existingFlatPageLayoutWidgetToDelete)) { + throw new PageLayoutWidgetException( + t`Page layout widget to delete not found`, + PageLayoutWidgetExceptionCode.PAGE_LAYOUT_WIDGET_NOT_FOUND, + ); + } + + return { + ...existingFlatPageLayoutWidgetToDelete, + deletedAt: new Date(), + }; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-destroy-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-destroy-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts new file mode 100644 index 0000000000..211d56a02e --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-destroy-page-layout-widget-input-to-flat-page-layout-widget-or-throw.util.ts @@ -0,0 +1,38 @@ +import { t } from '@lingui/core/macro'; +import { + extractAndSanitizeObjectStringFields, + isDefined, +} from 'twenty-shared/utils'; + +import { type FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type'; +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; +import { type DestroyPageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/destroy-page-layout-widget.input'; +import { + PageLayoutWidgetException, + PageLayoutWidgetExceptionCode, +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; + +export const fromDestroyPageLayoutWidgetInputToFlatPageLayoutWidgetOrThrow = ({ + destroyPageLayoutWidgetInput, + flatPageLayoutWidgetMaps, +}: { + destroyPageLayoutWidgetInput: DestroyPageLayoutWidgetInput; + flatPageLayoutWidgetMaps: FlatPageLayoutWidgetMaps; +}): FlatPageLayoutWidget => { + const { id: pageLayoutWidgetId } = extractAndSanitizeObjectStringFields( + destroyPageLayoutWidgetInput, + ['id'], + ); + + const existingFlatPageLayoutWidgetToDestroy = + flatPageLayoutWidgetMaps.byId[pageLayoutWidgetId]; + + if (!isDefined(existingFlatPageLayoutWidgetToDestroy)) { + throw new PageLayoutWidgetException( + t`Page layout widget to destroy not found`, + PageLayoutWidgetExceptionCode.PAGE_LAYOUT_WIDGET_NOT_FOUND, + ); + } + + return existingFlatPageLayoutWidgetToDestroy; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-entity-to-flat-page-layout-widget.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-entity-to-flat-page-layout-widget.util.ts new file mode 100644 index 0000000000..00bfa9dbaa --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-entity-to-flat-page-layout-widget.util.ts @@ -0,0 +1,22 @@ +import { removePropertiesFromRecord } from 'twenty-shared/utils'; + +import { PAGE_LAYOUT_WIDGET_ENTITY_RELATION_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout-widget/constants/page-layout-widget-entity-relation-properties.constant'; +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; + +export const fromPageLayoutWidgetEntityToFlatPageLayoutWidget = ( + pageLayoutWidgetEntity: PageLayoutWidgetEntity, +): FlatPageLayoutWidget => { + const pageLayoutWidgetEntityWithoutRelations = removePropertiesFromRecord( + pageLayoutWidgetEntity, + PAGE_LAYOUT_WIDGET_ENTITY_RELATION_PROPERTIES, + ); + + return { + ...pageLayoutWidgetEntityWithoutRelations, + universalIdentifier: + pageLayoutWidgetEntityWithoutRelations.universalIdentifier ?? + pageLayoutWidgetEntityWithoutRelations.id, + applicationId: pageLayoutWidgetEntityWithoutRelations.applicationId ?? null, + }; +}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-update-page-layout-widget-input-to-flat-page-layout-widget-to-update-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-update-page-layout-widget-input-to-flat-page-layout-widget-to-update-or-throw.util.ts new file mode 100644 index 0000000000..02941e94e7 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/utils/from-update-page-layout-widget-input-to-flat-page-layout-widget-to-update-or-throw.util.ts @@ -0,0 +1,55 @@ +import { t } from '@lingui/core/macro'; +import { + extractAndSanitizeObjectStringFields, + isDefined, +} from 'twenty-shared/utils'; + +import { FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-page-layout-widget/constants/flat-page-layout-widget-editable-properties.constant'; +import { type FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget-maps.type'; +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; +import { type UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; +import { + PageLayoutWidgetException, + PageLayoutWidgetExceptionCode, +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { mergeUpdateInExistingRecord } from 'src/utils/merge-update-in-existing-record.util'; + +export type UpdatePageLayoutWidgetInputWithId = { + id: string; + update: UpdatePageLayoutWidgetInput; +}; + +export const fromUpdatePageLayoutWidgetInputToFlatPageLayoutWidgetToUpdateOrThrow = + ({ + updatePageLayoutWidgetInput: rawUpdatePageLayoutWidgetInput, + flatPageLayoutWidgetMaps, + }: { + updatePageLayoutWidgetInput: UpdatePageLayoutWidgetInputWithId; + flatPageLayoutWidgetMaps: FlatPageLayoutWidgetMaps; + }): FlatPageLayoutWidget => { + const { id: pageLayoutWidgetToUpdateId } = + extractAndSanitizeObjectStringFields(rawUpdatePageLayoutWidgetInput, [ + 'id', + ]); + + const existingFlatPageLayoutWidgetToUpdate = + flatPageLayoutWidgetMaps.byId[pageLayoutWidgetToUpdateId]; + + if (!isDefined(existingFlatPageLayoutWidgetToUpdate)) { + throw new PageLayoutWidgetException( + t`Page layout widget to update not found`, + PageLayoutWidgetExceptionCode.PAGE_LAYOUT_WIDGET_NOT_FOUND, + ); + } + + const updatedEditableFieldProperties = extractAndSanitizeObjectStringFields( + rawUpdatePageLayoutWidgetInput.update, + FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES, + ); + + return mergeUpdateInExistingRecord({ + existing: existingFlatPageLayoutWidgetToUpdate, + properties: FLAT_PAGE_LAYOUT_WIDGET_EDITABLE_PROPERTIES, + update: updatedEditableFieldProperties, + }); + }; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/constants/widget-grid-max-columns.constant.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/constants/widget-grid-max-columns.constant.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/constants/widget-grid-max-columns.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/constants/widget-grid-max-columns.constant.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/constants/widget-grid-max-rows.constant.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/constants/widget-grid-max-rows.constant.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/constants/widget-grid-max-rows.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/constants/widget-grid-max-rows.constant.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout-tab.controller.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout-tab.controller.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout-tab.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout-tab.controller.ts index 4292280b0b..580607c910 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout-tab.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout-tab.controller.ts @@ -13,17 +13,17 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; -import { UpdatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab.input'; -import { type PageLayoutTabDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout-tab.dto'; +import { CreatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; +import { UpdatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab.input'; +import { type PageLayoutTabDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout-tab.dto'; import { generatePageLayoutTabExceptionMessage, PageLayoutTabException, PageLayoutTabExceptionCode, PageLayoutTabExceptionMessageKey, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; -import { PageLayoutTabRestApiExceptionFilter } from 'src/engine/core-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter'; -import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; +import { PageLayoutTabRestApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout-widget.controller.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout-widget.controller.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout-widget.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout-widget.controller.ts index de8d10b7e3..498c545eea 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout-widget.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout-widget.controller.ts @@ -13,22 +13,22 @@ import { import { isDefined } from 'class-validator'; -import { CreatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; -import { UpdatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; -import { type PageLayoutWidgetDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout-widget.dto'; -import { - generatePageLayoutWidgetExceptionMessage, - PageLayoutWidgetException, - PageLayoutWidgetExceptionCode, - PageLayoutWidgetExceptionMessageKey, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; -import { PageLayoutWidgetRestApiExceptionFilter } from 'src/engine/core-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter'; -import { PageLayoutWidgetService } from 'src/engine/core-modules/page-layout/services/page-layout-widget.service'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; +import { UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; +import { type PageLayoutWidgetDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout-widget.dto'; +import { + generatePageLayoutWidgetExceptionMessage, + PageLayoutWidgetException, + PageLayoutWidgetExceptionCode, + PageLayoutWidgetExceptionMessageKey, +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { PageLayoutWidgetRestApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter'; +import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout/services/page-layout-widget.service'; import { PermissionFlagType } from 'src/engine/metadata-modules/permissions/constants/permission-flag-type.constants'; @Controller('rest/metadata/pageLayoutWidgets') diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout.controller.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout.controller.ts similarity index 79% rename from packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout.controller.ts index 890c056337..4f87000588 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/controllers/page-layout.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/controllers/page-layout.controller.ts @@ -13,12 +13,12 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input'; -import { UpdatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout.input'; -import { type PageLayoutDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout.dto'; -import { PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutRestApiExceptionFilter } from 'src/engine/core-modules/page-layout/filters/page-layout-rest-api-exception.filter'; -import { PageLayoutService } from 'src/engine/core-modules/page-layout/services/page-layout.service'; +import { CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; +import { UpdatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout.input'; +import { type PageLayoutDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout.dto'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutRestApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/filters/page-layout-rest-api-exception.filter'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/aggregate-chart-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/aggregate-chart-configuration.dto.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/aggregate-chart-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/aggregate-chart-configuration.dto.ts index 4035bc8d13..289a42589f 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/aggregate-chart-configuration.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/aggregate-chart-configuration.dto.ts @@ -19,7 +19,7 @@ import { ObjectRecordFilter } from 'src/engine/api/graphql/workspace-query-build import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; @ObjectType('AggregateChartConfiguration') export class AggregateChartConfigurationDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/bar-chart-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/bar-chart-configuration.dto.ts similarity index 88% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/bar-chart-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/bar-chart-configuration.dto.ts index 8ac96b46ac..d8c9d8e7a1 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/bar-chart-configuration.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/bar-chart-configuration.dto.ts @@ -21,11 +21,11 @@ import { ObjectRecordFilter } from 'src/engine/api/graphql/workspace-query-build import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { AxisNameDisplay } from 'src/engine/core-modules/page-layout/enums/axis-name-display.enum'; -import { BarChartGroupMode } from 'src/engine/core-modules/page-layout/enums/bar-chart-group-mode.enum'; -import { ObjectRecordGroupByDateGranularity } from 'src/engine/core-modules/page-layout/enums/date-granularity.enum'; -import { GraphOrderBy } from 'src/engine/core-modules/page-layout/enums/graph-order-by.enum'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; +import { AxisNameDisplay } from 'src/engine/metadata-modules/page-layout/enums/axis-name-display.enum'; +import { BarChartGroupMode } from 'src/engine/metadata-modules/page-layout/enums/bar-chart-group-mode.enum'; +import { ObjectRecordGroupByDateGranularity } from 'src/engine/metadata-modules/page-layout/enums/date-granularity.enum'; +import { GraphOrderBy } from 'src/engine/metadata-modules/page-layout/enums/graph-order-by.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; @ObjectType('BarChartConfiguration') export class BarChartConfigurationDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/gauge-chart-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/gauge-chart-configuration.dto.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/gauge-chart-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/gauge-chart-configuration.dto.ts index 67b5bf0307..6badcec5fb 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/gauge-chart-configuration.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/gauge-chart-configuration.dto.ts @@ -19,7 +19,7 @@ import { ObjectRecordFilter } from 'src/engine/api/graphql/workspace-query-build import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; @ObjectType('GaugeChartConfiguration') export class GaugeChartConfigurationDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/iframe-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/iframe-configuration.dto.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/iframe-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/iframe-configuration.dto.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-tab.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-tab.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input.ts similarity index 85% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input.ts index b56f752148..aab057e3b7 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input.ts @@ -13,8 +13,8 @@ import { import { GraphQLJSON } from 'graphql-type-json'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { GridPositionInput } from 'src/engine/core-modules/page-layout/dtos/inputs/grid-position.input'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { GridPositionInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/grid-position.input'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; @InputType() export class CreatePageLayoutWidgetInput { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input.ts similarity index 86% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input.ts index 5b5311373c..b89d3bef8d 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input.ts @@ -9,7 +9,7 @@ import { } from 'class-validator'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; @InputType() export class CreatePageLayoutInput { diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/delete-page-layout-widget.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/delete-page-layout-widget.input.ts new file mode 100644 index 0000000000..c310e0be2e --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/delete-page-layout-widget.input.ts @@ -0,0 +1,13 @@ +import { Field, InputType } from '@nestjs/graphql'; + +import { IsNotEmpty, IsUUID } from 'class-validator'; + +import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; + +@InputType() +export class DeletePageLayoutWidgetInput { + @Field(() => UUIDScalarType) + @IsUUID() + @IsNotEmpty() + id: string; +} diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/destroy-page-layout-widget.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/destroy-page-layout-widget.input.ts new file mode 100644 index 0000000000..1f20997456 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/destroy-page-layout-widget.input.ts @@ -0,0 +1,13 @@ +import { Field, InputType } from '@nestjs/graphql'; + +import { IsNotEmpty, IsUUID } from 'class-validator'; + +import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; + +@InputType() +export class DestroyPageLayoutWidgetInput { + @Field(() => UUIDScalarType) + @IsUUID() + @IsNotEmpty() + id: string; +} diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/grid-position.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/grid-position.input.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/grid-position.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/grid-position.input.ts index adbc4b5b8d..6e051413f3 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/grid-position.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/grid-position.input.ts @@ -2,7 +2,7 @@ import { Field, InputType } from '@nestjs/graphql'; import { IsInt, IsNotEmpty, Min } from 'class-validator'; -import { GridPosition } from 'src/engine/core-modules/page-layout/types/grid-position.type'; +import { GridPosition } from 'src/engine/metadata-modules/page-layout/types/grid-position.type'; @InputType('GridPositionInput') export class GridPositionInput implements GridPosition { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts similarity index 84% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts index cae1128644..9ce566caeb 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input.ts @@ -11,7 +11,7 @@ import { } from 'class-validator'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { UpdatePageLayoutWidgetWithIdInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input'; +import { UpdatePageLayoutWidgetWithIdInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input'; @InputType() export class UpdatePageLayoutTabWithWidgetsInput { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts similarity index 84% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts index cc69426dfa..d7fe49aab6 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input.ts @@ -13,8 +13,8 @@ import { import { GraphQLJSON } from 'graphql-type-json'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { GridPositionInput } from 'src/engine/core-modules/page-layout/dtos/inputs/grid-position.input'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { GridPositionInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/grid-position.input'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; @InputType() export class UpdatePageLayoutWidgetWithIdInput { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input.ts index 3765f5488a..8ca6e0199b 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input.ts @@ -12,8 +12,8 @@ import { import { GraphQLJSON } from 'graphql-type-json'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { GridPositionInput } from 'src/engine/core-modules/page-layout/dtos/inputs/grid-position.input'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { GridPositionInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/grid-position.input'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; @InputType() export class UpdatePageLayoutWidgetInput { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts index ce8c45b735..b9f7289df0 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input.ts @@ -13,8 +13,8 @@ import { } from 'class-validator'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; @InputType() export class UpdatePageLayoutWithTabsInput { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout.input.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout.input.ts similarity index 85% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout.input.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout.input.ts index ba939a3fbb..a9df22d48d 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/inputs/update-page-layout.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout.input.ts @@ -3,7 +3,7 @@ import { Field, InputType } from '@nestjs/graphql'; import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; @InputType() export class UpdatePageLayoutInput { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/line-chart-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/line-chart-configuration.dto.ts similarity index 90% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/line-chart-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/line-chart-configuration.dto.ts index db244a5e38..b60f93613a 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/line-chart-configuration.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/line-chart-configuration.dto.ts @@ -20,10 +20,10 @@ import { ObjectRecordFilter } from 'src/engine/api/graphql/workspace-query-build import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { AxisNameDisplay } from 'src/engine/core-modules/page-layout/enums/axis-name-display.enum'; -import { ObjectRecordGroupByDateGranularity } from 'src/engine/core-modules/page-layout/enums/date-granularity.enum'; -import { GraphOrderBy } from 'src/engine/core-modules/page-layout/enums/graph-order-by.enum'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; +import { AxisNameDisplay } from 'src/engine/metadata-modules/page-layout/enums/axis-name-display.enum'; +import { ObjectRecordGroupByDateGranularity } from 'src/engine/metadata-modules/page-layout/enums/date-granularity.enum'; +import { GraphOrderBy } from 'src/engine/metadata-modules/page-layout/enums/graph-order-by.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; @ObjectType('LineChartConfiguration') export class LineChartConfigurationDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout-tab.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout-tab.dto.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout-tab.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout-tab.dto.ts index 65ee938717..10c182f741 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout-tab.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout-tab.dto.ts @@ -3,7 +3,7 @@ import { Field, Float, ObjectType } from '@nestjs/graphql'; import { IDField } from '@ptc-org/nestjs-query-graphql'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { PageLayoutWidgetDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout-widget.dto'; +import { PageLayoutWidgetDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout-widget.dto'; @ObjectType('PageLayoutTab') export class PageLayoutTabDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout-widget.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout-widget.dto.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout-widget.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout-widget.dto.ts index 87e4c5f97a..32277a5f9c 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout-widget.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout-widget.dto.ts @@ -6,8 +6,8 @@ import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/ import { WidgetConfiguration, WidgetConfigurationInterface, -} from 'src/engine/core-modules/page-layout/dtos/widget-configuration.interface'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +} from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; registerEnumType(WidgetType, { name: 'WidgetType' }); diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout.dto.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout.dto.ts index dc0d197e31..9f78813706 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/page-layout.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/page-layout.dto.ts @@ -3,8 +3,8 @@ import { Field, ObjectType, registerEnumType } from '@nestjs/graphql'; import { IDField } from '@ptc-org/nestjs-query-graphql'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { PageLayoutTabDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout-tab.dto'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutTabDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout-tab.dto'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; registerEnumType(PageLayoutType, { name: 'PageLayoutType' }); diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/pie-chart-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/pie-chart-configuration.dto.ts similarity index 89% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/pie-chart-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/pie-chart-configuration.dto.ts index 3abdd1db3a..1011bd1bd8 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/pie-chart-configuration.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/pie-chart-configuration.dto.ts @@ -19,9 +19,9 @@ import { ObjectRecordFilter } from 'src/engine/api/graphql/workspace-query-build import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { ObjectRecordGroupByDateGranularity } from 'src/engine/core-modules/page-layout/enums/date-granularity.enum'; -import { GraphOrderBy } from 'src/engine/core-modules/page-layout/enums/graph-order-by.enum'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; +import { ObjectRecordGroupByDateGranularity } from 'src/engine/metadata-modules/page-layout/enums/date-granularity.enum'; +import { GraphOrderBy } from 'src/engine/metadata-modules/page-layout/enums/graph-order-by.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; @ObjectType('PieChartConfiguration') export class PieChartConfigurationDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/rich-text-v2-body.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/rich-text-v2-body.dto.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/rich-text-v2-body.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/rich-text-v2-body.dto.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/standalone-rich-text-configuration.dto.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/standalone-rich-text-configuration.dto.ts similarity index 78% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/standalone-rich-text-configuration.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/standalone-rich-text-configuration.dto.ts index 4614c4cd57..81ff6e749d 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/standalone-rich-text-configuration.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/standalone-rich-text-configuration.dto.ts @@ -3,7 +3,7 @@ import { Field, ObjectType } from '@nestjs/graphql'; import { Type } from 'class-transformer'; import { IsNotEmpty, ValidateNested } from 'class-validator'; -import { RichTextV2BodyDTO } from 'src/engine/core-modules/page-layout/dtos/rich-text-v2-body.dto'; +import { RichTextV2BodyDTO } from 'src/engine/metadata-modules/page-layout/dtos/rich-text-v2-body.dto'; @ObjectType('StandaloneRichTextConfiguration') export class StandaloneRichTextConfigurationDTO { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/widget-configuration.interface.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface.ts similarity index 65% rename from packages/twenty-server/src/engine/core-modules/page-layout/dtos/widget-configuration.interface.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface.ts index a969bf13f2..f59970c90f 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/dtos/widget-configuration.interface.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface.ts @@ -1,14 +1,14 @@ import { createUnionType } from '@nestjs/graphql'; -import { AggregateChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/aggregate-chart-configuration.dto'; -import { BarChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/bar-chart-configuration.dto'; -import { GaugeChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/gauge-chart-configuration.dto'; -import { IframeConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/iframe-configuration.dto'; -import { LineChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/line-chart-configuration.dto'; -import { PieChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/pie-chart-configuration.dto'; -import { StandaloneRichTextConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/standalone-rich-text-configuration.dto'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; -import { WidgetConfigurationType } from 'src/engine/core-modules/page-layout/enums/widget-configuration-type.enum'; +import { AggregateChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/aggregate-chart-configuration.dto'; +import { BarChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/bar-chart-configuration.dto'; +import { GaugeChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/gauge-chart-configuration.dto'; +import { IframeConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/iframe-configuration.dto'; +import { LineChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/line-chart-configuration.dto'; +import { PieChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/pie-chart-configuration.dto'; +import { StandaloneRichTextConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/standalone-rich-text-configuration.dto'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; +import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout/enums/widget-configuration-type.enum'; export const WidgetConfiguration = createUnionType({ name: 'WidgetConfiguration', diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity.ts similarity index 88% rename from packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity.ts index d02095de72..f73e672df4 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-tab.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity.ts @@ -16,9 +16,9 @@ import { 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'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; @Entity({ name: 'pageLayoutTab', schema: 'core' }) @ObjectType('PageLayoutTab') diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-widget.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity.ts similarity index 78% rename from packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-widget.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity.ts index dbdae813af..95308d571b 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout-widget.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity.ts @@ -13,12 +13,14 @@ import { UpdateDateColumn, } from 'typeorm'; -import { WidgetConfigurationInterface } from 'src/engine/core-modules/page-layout/dtos/widget-configuration.interface'; -import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; -import { GridPosition } from 'src/engine/core-modules/page-layout/types/grid-position.type'; +import { StrictSyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/strict-syncable-entity.interface'; + import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { WidgetConfigurationInterface } from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; +import { GridPosition } from 'src/engine/metadata-modules/page-layout/types/grid-position.type'; @Entity({ name: 'pageLayoutWidget', schema: 'core' }) @ObjectType('PageLayoutWidget') @@ -28,6 +30,7 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat { where: '"deletedAt" IS NULL' }, ) export class PageLayoutWidgetEntity + extends StrictSyncableEntity implements Required { @PrimaryGeneratedColumn('uuid') diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts similarity index 89% rename from packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts index 44cd50885d..c87a538fd8 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/entities/page-layout.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts @@ -14,8 +14,8 @@ import { UpdateDateColumn, } from 'typeorm'; -import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/axis-name-display.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/axis-name-display.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/axis-name-display.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/axis-name-display.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/bar-chart-group-mode.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/bar-chart-group-mode.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/bar-chart-group-mode.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/bar-chart-group-mode.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/date-granularity.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/date-granularity.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/date-granularity.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/date-granularity.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/graph-order-by.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/graph-order-by.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/graph-order-by.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/graph-order-by.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/graph-type.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/graph-type.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/graph-type.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/graph-type.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/page-layout-type.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/page-layout-type.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/page-layout-type.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/page-layout-type.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/widget-configuration-type.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/widget-configuration-type.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/widget-configuration-type.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/widget-configuration-type.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/enums/widget-type.enum.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/enums/widget-type.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/enums/widget-type.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/enums/widget-type.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/exceptions/page-layout.exception.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/exceptions/page-layout.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/exceptions/page-layout.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/exceptions/page-layout.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-rest-api-exception.filter.ts similarity index 93% rename from packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-rest-api-exception.filter.ts index af443dec38..b85ed70d5e 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { PageLayoutException, PageLayoutExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; @Catch(PageLayoutException) export class PageLayoutRestApiExceptionFilter implements ExceptionFilter { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts similarity index 93% rename from packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts index 7eb21b63ee..d5f04bbfdc 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-tab-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { PageLayoutTabException, PageLayoutTabExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; @Catch(PageLayoutTabException) export class PageLayoutTabRestApiExceptionFilter implements ExceptionFilter { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts similarity index 93% rename from packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts index bd659dbdd4..ed6520c397 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/filters/page-layout-widget-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { PageLayoutWidgetException, PageLayoutWidgetExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; @Catch(PageLayoutWidgetException) export class PageLayoutWidgetRestApiExceptionFilter implements ExceptionFilter { diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts new file mode 100644 index 0000000000..fe237f4ff9 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts @@ -0,0 +1,56 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; +import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; +import { PageLayoutTabController } from 'src/engine/metadata-modules/page-layout/controllers/page-layout-tab.controller'; +import { PageLayoutWidgetController } from 'src/engine/metadata-modules/page-layout/controllers/page-layout-widget.controller'; +import { PageLayoutController } from 'src/engine/metadata-modules/page-layout/controllers/page-layout.controller'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutTabResolver } from 'src/engine/metadata-modules/page-layout/resolvers/page-layout-tab.resolver'; +import { PageLayoutWidgetResolver } from 'src/engine/metadata-modules/page-layout/resolvers/page-layout-widget.resolver'; +import { PageLayoutResolver } from 'src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutUpdateService } from 'src/engine/metadata-modules/page-layout/services/page-layout-update.service'; +import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout/services/page-layout-widget.service'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; +import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; +import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; +import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; +import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ + PageLayoutEntity, + PageLayoutTabEntity, + PageLayoutWidgetEntity, + WorkspaceEntity, + ]), + TwentyORMModule, + PermissionsModule, + FeatureFlagModule, + WorkspaceCacheStorageModule, + WorkspaceMigrationV2Module, + WorkspaceManyOrAllFlatEntityMapsCacheModule, + ], + controllers: [ + PageLayoutController, + PageLayoutTabController, + PageLayoutWidgetController, + ], + providers: [ + PageLayoutService, + PageLayoutTabService, + PageLayoutWidgetService, + PageLayoutResolver, + PageLayoutTabResolver, + PageLayoutWidgetResolver, + PageLayoutUpdateService, + ], + exports: [PageLayoutService, PageLayoutTabService, PageLayoutWidgetService], +}) +export class PageLayoutModule {} diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout-tab.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout-tab.resolver.ts similarity index 86% rename from packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout-tab.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout-tab.resolver.ts index bc95a8779f..ab5261c179 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout-tab.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout-tab.resolver.ts @@ -4,11 +4,11 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/resolver-validation.pipe'; -import { CreatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; -import { UpdatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab.input'; -import { PageLayoutTabDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout-tab.dto'; -import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; -import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; +import { CreatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; +import { UpdatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab.input'; +import { PageLayoutTabDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout-tab.dto'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; import { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout-widget.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout-widget.resolver.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout-widget.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout-widget.resolver.ts index f19d32651e..229a9cf652 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout-widget.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout-widget.resolver.ts @@ -9,18 +9,18 @@ import { } from '@nestjs/graphql'; import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/resolver-validation.pipe'; -import { CreatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; -import { UpdatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; -import { PageLayoutWidgetDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout-widget.dto'; -import { WidgetConfiguration } from 'src/engine/core-modules/page-layout/dtos/widget-configuration.interface'; -import { PageLayoutWidgetService } from 'src/engine/core-modules/page-layout/services/page-layout-widget.service'; -import { injectWidgetConfigurationDiscriminator } from 'src/engine/core-modules/page-layout/utils/inject-widget-configuration-discriminator.util'; -import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; import { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; +import { UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; +import { PageLayoutWidgetDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout-widget.dto'; +import { WidgetConfiguration } from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout/services/page-layout-widget.service'; +import { injectWidgetConfigurationDiscriminator } from 'src/engine/metadata-modules/page-layout/utils/inject-widget-configuration-discriminator.util'; +import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; import { PermissionFlagType } from 'src/engine/metadata-modules/permissions/constants/permission-flag-type.constants'; @Resolver(() => PageLayoutWidgetDTO) diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts similarity index 84% rename from packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts index 58865baf22..7e46df6847 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/resolvers/page-layout.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts @@ -4,13 +4,13 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/resolver-validation.pipe'; -import { CreatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input'; -import { UpdatePageLayoutWithTabsInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input'; -import { UpdatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout.input'; -import { PageLayoutDTO } from 'src/engine/core-modules/page-layout/dtos/page-layout.dto'; -import { PageLayoutUpdateService } from 'src/engine/core-modules/page-layout/services/page-layout-update.service'; -import { PageLayoutService } from 'src/engine/core-modules/page-layout/services/page-layout.service'; -import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; +import { CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; +import { UpdatePageLayoutWithTabsInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input'; +import { UpdatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout.input'; +import { PageLayoutDTO } from 'src/engine/metadata-modules/page-layout/dtos/page-layout.dto'; +import { PageLayoutUpdateService } from 'src/engine/metadata-modules/page-layout/services/page-layout-update.service'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; +import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { NoPermissionGuard } from 'src/engine/guards/no-permission.guard'; 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/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts index 22450ce82d..c78743ece1 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/metadata-modules/page-layout/services/__tests__/page-layout-tab.service.spec.ts @@ -4,22 +4,22 @@ 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'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { generatePageLayoutTabExceptionMessage, PageLayoutTabException, PageLayoutTabExceptionCode, PageLayoutTabExceptionMessageKey, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; import { PageLayoutException, PageLayoutExceptionCode, -} 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'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; +import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; describe('PageLayoutTabService', () => { let pageLayoutTabService: PageLayoutTabService; 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/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts index 8e85582fb7..aa26530317 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/metadata-modules/page-layout/services/__tests__/page-layout-update.service.spec.ts @@ -3,18 +3,18 @@ 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'; -import { type PageLayoutWidgetEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-widget.entity'; -import { type PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; -import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; -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 { type WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; +import { type UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input'; +import { type UpdatePageLayoutWidgetWithIdInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutUpdateService } from 'src/engine/metadata-modules/page-layout/services/page-layout-update.service'; +import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout/services/page-layout-widget.service'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; describe('PageLayoutUpdateService', () => { let pageLayoutUpdateService: PageLayoutUpdateService; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts index 4827a0a116..0eb3fe1c3f 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout-widget.service.spec.ts @@ -4,20 +4,21 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { IsNull, type Repository } from 'typeorm'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { 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'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { PageLayoutTabException, PageLayoutTabExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; import { generatePageLayoutWidgetExceptionMessage, PageLayoutWidgetException, PageLayoutWidgetExceptionCode, PageLayoutWidgetExceptionMessageKey, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; -import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; -import { PageLayoutWidgetService } from 'src/engine/core-modules/page-layout/services/page-layout-widget.service'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout/services/page-layout-widget.service'; describe('PageLayoutWidgetService', () => { let pageLayoutWidgetService: PageLayoutWidgetService; @@ -59,6 +60,15 @@ describe('PageLayoutWidgetService', () => { restore: jest.fn(), }, }, + { + provide: getRepositoryToken(WorkspaceEntity), + useValue: { + findOne: jest.fn(), + findOneOrFail: jest.fn().mockResolvedValue({ + workspaceCustomApplicationId: 'application-id', + }), + }, + }, { provide: PageLayoutTabService, useValue: { @@ -200,6 +210,8 @@ describe('PageLayoutWidgetService', () => { expect(pageLayoutWidgetRepository.insert).toHaveBeenCalledWith({ ...validPageLayoutWidgetData, workspaceId, + applicationId: 'application-id', + universalIdentifier: expect.any(String), }); expect(result).toEqual(mockPageLayoutWidget); }); diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts similarity index 96% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts index de38d17c30..e7a0855a71 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/__tests__/page-layout.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/__tests__/page-layout.service.spec.ts @@ -3,16 +3,16 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { IsNull, type Repository } from 'typeorm'; -import { type CreatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input'; -import { PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { type CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PageLayoutException, PageLayoutExceptionCode, PageLayoutExceptionMessageKey, generatePageLayoutExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; -import { PageLayoutService } from 'src/engine/core-modules/page-layout/services/page-layout.service'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; describe('PageLayoutService', () => { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts index aa66fce9f7..09f332feeb 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-tab.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-tab.service.ts @@ -6,20 +6,20 @@ 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'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; +import { CreatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { PageLayoutTabException, PageLayoutTabExceptionCode, PageLayoutTabExceptionMessageKey, generatePageLayoutTabExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; import { PageLayoutException, 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'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; @Injectable() export class PageLayoutTabService { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-update.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts similarity index 85% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-update.service.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts index 760547d2b0..68ea76f99e 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-update.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts @@ -3,16 +3,16 @@ import { Injectable } from '@nestjs/common'; import { computeDiffBetweenObjects, isDefined } from 'twenty-shared/utils'; import { DataSource, EntityManager } from 'typeorm'; -import { CreatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; -import { UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input'; -import { UpdatePageLayoutWidgetWithIdInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input'; -import { UpdatePageLayoutWithTabsInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input'; -import { PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; -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 { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.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 { CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; +import { UpdatePageLayoutTabWithWidgetsInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab-with-widgets.input'; +import { UpdatePageLayoutWidgetWithIdInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget-with-id.input'; +import { UpdatePageLayoutWithTabsInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input'; +import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout/services/page-layout-widget.service'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; type UpdatePageLayoutWithTabsParams = { id: string; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-widget.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts similarity index 88% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-widget.service.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts index 4cc6df5b81..a896ae0ee3 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout-widget.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-widget.service.ts @@ -4,32 +4,36 @@ 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 { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { CreatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; -import { UpdatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; -import { WidgetConfigurationInterface } from 'src/engine/core-modules/page-layout/dtos/widget-configuration.interface'; -import { PageLayoutWidgetEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-widget.entity'; +import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; +import { CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; +import { UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; +import { WidgetConfigurationInterface } from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; import { PageLayoutTabException, PageLayoutTabExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; import { PageLayoutWidgetException, PageLayoutWidgetExceptionCode, PageLayoutWidgetExceptionMessageKey, generatePageLayoutWidgetExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; -import { PageLayoutTabService } from 'src/engine/core-modules/page-layout/services/page-layout-tab.service'; -import { validateAndTransformWidgetConfiguration } from 'src/engine/core-modules/page-layout/utils/validate-and-transform-widget-configuration.util'; -import { validateWidgetGridPosition } from 'src/engine/core-modules/page-layout/utils/validate-widget-grid-position.util'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { validateAndTransformWidgetConfiguration } from 'src/engine/metadata-modules/page-layout/utils/validate-and-transform-widget-configuration.util'; +import { validateWidgetGridPosition } from 'src/engine/metadata-modules/page-layout/utils/validate-widget-grid-position.util'; @Injectable() export class PageLayoutWidgetService { constructor( @InjectRepository(PageLayoutWidgetEntity) private readonly pageLayoutWidgetRepository: Repository, + @InjectRepository(WorkspaceEntity) + private readonly workspaceRepository: Repository, private readonly pageLayoutTabService: PageLayoutTabService, private readonly featureFlagService: FeatureFlagService, ) {} @@ -171,11 +175,22 @@ export class PageLayoutWidgetService { } } + const workspace = await ( + transactionManager + ? transactionManager.getRepository(WorkspaceEntity) + : this.workspaceRepository + ).findOneOrFail({ + where: { id: workspaceId }, + select: ['workspaceCustomApplicationId'], + }); + const repository = this.getPageLayoutWidgetRepository(transactionManager); const insertResult = await repository.insert({ ...pageLayoutWidgetData, workspaceId, + universalIdentifier: v4(), + applicationId: workspace.workspaceCustomApplicationId, ...(validatedConfig && { configuration: validatedConfig }), } as QueryDeepPartialEntity); diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout.service.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts index 838f14d195..5498aadd63 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/services/page-layout.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts @@ -5,15 +5,15 @@ import { isDefined } from 'twenty-shared/utils'; import { EntityManager, IsNull, Repository } from 'typeorm'; import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity'; -import { CreatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input'; -import { PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; +import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PageLayoutException, PageLayoutExceptionCode, PageLayoutExceptionMessageKey, generatePageLayoutExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; @Injectable() diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/types/grid-position.type.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/types/grid-position.type.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/page-layout/types/grid-position.type.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/types/grid-position.type.ts diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts similarity index 98% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts index 8666f956ff..2400bc6725 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/__tests__/validate-and-transform-widget-configuration.util.spec.ts @@ -22,8 +22,8 @@ import { TEST_VERTICAL_BAR_CHART_CONFIG_MINIMAL, } from 'test/integration/constants/widget-configuration-test-data.constants'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; -import { validateAndTransformWidgetConfiguration } from 'src/engine/core-modules/page-layout/utils/validate-and-transform-widget-configuration.util'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; +import { validateAndTransformWidgetConfiguration } from 'src/engine/metadata-modules/page-layout/utils/validate-and-transform-widget-configuration.util'; jest.mock( 'src/engine/core-modules/record-transformer/utils/transform-rich-text-v2.util', diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts similarity index 90% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts index 45c84c3373..63e528f0c6 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/__tests__/validate-widget-grid-position.util.spec.ts @@ -1,7 +1,7 @@ -import { WIDGET_GRID_MAX_COLUMNS } from 'src/engine/core-modules/page-layout/constants/widget-grid-max-columns.constant'; -import { WIDGET_GRID_MAX_ROWS } from 'src/engine/core-modules/page-layout/constants/widget-grid-max-rows.constant'; -import { PageLayoutWidgetException } from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; -import { validateWidgetGridPosition } from 'src/engine/core-modules/page-layout/utils/validate-widget-grid-position.util'; +import { WIDGET_GRID_MAX_COLUMNS } from 'src/engine/metadata-modules/page-layout/constants/widget-grid-max-columns.constant'; +import { WIDGET_GRID_MAX_ROWS } from 'src/engine/metadata-modules/page-layout/constants/widget-grid-max-rows.constant'; +import { PageLayoutWidgetException } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { validateWidgetGridPosition } from 'src/engine/metadata-modules/page-layout/utils/validate-widget-grid-position.util'; describe('validateWidgetGridPosition', () => { const validGridPosition = { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/inject-widget-configuration-discriminator.util.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/inject-widget-configuration-discriminator.util.ts similarity index 75% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/inject-widget-configuration-discriminator.util.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/inject-widget-configuration-discriminator.util.ts index 67b78e395a..1c976c4da3 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/inject-widget-configuration-discriminator.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/inject-widget-configuration-discriminator.util.ts @@ -1,6 +1,6 @@ -import { type WidgetConfigurationInterface } from 'src/engine/core-modules/page-layout/dtos/widget-configuration.interface'; -import { WidgetConfigurationType } from 'src/engine/core-modules/page-layout/enums/widget-configuration-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { type WidgetConfigurationInterface } from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { WidgetConfigurationType } from 'src/engine/metadata-modules/page-layout/enums/widget-configuration-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; type ConfigurationWithDiscriminator = WidgetConfigurationInterface & { configurationType: WidgetConfigurationType; diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts index 9e28d0c219..255be72607 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts @@ -7,15 +7,15 @@ import { import { PageLayoutTabException, PageLayoutTabExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; import { PageLayoutWidgetException, PageLayoutWidgetExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; import { PageLayoutException, PageLayoutExceptionCode, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; export const pageLayoutGraphqlApiExceptionHandler = (error: Error) => { if (error instanceof PageLayoutException) { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts similarity index 55% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts index 56e0281e36..66a918c245 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts @@ -1,10 +1,10 @@ import { ArgumentsHost, Catch } from '@nestjs/common'; import { GqlExceptionFilter } from '@nestjs/graphql'; -import { PageLayoutTabException } from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; -import { PageLayoutWidgetException } from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; -import { PageLayoutException } from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; -import { pageLayoutGraphqlApiExceptionHandler } from 'src/engine/core-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util'; +import { PageLayoutTabException } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; +import { PageLayoutWidgetException } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { PageLayoutException } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; +import { pageLayoutGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util'; @Catch(PageLayoutException, PageLayoutTabException, PageLayoutWidgetException) export class PageLayoutGraphqlApiExceptionFilter implements GqlExceptionFilter { diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/validate-and-transform-widget-configuration.util.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/validate-and-transform-widget-configuration.util.ts similarity index 80% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/validate-and-transform-widget-configuration.util.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/validate-and-transform-widget-configuration.util.ts index bdfbd07747..23eb2a81ee 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/validate-and-transform-widget-configuration.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/validate-and-transform-widget-configuration.util.ts @@ -2,18 +2,18 @@ import { plainToInstance } from 'class-transformer'; import { validateSync, type ValidationError } from 'class-validator'; import { isDefined } from 'twenty-shared/utils'; -import { AggregateChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/aggregate-chart-configuration.dto'; import { transformRichTextV2Value } from 'src/engine/core-modules/record-transformer/utils/transform-rich-text-v2.util'; -import { BarChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/bar-chart-configuration.dto'; -import { GaugeChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/gauge-chart-configuration.dto'; -import { IframeConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/iframe-configuration.dto'; -import { LineChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/line-chart-configuration.dto'; -import { PieChartConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/pie-chart-configuration.dto'; -import { StandaloneRichTextConfigurationDTO } from 'src/engine/core-modules/page-layout/dtos/standalone-rich-text-configuration.dto'; -import { type WidgetConfigurationInterface } from 'src/engine/core-modules/page-layout/dtos/widget-configuration.interface'; -import { BarChartGroupMode } from 'src/engine/core-modules/page-layout/enums/bar-chart-group-mode.enum'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { AggregateChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/aggregate-chart-configuration.dto'; +import { BarChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/bar-chart-configuration.dto'; +import { GaugeChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/gauge-chart-configuration.dto'; +import { IframeConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/iframe-configuration.dto'; +import { LineChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/line-chart-configuration.dto'; +import { PieChartConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/pie-chart-configuration.dto'; +import { StandaloneRichTextConfigurationDTO } from 'src/engine/metadata-modules/page-layout/dtos/standalone-rich-text-configuration.dto'; +import { type WidgetConfigurationInterface } from 'src/engine/metadata-modules/page-layout/dtos/widget-configuration.interface'; +import { BarChartGroupMode } from 'src/engine/metadata-modules/page-layout/enums/bar-chart-group-mode.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; const formatValidationErrors = (errors: ValidationError[]): string => { return errors diff --git a/packages/twenty-server/src/engine/core-modules/page-layout/utils/validate-widget-grid-position.util.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/validate-widget-grid-position.util.ts similarity index 86% rename from packages/twenty-server/src/engine/core-modules/page-layout/utils/validate-widget-grid-position.util.ts rename to packages/twenty-server/src/engine/metadata-modules/page-layout/utils/validate-widget-grid-position.util.ts index 925d8e0f79..a608b991f7 100644 --- a/packages/twenty-server/src/engine/core-modules/page-layout/utils/validate-widget-grid-position.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/validate-widget-grid-position.util.ts @@ -1,11 +1,11 @@ -import { WIDGET_GRID_MAX_COLUMNS } from 'src/engine/core-modules/page-layout/constants/widget-grid-max-columns.constant'; -import { WIDGET_GRID_MAX_ROWS } from 'src/engine/core-modules/page-layout/constants/widget-grid-max-rows.constant'; +import { WIDGET_GRID_MAX_COLUMNS } from 'src/engine/metadata-modules/page-layout/constants/widget-grid-max-columns.constant'; +import { WIDGET_GRID_MAX_ROWS } from 'src/engine/metadata-modules/page-layout/constants/widget-grid-max-rows.constant'; import { PageLayoutWidgetException, PageLayoutWidgetExceptionCode, PageLayoutWidgetExceptionMessageKey, generatePageLayoutWidgetExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; type GridPosition = { row: number; 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 c984f0f5b5..7fc65365c4 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', + flatPageLayoutWidgetMaps: 'flat-maps:page-layout-widget', flatPageLayoutTabMaps: 'flat-maps:flatPageLayoutTabMaps', } as const satisfies Record; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts index caa26789d9..e947d3f5c9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-data-seeds.util.ts @@ -1,4 +1,4 @@ -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PAGE_LAYOUT_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-seeds.constant'; import { generateSeedId } from 'src/engine/workspace-manager/dev-seeder/core/utils/generate-seed-id.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds-v2.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds-v2.util.ts index b77f62f598..b4cf70343f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds-v2.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds-v2.util.ts @@ -3,8 +3,8 @@ import { isDefined } from 'twenty-shared/utils'; import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { AxisNameDisplay } from 'src/engine/core-modules/page-layout/enums/axis-name-display.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { AxisNameDisplay } from 'src/engine/metadata-modules/page-layout/enums/axis-name-display.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { PAGE_LAYOUT_TAB_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-tab-seeds.constant'; import { PAGE_LAYOUT_WIDGET_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-widget-seeds.constant'; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds.util.ts index 594112f381..0abcd5eb85 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds.util.ts @@ -3,9 +3,9 @@ import { isDefined } from 'twenty-shared/utils'; import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { AxisNameDisplay } from 'src/engine/core-modules/page-layout/enums/axis-name-display.enum'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { AxisNameDisplay } from 'src/engine/metadata-modules/page-layout/enums/axis-name-display.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { PAGE_LAYOUT_TAB_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-tab-seeds.constant'; import { PAGE_LAYOUT_WIDGET_SEEDS } from 'src/engine/workspace-manager/dev-seeder/core/constants/page-layout-widget-seeds.constant'; diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-widgets.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-widgets.util.ts index 51601e6080..9758466793 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-widgets.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-page-layout-widgets.util.ts @@ -1,7 +1,8 @@ import { type DataSource } from 'typeorm'; +import { v4 } from 'uuid'; -import { validateAndTransformWidgetConfiguration } from 'src/engine/core-modules/page-layout/utils/validate-and-transform-widget-configuration.util'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { validateAndTransformWidgetConfiguration } from 'src/engine/metadata-modules/page-layout/utils/validate-and-transform-widget-configuration.util'; import { getPageLayoutWidgetDataSeeds } from 'src/engine/workspace-manager/dev-seeder/core/utils/get-page-layout-widget-data-seeds.util'; export const seedPageLayoutWidgets = async ({ @@ -10,12 +11,14 @@ export const seedPageLayoutWidgets = async ({ workspaceId, objectMetadataItems, isDashboardV2Enabled, + workspaceCustomApplicationId, }: { dataSource: DataSource; schemaName: string; workspaceId: string; objectMetadataItems: ObjectMetadataEntity[]; isDashboardV2Enabled: boolean; + workspaceCustomApplicationId: string; }) => { const widgetSeeds = getPageLayoutWidgetDataSeeds( workspaceId, @@ -38,6 +41,8 @@ export const seedPageLayoutWidgets = async ({ workspaceId, gridPosition: widget.gridPosition, configuration: validatedConfiguration, + universalIdentifier: v4(), + applicationId: workspaceCustomApplicationId, }; }), ); @@ -55,6 +60,8 @@ export const seedPageLayoutWidgets = async ({ 'configuration', 'objectMetadataId', 'workspaceId', + 'universalIdentifier', + 'applicationId', ]) .values(pageLayoutWidgets) .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 f9c5936120..ca11e27b04 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 @@ -135,6 +135,7 @@ export class DevSeederService { workspaceId, objectMetadataItems, isDashboardV2Enabled, + workspaceCustomApplicationId: workspaceCustomFlatApplication.id, }); await this.devSeederDataService.seed({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts index c90f761eca..b5e0636bfb 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant.ts @@ -89,6 +89,11 @@ export const computeTwentyStandardApplicationAllFlatEntityMaps = ({ idByUniversalIdentifier: {}, universalIdentifiersByApplicationId: {}, }, + flatPageLayoutWidgetMaps: { + byId: {}, + idByUniversalIdentifier: {}, + universalIdentifiersByApplicationId: {}, + }, flatPageLayoutTabMaps: { byId: {}, idByUniversalIdentifier: {}, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts index df06d53009..2413cc6635 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts @@ -31,6 +31,7 @@ export const fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseE invalidViewGroup: 0, invalidRole: 0, invalidRoleTarget: 0, + invalidPageLayoutWidget: 0, totalErrors: 0, invalidPageLayoutTab: 0, }, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts new file mode 100644 index 0000000000..8aae3aa861 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts @@ -0,0 +1,18 @@ +import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type'; +import { type FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; + +export type CreatePageLayoutWidgetAction = { + type: 'create_page_layout_widget'; + pageLayoutWidget: FlatPageLayoutWidget; +}; + +export type UpdatePageLayoutWidgetAction = { + type: 'update_page_layout_widget'; + pageLayoutWidgetId: string; + updates: FlatEntityPropertiesUpdates<'pageLayoutWidget'>; +}; + +export type DeletePageLayoutWidgetAction = { + type: 'delete_page_layout_widget'; + pageLayoutWidgetId: string; +}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service.ts new file mode 100644 index 0000000000..6fbec4555b --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service.ts @@ -0,0 +1,111 @@ +import { Injectable } from '@nestjs/common'; + +import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; + +import { UpdatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-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 { FlatPageLayoutWidgetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service'; + +@Injectable() +export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< + typeof ALL_METADATA_NAME.pageLayoutWidget +> { + constructor( + private readonly flatPageLayoutWidgetValidatorService: FlatPageLayoutWidgetValidatorService, + ) { + super(ALL_METADATA_NAME.pageLayoutWidget); + } + + protected validateFlatEntityCreation( + args: FlatEntityValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayoutWidget, + 'created' + > { + const validationResult = + this.flatPageLayoutWidgetValidatorService.validateFlatPageLayoutWidgetCreation( + args, + ); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + return { + status: 'success', + action: { + type: 'create_page_layout_widget', + pageLayoutWidget: args.flatEntityToValidate, + }, + }; + } + + protected validateFlatEntityDeletion( + args: FlatEntityValidationArgs, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayoutWidget, + 'deleted' + > { + const validationResult = + this.flatPageLayoutWidgetValidatorService.validateFlatPageLayoutWidgetDeletion( + args, + ); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityToValidate: flatPageLayoutWidgetToValidate } = args; + + return { + status: 'success', + action: { + type: 'delete_page_layout_widget', + pageLayoutWidgetId: flatPageLayoutWidgetToValidate.id, + }, + }; + } + + protected validateFlatEntityUpdate( + args: FlatEntityUpdateValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutWidget + >, + ): FlatEntityValidationReturnType< + typeof ALL_METADATA_NAME.pageLayoutWidget, + 'updated' + > { + const validationResult = + this.flatPageLayoutWidgetValidatorService.validateFlatPageLayoutWidgetUpdate( + args, + ); + + if (validationResult.errors.length > 0) { + return { + status: 'fail', + ...validationResult, + }; + } + + const { flatEntityId, flatEntityUpdates } = args; + + const updatePageLayoutWidgetAction: UpdatePageLayoutWidgetAction = { + type: 'update_page_layout_widget', + pageLayoutWidgetId: flatEntityId, + updates: flatEntityUpdates, + }; + + return { + status: 'success', + action: updatePageLayoutWidgetAction, + }; + } +} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service.ts new file mode 100644 index 0000000000..086d49bbf3 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service.ts @@ -0,0 +1,129 @@ +import { Injectable } from '@nestjs/common'; + +import { msg, t } from '@lingui/core/macro'; +import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; +import { isDefined } from 'twenty-shared/utils'; + +import { FlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/types/flat-page-layout-widget.type'; +import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +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 { 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 FlatPageLayoutWidgetValidatorService { + constructor() {} + + public validateFlatPageLayoutWidgetUpdate({ + flatEntityId, + flatEntityUpdates, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutWidgetMaps: optimisticFlatPageLayoutWidgetMaps, + }, + }: FlatEntityUpdateValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutWidget + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'update_page_layout_widget', + errors: [], + flatEntityMinimalInformation: { + id: flatEntityId, + }, + }; + + const existingFlatPageLayoutWidget = + optimisticFlatPageLayoutWidgetMaps.byId[flatEntityId]; + + if (!isDefined(existingFlatPageLayoutWidget)) { + validationResult.errors.push({ + code: PageLayoutWidgetExceptionCode.PAGE_LAYOUT_WIDGET_NOT_FOUND, + message: t`Page layout widget to update not found`, + userFriendlyMessage: msg`Page layout widget to update not found`, + }); + + return validationResult; + } + + const updatedFlatPageLayoutWidget = { + ...existingFlatPageLayoutWidget, + ...fromFlatEntityPropertiesUpdatesToPartialFlatEntity({ + updates: flatEntityUpdates, + }), + }; + + validationResult.flatEntityMinimalInformation = { + id: updatedFlatPageLayoutWidget.id, + pageLayoutTabId: updatedFlatPageLayoutWidget.pageLayoutTabId, + }; + + return validationResult; + } + + public validateFlatPageLayoutWidgetDeletion({ + flatEntityToValidate: { id: pageLayoutWidgetIdToDelete }, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutWidgetMaps: optimisticFlatPageLayoutWidgetMaps, + }, + }: FlatEntityValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutWidget + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'delete_page_layout_widget', + errors: [], + flatEntityMinimalInformation: { + id: pageLayoutWidgetIdToDelete, + }, + }; + + const existingFlatPageLayoutWidget = + optimisticFlatPageLayoutWidgetMaps.byId[pageLayoutWidgetIdToDelete]; + + if (!isDefined(existingFlatPageLayoutWidget)) { + validationResult.errors.push({ + code: PageLayoutWidgetExceptionCode.PAGE_LAYOUT_WIDGET_NOT_FOUND, + message: t`Page layout widget to delete not found`, + userFriendlyMessage: msg`Page layout widget to delete not found`, + }); + + return validationResult; + } + + return validationResult; + } + + public validateFlatPageLayoutWidgetCreation({ + flatEntityToValidate: flatPageLayoutWidgetToValidate, + optimisticFlatEntityMapsAndRelatedFlatEntityMaps: { + flatPageLayoutWidgetMaps: optimisticFlatPageLayoutWidgetMaps, + }, + }: FlatEntityValidationArgs< + typeof ALL_METADATA_NAME.pageLayoutWidget + >): FailedFlatEntityValidation { + const validationResult: FailedFlatEntityValidation = { + type: 'create_page_layout_widget', + errors: [], + flatEntityMinimalInformation: { + id: flatPageLayoutWidgetToValidate.id, + pageLayoutTabId: flatPageLayoutWidgetToValidate.pageLayoutTabId, + }, + }; + + const existingFlatPageLayoutWidget = + optimisticFlatPageLayoutWidgetMaps.byId[ + flatPageLayoutWidgetToValidate.id + ]; + + if (isDefined(existingFlatPageLayoutWidget)) { + const flatPageLayoutWidgetId = flatPageLayoutWidgetToValidate.id; + + validationResult.errors.push({ + code: PageLayoutWidgetExceptionCode.INVALID_PAGE_LAYOUT_WIDGET_DATA, + message: t`Page layout widget with id ${flatPageLayoutWidgetId} already exists`, + userFriendlyMessage: msg`Page layout widget already exists`, + }); + } + + 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 ae957b638b..32d2b0e3b5 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,12 +3,13 @@ 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'; import { FlatIndexValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service'; import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-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 { FlatPageLayoutWidgetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service'; import { FlatRoleTargetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-target-validator.service'; import { FlatRoleValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service'; import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service'; @@ -36,6 +37,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace FlatRoleValidatorService, FlatRoleTargetValidatorService, FlatAgentValidatorService, + FlatPageLayoutWidgetValidatorService, FlatPageLayoutTabValidatorService, ], exports: [ @@ -54,6 +56,7 @@ import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace FlatRoleValidatorService, FlatRoleTargetValidatorService, FlatAgentValidatorService, + FlatPageLayoutWidgetValidatorService, FlatPageLayoutTabValidatorService, ], }) diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts index dcc4a4110e..dd475140a2 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,12 +3,13 @@ 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'; import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service'; import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service'; +import { WorkspaceMigrationV2PageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service'; +import { WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service'; import { WorkspaceMigrationV2RoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service'; import { WorkspaceMigrationV2RoleActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service'; import { WorkspaceMigrationV2RouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service'; @@ -37,6 +38,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace- WorkspaceMigrationV2RoleActionsBuilderService, WorkspaceMigrationV2RoleTargetActionsBuilderService, WorkspaceMigrationV2AgentActionsBuilderService, + WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, WorkspaceMigrationV2PageLayoutTabActionsBuilderService, ], exports: [ @@ -54,6 +56,7 @@ import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace- WorkspaceMigrationV2RoleActionsBuilderService, WorkspaceMigrationV2RoleTargetActionsBuilderService, WorkspaceMigrationV2AgentActionsBuilderService, + WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, 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 index a21ae116e2..82b5a0810e 100644 --- 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 @@ -5,9 +5,9 @@ import { 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 { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; 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'; 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 index 1e8ccc7df4..30228ae51f 100644 --- 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 @@ -5,9 +5,9 @@ import { 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 { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; 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'; 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 index af9c79fb9d..ccbf5d7550 100644 --- 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 @@ -5,10 +5,10 @@ import { 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 { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; 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'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts new file mode 100644 index 0000000000..f43c2ef59b --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from '@nestjs/common'; + +import { + OptimisticallyApplyActionOnAllFlatEntityMapsArgs, + WorkspaceMigrationRunnerActionHandler, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; + +import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; +import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { CreatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-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 CreatePageLayoutWidgetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'create_page_layout_widget', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutWidgetMaps } = allFlatEntityMaps; + const { pageLayoutWidget } = action; + + const updatedFlatPageLayoutWidgetMaps = + addFlatEntityToFlatEntityMapsOrThrow({ + flatEntity: pageLayoutWidget, + flatEntityMaps: flatPageLayoutWidgetMaps, + }); + + return { + flatPageLayoutWidgetMaps: updatedFlatPageLayoutWidgetMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner, workspaceId } = context; + const { pageLayoutWidget } = action; + + const pageLayoutWidgetRepository = + queryRunner.manager.getRepository( + PageLayoutWidgetEntity, + ); + + await pageLayoutWidgetRepository.insert({ + ...pageLayoutWidget, + 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-widget/services/delete-page-layout-widget-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts new file mode 100644 index 0000000000..69366bc563 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts @@ -0,0 +1,59 @@ +import { Injectable } from '@nestjs/common'; + +import { + OptimisticallyApplyActionOnAllFlatEntityMapsArgs, + WorkspaceMigrationRunnerActionHandler, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; + +import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; +import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { DeletePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-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 DeletePageLayoutWidgetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'delete_page_layout_widget', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutWidgetMaps } = allFlatEntityMaps; + const { pageLayoutWidgetId } = action; + + const updatedFlatPageLayoutWidgetMaps = + deleteFlatEntityFromFlatEntityMapsOrThrow({ + entityToDeleteId: pageLayoutWidgetId, + flatEntityMaps: flatPageLayoutWidgetMaps, + }); + + return { + flatPageLayoutWidgetMaps: updatedFlatPageLayoutWidgetMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner } = context; + const { pageLayoutWidgetId } = action; + + const pageLayoutWidgetRepository = + queryRunner.manager.getRepository( + PageLayoutWidgetEntity, + ); + + await pageLayoutWidgetRepository.delete({ id: pageLayoutWidgetId }); + } + + 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-widget/services/update-page-layout-widget-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts new file mode 100644 index 0000000000..18c57ada3f --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts @@ -0,0 +1,81 @@ +import { Injectable } from '@nestjs/common'; + +import { + OptimisticallyApplyActionOnAllFlatEntityMapsArgs, + WorkspaceMigrationRunnerActionHandler, +} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; + +import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; +import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; +import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; +import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { UpdatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-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 UpdatePageLayoutWidgetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( + 'update_page_layout_widget', +) { + constructor() { + super(); + } + + optimisticallyApplyActionOnAllFlatEntityMaps({ + action, + allFlatEntityMaps, + }: OptimisticallyApplyActionOnAllFlatEntityMapsArgs): Partial { + const { flatPageLayoutWidgetMaps } = allFlatEntityMaps; + const { pageLayoutWidgetId, updates } = action; + + const existingPageLayoutWidget = findFlatEntityByIdInFlatEntityMapsOrThrow({ + flatEntityId: pageLayoutWidgetId, + flatEntityMaps: flatPageLayoutWidgetMaps, + }); + + const updatedPageLayoutWidget = { + ...existingPageLayoutWidget, + ...fromFlatEntityPropertiesUpdatesToPartialFlatEntity({ + updates, + }), + }; + + const updatedFlatPageLayoutWidgetMaps = + replaceFlatEntityInFlatEntityMapsOrThrow({ + flatEntity: updatedPageLayoutWidget, + flatEntityMaps: flatPageLayoutWidgetMaps, + }); + + return { + flatPageLayoutWidgetMaps: updatedFlatPageLayoutWidgetMaps, + }; + } + + async executeForMetadata( + context: WorkspaceMigrationActionRunnerArgs, + ): Promise { + const { action, queryRunner } = context; + const { pageLayoutWidgetId, updates } = action; + + const pageLayoutWidgetRepository = + queryRunner.manager.getRepository( + PageLayoutWidgetEntity, + ); + + const partialPageLayoutWidget = + fromFlatEntityPropertiesUpdatesToPartialFlatEntity({ + updates, + }); + + await pageLayoutWidgetRepository.update( + { id: pageLayoutWidgetId }, + partialPageLayoutWidget, + ); + } + + 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 1da9a61018..5c2b17ccda 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,9 +4,6 @@ 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'; @@ -21,6 +18,12 @@ import { DeleteIndexActionHandlerService } from 'src/engine/workspace-manager/wo import { CreateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/create-object-action-handler.service'; import { DeleteObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/delete-object-action-handler.service'; import { UpdateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/update-object-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 { CreatePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service'; +import { DeletePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service'; +import { UpdatePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service'; import { CreateRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/create-role-target-action-handler.service'; import { DeleteRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/delete-role-target-action-handler.service'; import { UpdateRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/update-role-target-action-handler.service'; @@ -104,6 +107,10 @@ import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/wor UpdateAgentActionHandlerService, DeleteAgentActionHandlerService, + CreatePageLayoutWidgetActionHandlerService, + UpdatePageLayoutWidgetActionHandlerService, + DeletePageLayoutWidgetActionHandlerService, + CreatePageLayoutTabActionHandlerService, UpdatePageLayoutTabActionHandlerService, DeletePageLayoutTabActionHandlerService, diff --git a/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-create-one.pre-query.hook.ts b/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-create-one.pre-query.hook.ts index 6ccac8a6fc..d06eb6efbc 100644 --- a/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-create-one.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-create-one.pre-query.hook.ts @@ -9,9 +9,9 @@ import { type CreateOneResolverArgs } from 'src/engine/api/graphql/workspace-res import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator'; import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; -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 { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout/services/page-layout-tab.service'; +import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; import { WorkspaceNotFoundDefaultError } from 'src/engine/core-modules/workspace/workspace.exception'; import { type DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; diff --git a/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-query-hook.module.ts b/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-query-hook.module.ts index c1a9eccf7e..654f2f611c 100644 --- a/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-query-hook.module.ts +++ b/packages/twenty-server/src/modules/dashboard/query-hooks/dashboard-query-hook.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; -import { PageLayoutModule } from 'src/engine/core-modules/page-layout/page-layout.module'; +import { PageLayoutModule } from 'src/engine/metadata-modules/page-layout/page-layout.module'; import { DashboardCreateOnePreQueryHook } from 'src/modules/dashboard/query-hooks/dashboard-create-one.pre-query.hook'; @Module({ diff --git a/packages/twenty-server/test/integration/constants/widget-configuration-test-data.constants.ts b/packages/twenty-server/test/integration/constants/widget-configuration-test-data.constants.ts index ac648dae32..119d86d0ce 100644 --- a/packages/twenty-server/test/integration/constants/widget-configuration-test-data.constants.ts +++ b/packages/twenty-server/test/integration/constants/widget-configuration-test-data.constants.ts @@ -1,7 +1,7 @@ import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { AxisNameDisplay } from 'src/engine/core-modules/page-layout/enums/axis-name-display.enum'; -import { GraphOrderBy } from 'src/engine/core-modules/page-layout/enums/graph-order-by.enum'; -import { GraphType } from 'src/engine/core-modules/page-layout/enums/graph-type.enum'; +import { AxisNameDisplay } from 'src/engine/metadata-modules/page-layout/enums/axis-name-display.enum'; +import { GraphOrderBy } from 'src/engine/metadata-modules/page-layout/enums/graph-order-by.enum'; +import { GraphType } from 'src/engine/metadata-modules/page-layout/enums/graph-type.enum'; export const TEST_FIELD_METADATA_ID_1 = '20202020-1111-4111-a111-111111111111'; export const TEST_FIELD_METADATA_ID_2 = '20202020-2222-4222-a222-222222222222'; diff --git a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-resolver.integration-spec.ts index 59d3ab2172..680c9e02de 100644 --- a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-resolver.integration-spec.ts @@ -22,11 +22,11 @@ import { } from 'test/integration/utils/page-layout-test.util'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PageLayoutExceptionMessageKey, generatePageLayoutExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; describe('Page Layout Resolver', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-tab-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-tab-resolver.integration-spec.ts index 4d5f91fd61..efe3f65599 100644 --- a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-tab-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-tab-resolver.integration-spec.ts @@ -26,11 +26,11 @@ import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object import { assertPageLayoutTabStructure } from 'test/integration/utils/page-layout-tab-test.util'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PageLayoutTabExceptionMessageKey, generatePageLayoutTabExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; describe('Page Layout Tab Resolver', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-update-with-tabs-and-widgets.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-update-with-tabs-and-widgets.integration-spec.ts index a39e45a003..dfa6caf7a6 100644 --- a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-update-with-tabs-and-widgets.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-update-with-tabs-and-widgets.integration-spec.ts @@ -23,9 +23,9 @@ import { cleanupPageLayoutWidgetRecords } from 'test/integration/utils/page-layo import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { type PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; const existingTabId = '20202020-e02c-4292-9994-42695c4e41e8'; const tabToUpdateId = '20202020-974a-4480-b814-1fca24937132'; diff --git a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-widget-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-widget-resolver.integration-spec.ts index 4396d7a137..a095b8e68f 100644 --- a/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-widget-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/page-layout/page-layout-widget-resolver.integration-spec.ts @@ -28,13 +28,13 @@ import { assertPageLayoutWidgetStructure } from 'test/integration/utils/page-lay import { isDefined } from 'twenty-shared/utils'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { type PageLayoutWidgetEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-widget.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { PageLayoutWidgetExceptionMessageKey, generatePageLayoutWidgetExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; describe('Page Layout Widget Resolver', () => { let testObjectMetadataId: string; 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 4b952d4497..cc00976433 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 @@ -12,6 +12,7 @@ exports[`View Field Resolver - Failing Create Many Operations - v2 should accumu "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -84,6 +85,7 @@ exports[`View Field Resolver - Failing Create Many Operations - v2 should accumu "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 b4680e0f39..7a67e3e1f4 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 @@ -12,6 +12,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 Should fail to crea "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -47,6 +48,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 Should fail to crea "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -76,6 +78,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -111,6 +114,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -140,6 +144,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -175,6 +180,7 @@ exports[`View Field Resolver - Failing Create Operation - v2 should fail to crea "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 f1045b11d9..93f9fb6e00 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 @@ -12,6 +12,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -47,6 +48,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -76,6 +78,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -111,6 +114,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -140,6 +144,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -173,6 +178,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -202,6 +208,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -237,6 +244,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -266,6 +274,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -301,6 +310,7 @@ exports[`View Field Resolver - Successful object metadata identifier update side "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 152fb8c8c8..bf15ab1db6 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 @@ -12,6 +12,7 @@ exports[`View Group Resolver - Failing Create Many Operations - v2 should accumu "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -84,6 +85,7 @@ exports[`View Group Resolver - Failing Create Many Operations - v2 should accumu "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, diff --git a/packages/twenty-server/test/integration/graphql/utils/create-page-layout-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-page-layout-operation-factory.util.ts index 238e144632..b09f7c29e9 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-page-layout-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-page-layout-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { PAGE_LAYOUT_GQL_FIELDS } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type CreatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout.input'; +import { type CreatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout.input'; type CreatePageLayoutOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-page-layout-tab-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-page-layout-tab-operation-factory.util.ts index eb004eda2f..104b2a9865 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-page-layout-tab-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-page-layout-tab-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { PAGE_LAYOUT_TAB_GQL_FIELDS } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type CreatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; +import { type CreatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-tab.input'; type CreatePageLayoutTabOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-page-layout-widget-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-page-layout-widget-operation-factory.util.ts index 6fe920341d..d80a31cac0 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-page-layout-widget-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-page-layout-widget-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { PAGE_LAYOUT_WIDGET_GQL_FIELDS } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type CreatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; +import { type CreatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/create-page-layout-widget.input'; type CreatePageLayoutWidgetOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/page-layout-graphql.util.ts b/packages/twenty-server/test/integration/graphql/utils/page-layout-graphql.util.ts index a5506521ef..13a03b5910 100644 --- a/packages/twenty-server/test/integration/graphql/utils/page-layout-graphql.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/page-layout-graphql.util.ts @@ -1,8 +1,8 @@ import { type GraphQLResponse } from 'test/integration/graphql/utils/graphql-test-assertions.util'; import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util'; -import { type PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { createPageLayoutOperationFactory } from './create-page-layout-operation-factory.util'; import { destroyPageLayoutOperationFactory } from './destroy-page-layout-operation-factory.util'; diff --git a/packages/twenty-server/test/integration/graphql/utils/page-layout-tab-graphql.util.ts b/packages/twenty-server/test/integration/graphql/utils/page-layout-tab-graphql.util.ts index 1366744641..5c4ef4a628 100644 --- a/packages/twenty-server/test/integration/graphql/utils/page-layout-tab-graphql.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/page-layout-tab-graphql.util.ts @@ -1,7 +1,7 @@ import { type GraphQLResponse } from 'test/integration/graphql/utils/graphql-test-assertions.util'; import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util'; -import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; import { createPageLayoutTabOperationFactory } from './create-page-layout-tab-operation-factory.util'; import { destroyPageLayoutTabOperationFactory } from './destroy-page-layout-tab-operation-factory.util'; diff --git a/packages/twenty-server/test/integration/graphql/utils/page-layout-widget-graphql.util.ts b/packages/twenty-server/test/integration/graphql/utils/page-layout-widget-graphql.util.ts index b3d65c43a1..452ff1e63b 100644 --- a/packages/twenty-server/test/integration/graphql/utils/page-layout-widget-graphql.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/page-layout-widget-graphql.util.ts @@ -1,8 +1,8 @@ import { type GraphQLResponse } from 'test/integration/graphql/utils/graphql-test-assertions.util'; import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util'; -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'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { createPageLayoutWidgetOperationFactory } from './create-page-layout-widget-operation-factory.util'; import { destroyPageLayoutWidgetOperationFactory } from './destroy-page-layout-widget-operation-factory.util'; diff --git a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-operation-factory.util.ts index ae3812b652..38384d096f 100644 --- a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { PAGE_LAYOUT_GQL_FIELDS } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type UpdatePageLayoutInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout.input'; +import { type UpdatePageLayoutInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout.input'; type UpdatePageLayoutOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-tab-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-tab-operation-factory.util.ts index 7d6b3ffd5f..92a6e7ab02 100644 --- a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-tab-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-tab-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { PAGE_LAYOUT_TAB_GQL_FIELDS } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type UpdatePageLayoutTabInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-tab.input'; +import { type UpdatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-tab.input'; type UpdatePageLayoutTabOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-widget-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-widget-operation-factory.util.ts index d95f4def10..4b7f1c18d9 100644 --- a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-widget-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-widget-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { PAGE_LAYOUT_WIDGET_GQL_FIELDS } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type UpdatePageLayoutWidgetInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; +import { type UpdatePageLayoutWidgetInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-widget.input'; type UpdatePageLayoutWidgetOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-with-tabs-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-with-tabs-operation-factory.util.ts index ed765619e5..322c94856b 100644 --- a/packages/twenty-server/test/integration/graphql/utils/update-page-layout-with-tabs-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/update-page-layout-with-tabs-operation-factory.util.ts @@ -4,7 +4,7 @@ import { PAGE_LAYOUT_WIDGET_CONFIGURATION_FIELDS, } from 'test/integration/constants/page-layout-gql-fields.constants'; -import { type UpdatePageLayoutWithTabsInput } from 'src/engine/core-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input'; +import { type UpdatePageLayoutWithTabsInput } from 'src/engine/metadata-modules/page-layout/dtos/inputs/update-page-layout-with-tabs.input'; type UpdatePageLayoutWithTabsOperationFactoryParams = { gqlFields?: string; 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 1125a5a47f..ae8f806f72 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 @@ -28,6 +28,7 @@ exports[`Agent creation should fail when computed name already exists 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`Agent creation should fail when computed name already exists 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -91,6 +93,7 @@ exports[`Agent creation should fail when label is empty string 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -109,6 +112,7 @@ exports[`Agent creation should fail when label is empty string 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -168,6 +172,7 @@ exports[`Agent creation should fail when modelId is empty string 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -186,6 +191,7 @@ exports[`Agent creation should fail when modelId is empty string 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -245,6 +251,7 @@ exports[`Agent creation should fail when prompt is empty string 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -263,6 +270,7 @@ exports[`Agent creation should fail when prompt is empty string 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -322,6 +330,7 @@ exports[`Agent creation should fail when responseFormat has invalid type 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -340,6 +349,7 @@ exports[`Agent creation should fail when responseFormat has invalid type 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -385,6 +395,7 @@ exports[`Agent creation should fail when responseFormat type is json but schema "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -403,6 +414,7 @@ exports[`Agent creation should fail when responseFormat type is json but schema "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -448,6 +460,7 @@ exports[`Agent creation should fail when responseFormat type is text but schema "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -466,6 +479,7 @@ exports[`Agent creation should fail when responseFormat type is text but schema "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 ca36d3a281..7f8950d722 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 @@ -28,6 +28,7 @@ exports[`Agent deletion should fail should fail when attempting to delete a stan "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`Agent deletion should fail should fail when attempting to delete a stan "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 2a74d13f53..042ed929f3 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 @@ -27,6 +27,7 @@ exports[`Agent update should fail should fail when attempting to update a standa "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -45,6 +46,7 @@ exports[`Agent update should fail should fail when attempting to update a standa "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -111,6 +113,7 @@ exports[`Agent update should fail when settings null required properties 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -129,6 +132,7 @@ exports[`Agent update should fail when settings null required properties 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -173,6 +177,7 @@ exports[`Agent update should fail when updating label to one that already exists "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -191,6 +196,7 @@ exports[`Agent update should fail when updating label to one that already exists "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -235,6 +241,7 @@ exports[`Agent update should fail when updating responseFormat type to json with "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -253,6 +260,7 @@ exports[`Agent update should fail when updating responseFormat type to json with "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -297,6 +305,7 @@ exports[`Agent update should fail when updating responseFormat type to text with "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -315,6 +324,7 @@ exports[`Agent update should fail when updating responseFormat type to text with "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -359,6 +369,7 @@ exports[`Agent update should fail when updating responseFormat with invalid type "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -377,6 +388,7 @@ exports[`Agent update should fail when updating responseFormat with invalid type "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -421,6 +433,7 @@ exports[`Agent update should fail when updating with empty label 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -439,6 +452,7 @@ exports[`Agent update should fail when updating with empty label 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -483,6 +497,7 @@ exports[`Agent update should fail when updating with empty modelId 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -501,6 +516,7 @@ exports[`Agent update should fail when updating with empty modelId 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -545,6 +561,7 @@ exports[`Agent update should fail when updating with empty prompt 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -563,6 +580,7 @@ exports[`Agent update should fail when updating with empty prompt 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 68ea2e00e1..0654d2bcd6 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 @@ -30,6 +30,7 @@ exports[`createOne FieldMetadataService name/label sync should return an error w "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -48,6 +49,7 @@ exports[`createOne FieldMetadataService name/label sync should return an error w "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 0ab84894ea..6a942f93bb 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 @@ -31,6 +31,7 @@ exports[`Failing create field metadata tests suite should fail to create NUMERIC "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -49,6 +50,7 @@ exports[`Failing create field metadata tests suite should fail to create NUMERIC "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -98,6 +100,7 @@ exports[`Failing create field metadata tests suite should fail to create POSITIO "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -116,6 +119,7 @@ exports[`Failing create field metadata tests suite should fail to create POSITIO "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -158,6 +162,7 @@ exports[`Failing create field metadata tests suite should fail to create TS_VECT }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -176,6 +181,7 @@ exports[`Failing create field metadata tests suite should fail to create TS_VECT "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 9ececb91a8..3ec7876b8d 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 @@ -30,6 +30,7 @@ exports[`updateOne failing update should not update a field name if it is not sy "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -48,6 +49,7 @@ exports[`updateOne failing update should not update a field name if it is not sy "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -102,6 +104,7 @@ exports[`updateOne failing update should throw if the field name is not availabl "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -120,6 +123,7 @@ exports[`updateOne failing update should throw if the field name is not availabl "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 9410a84430..9c5e767886 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 @@ -31,6 +31,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -49,6 +50,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -98,6 +100,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -116,6 +119,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -165,6 +169,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -183,6 +188,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -247,6 +253,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -265,6 +272,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -329,6 +337,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -347,6 +356,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -411,6 +421,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -429,6 +440,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -493,6 +505,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -511,6 +524,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -560,6 +574,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -578,6 +593,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -627,6 +643,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -645,6 +662,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -700,6 +718,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -718,6 +737,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -767,6 +787,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -785,6 +806,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -834,6 +856,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -852,6 +875,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -901,6 +925,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -919,6 +944,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -986,6 +1012,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1004,6 +1031,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1053,6 +1081,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1071,6 +1100,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1120,6 +1150,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1138,6 +1169,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1187,6 +1219,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1205,6 +1238,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1254,6 +1288,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1272,6 +1307,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1321,6 +1357,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1339,6 +1376,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1388,6 +1426,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1406,6 +1445,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1455,6 +1495,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1473,6 +1514,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1527,6 +1569,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1545,6 +1588,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1593,6 +1637,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1611,6 +1656,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1660,6 +1706,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1678,6 +1725,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1726,6 +1774,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1744,6 +1793,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1799,6 +1849,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1817,6 +1868,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1866,6 +1918,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1884,6 +1937,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1933,6 +1987,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1951,6 +2006,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2000,6 +2056,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2018,6 +2075,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2073,6 +2131,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2091,6 +2150,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2140,6 +2200,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2158,6 +2219,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2207,6 +2269,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2225,6 +2288,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2280,6 +2344,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2298,6 +2363,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2346,6 +2412,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2364,6 +2431,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2412,6 +2480,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2430,6 +2499,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2479,6 +2549,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2497,6 +2568,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2546,6 +2618,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2564,6 +2637,7 @@ exports[`Failing create field metadata MULTI_SELECT tests suite v2 Create should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2619,6 +2693,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2637,6 +2712,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2686,6 +2762,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2704,6 +2781,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2753,6 +2831,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2771,6 +2850,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2835,6 +2915,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2853,6 +2934,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2917,6 +2999,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2935,6 +3018,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2999,6 +3083,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3017,6 +3102,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3081,6 +3167,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3099,6 +3186,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3148,6 +3236,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3166,6 +3255,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3221,6 +3311,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3239,6 +3330,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3288,6 +3380,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3306,6 +3399,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3355,6 +3449,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3373,6 +3468,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3422,6 +3518,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3440,6 +3537,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3489,6 +3587,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3507,6 +3606,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3556,6 +3656,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3574,6 +3675,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3623,6 +3725,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3641,6 +3744,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3690,6 +3794,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3708,6 +3813,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3757,6 +3863,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3775,6 +3882,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3824,6 +3932,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3842,6 +3951,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3896,6 +4006,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3914,6 +4025,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3962,6 +4074,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3980,6 +4093,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4029,6 +4143,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4047,6 +4162,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4095,6 +4211,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4113,6 +4230,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4168,6 +4286,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4186,6 +4305,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4235,6 +4355,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4253,6 +4374,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4302,6 +4424,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4320,6 +4443,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4369,6 +4493,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4387,6 +4512,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4442,6 +4568,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4460,6 +4587,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4509,6 +4637,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4527,6 +4656,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4576,6 +4706,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4594,6 +4725,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4649,6 +4781,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4667,6 +4800,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4715,6 +4849,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4733,6 +4868,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4781,6 +4917,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4799,6 +4936,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4848,6 +4986,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4866,6 +5005,7 @@ exports[`Failing create field metadata SELECT tests suite v2 Create should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 ddb8599f96..1ab1d011bd 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 @@ -31,6 +31,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -49,6 +50,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -98,6 +100,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -116,6 +119,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -165,6 +169,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -183,6 +188,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -247,6 +253,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -265,6 +272,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -329,6 +337,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -347,6 +356,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -411,6 +421,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -429,6 +440,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -493,6 +505,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -511,6 +524,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -560,6 +574,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -578,6 +593,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -627,6 +643,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -645,6 +662,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -700,6 +718,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -718,6 +737,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -767,6 +787,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -785,6 +806,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -834,6 +856,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -852,6 +875,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -901,6 +925,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -919,6 +944,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -986,6 +1012,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1004,6 +1031,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1053,6 +1081,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1071,6 +1100,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1120,6 +1150,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1138,6 +1169,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1187,6 +1219,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1205,6 +1238,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1254,6 +1288,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1272,6 +1307,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1321,6 +1357,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1339,6 +1376,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1388,6 +1426,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1406,6 +1445,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1455,6 +1495,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1473,6 +1514,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1527,6 +1569,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1545,6 +1588,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1593,6 +1637,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1611,6 +1656,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1659,6 +1705,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1677,6 +1724,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1732,6 +1780,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1750,6 +1799,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1799,6 +1849,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1817,6 +1868,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1866,6 +1918,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1884,6 +1937,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1933,6 +1987,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1951,6 +2006,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2006,6 +2062,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2024,6 +2081,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2073,6 +2131,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2091,6 +2150,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2140,6 +2200,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2158,6 +2219,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2213,6 +2275,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2231,6 +2294,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2279,6 +2343,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2297,6 +2362,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2345,6 +2411,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2363,6 +2430,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2412,6 +2480,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2430,6 +2499,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2479,6 +2549,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2497,6 +2568,7 @@ exports[`Failing update field metadata MULTI_SELECT tests suite v2 Update should "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2552,6 +2624,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2570,6 +2643,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2619,6 +2693,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2637,6 +2712,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2686,6 +2762,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2704,6 +2781,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2768,6 +2846,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2786,6 +2865,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2850,6 +2930,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2868,6 +2949,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2932,6 +3014,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2950,6 +3033,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3014,6 +3098,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3032,6 +3117,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3081,6 +3167,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3099,6 +3186,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3154,6 +3242,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3172,6 +3261,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3221,6 +3311,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3239,6 +3330,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3288,6 +3380,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3306,6 +3399,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3355,6 +3449,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3373,6 +3468,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3422,6 +3518,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3440,6 +3537,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3489,6 +3587,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3507,6 +3606,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3556,6 +3656,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3574,6 +3675,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3623,6 +3725,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3641,6 +3744,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3690,6 +3794,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3708,6 +3813,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3757,6 +3863,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3775,6 +3882,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3829,6 +3937,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3847,6 +3956,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3895,6 +4005,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3913,6 +4024,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3961,6 +4073,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3979,6 +4092,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4034,6 +4148,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4052,6 +4167,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4101,6 +4217,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4119,6 +4236,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4168,6 +4286,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4186,6 +4305,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4235,6 +4355,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4253,6 +4374,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4308,6 +4430,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4326,6 +4449,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4375,6 +4499,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4393,6 +4518,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4442,6 +4568,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4460,6 +4587,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4515,6 +4643,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4533,6 +4662,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4581,6 +4711,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4599,6 +4730,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4647,6 +4779,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4665,6 +4798,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4714,6 +4848,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4732,6 +4867,7 @@ exports[`Failing update field metadata SELECT tests suite v2 Update should fail "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 b03995cb3e..bce94184a9 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 @@ -73,6 +73,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -91,6 +92,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -169,6 +171,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -187,6 +190,7 @@ exports[`updateOne FieldMetadataService morph relation fields v2 - Add one targe "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 e3a9d7db26..3a65cfe512 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 @@ -78,6 +78,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -96,6 +97,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -143,6 +145,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -161,6 +164,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 Morh re "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -202,6 +206,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -220,6 +225,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -261,6 +267,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -279,6 +286,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -348,6 +356,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -366,6 +375,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -429,6 +439,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -447,6 +458,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -510,6 +522,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -528,6 +541,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -597,6 +611,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -615,6 +630,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -664,6 +680,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -682,6 +699,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -731,6 +749,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -749,6 +768,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -797,6 +817,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -815,6 +836,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -856,6 +878,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -874,6 +897,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -915,6 +939,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -933,6 +958,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -974,6 +1000,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -992,6 +1019,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1036,6 +1064,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1054,6 +1083,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1096,6 +1126,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1114,6 +1145,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1155,6 +1187,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1173,6 +1206,7 @@ exports[`failing createOne FieldMetadataService morph relation fields v2 it shou "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 d1302484aa..ae375dd24c 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 @@ -30,6 +30,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -48,6 +49,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -95,6 +97,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -113,6 +116,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -166,6 +170,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -184,6 +189,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -231,6 +237,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -249,6 +256,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -302,6 +310,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -320,6 +329,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -367,6 +377,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -385,6 +396,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -432,6 +444,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -450,6 +463,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -496,6 +510,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -514,6 +529,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -593,6 +609,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -611,6 +628,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -658,6 +676,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -676,6 +695,7 @@ exports[`Field metadata relation creation should fail relation MANY_TO_ONE when "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -740,6 +760,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -758,6 +779,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -823,6 +845,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -841,6 +864,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -912,6 +936,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -930,6 +955,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -995,6 +1021,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1013,6 +1040,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1084,6 +1112,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1102,6 +1131,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1151,6 +1181,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1169,6 +1200,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1218,6 +1250,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1236,6 +1269,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1284,6 +1318,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1302,6 +1337,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY (rela "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1383,6 +1419,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1401,6 +1438,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1450,6 +1488,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1468,6 +1507,7 @@ exports[`Field metadata relation creation should fail relation ONE_TO_MANY when "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1516,6 +1556,7 @@ exports[`Field metadata relation creation should fail should fail when creating "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1534,6 +1575,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1597,6 +1639,7 @@ exports[`Field metadata relation creation should fail should fail when creating ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1615,6 +1658,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1694,6 +1738,7 @@ exports[`Field metadata relation creation should fail should fail when creating ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1712,6 +1757,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1791,6 +1837,7 @@ exports[`Field metadata relation creation should fail should fail when creating ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1809,6 +1856,7 @@ exports[`Field metadata relation creation should fail should fail when creating "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 36ca4ec144..caad68c39f 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 @@ -37,6 +37,7 @@ exports[`Field metadata relation update should fail relation when name is not in "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -55,6 +56,7 @@ exports[`Field metadata relation update should fail relation when name is not in "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 630c7ba478..3996412087 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 @@ -28,6 +28,7 @@ exports[`failing createOne unique field metadata should fail for composite type ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`failing createOne unique field metadata should fail for composite type "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -91,6 +93,7 @@ exports[`failing createOne unique field metadata should fail when field has cust ], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -109,6 +112,7 @@ exports[`failing createOne unique field metadata should fail when field has cust "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 d1a5bcb4e8..fbe945b300 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 @@ -340,6 +340,7 @@ exports[`Object metadata creation should fail v2 when labelPlural contains only }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -605,6 +606,7 @@ exports[`Object metadata creation should fail v2 when labelPlural contains only "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -962,6 +964,7 @@ exports[`Object metadata creation should fail v2 when labelPlural exceeds maximu }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1227,6 +1230,7 @@ exports[`Object metadata creation should fail v2 when labelPlural exceeds maximu "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -1595,6 +1599,7 @@ exports[`Object metadata creation should fail v2 when labelSingular contains onl }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -1860,6 +1865,7 @@ exports[`Object metadata creation should fail v2 when labelSingular contains onl "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2217,6 +2223,7 @@ exports[`Object metadata creation should fail v2 when labelSingular exceeds maxi }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -2482,6 +2489,7 @@ exports[`Object metadata creation should fail v2 when labelSingular exceeds maxi "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -2850,6 +2858,7 @@ exports[`Object metadata creation should fail v2 when labels are identical 1`] = }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3115,6 +3124,7 @@ exports[`Object metadata creation should fail v2 when labels are identical 1`] = "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -3472,6 +3482,7 @@ exports[`Object metadata creation should fail v2 when labels with whitespaces re }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -3737,6 +3748,7 @@ exports[`Object metadata creation should fail v2 when labels with whitespaces re "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4124,6 +4136,7 @@ exports[`Object metadata creation should fail v2 when name exceeds maximum lengt }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -4389,6 +4402,7 @@ exports[`Object metadata creation should fail v2 when name exceeds maximum lengt "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -4746,6 +4760,7 @@ exports[`Object metadata creation should fail v2 when namePlural has invalid cha }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -5011,6 +5026,7 @@ exports[`Object metadata creation should fail v2 when namePlural has invalid cha "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -5368,6 +5384,7 @@ exports[`Object metadata creation should fail v2 when namePlural is a reserved k }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -5633,6 +5650,7 @@ exports[`Object metadata creation should fail v2 when namePlural is a reserved k "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -6007,6 +6025,7 @@ exports[`Object metadata creation should fail v2 when namePlural is not camelCas }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -6272,6 +6291,7 @@ exports[`Object metadata creation should fail v2 when namePlural is not camelCas "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -6695,6 +6715,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -6960,6 +6981,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -7383,6 +7405,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -7648,6 +7671,7 @@ exports[`Object metadata creation should fail v2 when nameSingular contains only "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -8035,6 +8059,7 @@ exports[`Object metadata creation should fail v2 when nameSingular has invalid c }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -8300,6 +8325,7 @@ exports[`Object metadata creation should fail v2 when nameSingular has invalid c "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -8687,6 +8713,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is a reserved }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -8952,6 +8979,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is a reserved "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -9386,6 +9414,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is not camelC }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -9651,6 +9680,7 @@ exports[`Object metadata creation should fail v2 when nameSingular is not camelC "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -10008,6 +10038,7 @@ exports[`Object metadata creation should fail v2 when names are identical 1`] = }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -10273,6 +10304,7 @@ exports[`Object metadata creation should fail v2 when names are identical 1`] = "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -10630,6 +10662,7 @@ exports[`Object metadata creation should fail v2 when names with whitespaces res }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -10895,6 +10928,7 @@ exports[`Object metadata creation should fail v2 when names with whitespaces res "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 918516169c..d212a74c48 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 @@ -30,6 +30,7 @@ exports[`Object metadata update should fail when labelIdentifier is a UUID field }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -65,6 +66,7 @@ exports[`Object metadata update should fail when labelIdentifier is a UUID field "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -113,6 +115,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a TEXT o }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -148,6 +151,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a TEXT o "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -196,6 +200,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a known }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -236,6 +241,7 @@ exports[`Object metadata update should fail when labelIdentifier is not a known "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -301,6 +307,7 @@ exports[`Object metadata update should fail when labelIdentifier is null 1`] = ` }, ], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -319,6 +326,7 @@ exports[`Object metadata update should fail when labelIdentifier is null 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 cdb245086a..4da38917f8 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 @@ -12,6 +12,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -46,6 +47,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -75,6 +77,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -109,6 +112,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -138,6 +142,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -172,6 +177,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but can "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -201,6 +207,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but mul "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -235,6 +242,7 @@ exports[`Role creation should fail when canReadAllObjectRecords is false but mul "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -264,6 +272,7 @@ exports[`Role creation should fail when label already exists 1`] = ` "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -298,6 +307,7 @@ exports[`Role creation should fail when label already exists 1`] = ` "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 0aeff71d9c..fc1b42fe7f 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 @@ -24,6 +24,7 @@ exports[`Role update should fail updating role with existing write permissions s "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -57,6 +58,7 @@ exports[`Role update should fail updating role with existing write permissions s "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -86,6 +88,7 @@ exports[`Role update should fail when updating a non-editable system role 1`] = "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -119,6 +122,7 @@ exports[`Role update should fail when updating a non-editable system role 1`] = "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -148,6 +152,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -181,6 +186,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -210,6 +216,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -243,6 +250,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -272,6 +280,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -305,6 +314,7 @@ exports[`Role update should fail when updating canReadAllObjectRecords to false "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -334,6 +344,7 @@ exports[`Role update should fail when updating label to one that already exists "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -367,6 +378,7 @@ exports[`Role update should fail when updating label to one that already exists "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, @@ -396,6 +408,7 @@ exports[`Role update should fail when updating to enable write permissions witho "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [ { "errors": [ @@ -429,6 +442,7 @@ exports[`Role update should fail when updating to enable write permissions witho "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 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 339bb61d4f..229e77f118 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 @@ -11,6 +11,7 @@ exports[`View Group REST API POST /metadata/viewGroups should fail to create vie "index": [], "objectMetadata": [], "pageLayoutTab": [], + "pageLayoutWidget": [], "role": [], "roleTarget": [], "routeTrigger": [], @@ -46,6 +47,7 @@ exports[`View Group REST API POST /metadata/viewGroups should fail to create vie "invalidIndex": 0, "invalidObjectMetadata": 0, "invalidPageLayoutTab": 0, + "invalidPageLayoutWidget": 0, "invalidRole": 0, "invalidRoleTarget": 0, "invalidRouteTrigger": 0, diff --git a/packages/twenty-server/test/integration/rest/suites/page-layout-tab.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/page-layout-tab.integration-spec.ts index b7f0d01962..f406668b0f 100644 --- a/packages/twenty-server/test/integration/rest/suites/page-layout-tab.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/page-layout-tab.integration-spec.ts @@ -22,11 +22,11 @@ import { cleanupPageLayoutTabRecords, } from 'test/integration/utils/page-layout-tab-test.util'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PageLayoutTabExceptionMessageKey, generatePageLayoutTabExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-tab.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-tab.exception'; describe('Page Layout Tab REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/suites/page-layout-widget.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/page-layout-widget.integration-spec.ts index f142e5065f..ec98580b7d 100644 --- a/packages/twenty-server/test/integration/rest/suites/page-layout-widget.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/page-layout-widget.integration-spec.ts @@ -26,12 +26,12 @@ import { cleanupPageLayoutWidgetRecords, } from 'test/integration/utils/page-layout-widget-test.util'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; -import { WidgetType } from 'src/engine/core-modules/page-layout/enums/widget-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; import { PageLayoutWidgetExceptionMessageKey, generatePageLayoutWidgetExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout-widget.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout-widget.exception'; describe('Page Layout Widget REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/suites/page-layout.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/page-layout.integration-spec.ts index 98737e8f0b..c041a3c755 100644 --- a/packages/twenty-server/test/integration/rest/suites/page-layout.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/page-layout.integration-spec.ts @@ -17,11 +17,11 @@ import { cleanupPageLayoutRecords, } from 'test/integration/utils/page-layout-test.util'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; import { PageLayoutExceptionMessageKey, generatePageLayoutExceptionMessage, -} from 'src/engine/core-modules/page-layout/exceptions/page-layout.exception'; +} from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; describe('Page Layout REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/utils/page-layout-rest-api.util.ts b/packages/twenty-server/test/integration/rest/utils/page-layout-rest-api.util.ts index b50993210a..d5bad2a42b 100644 --- a/packages/twenty-server/test/integration/rest/utils/page-layout-rest-api.util.ts +++ b/packages/twenty-server/test/integration/rest/utils/page-layout-rest-api.util.ts @@ -1,8 +1,8 @@ import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; import { generateRecordName } from 'test/integration/utils/generate-record-name'; -import { type PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; export const createTestPageLayoutWithRestApi = async ( overrides: Partial = {}, diff --git a/packages/twenty-server/test/integration/rest/utils/page-layout-tab-rest-api.util.ts b/packages/twenty-server/test/integration/rest/utils/page-layout-tab-rest-api.util.ts index a08f325b5e..0a8f98ba24 100644 --- a/packages/twenty-server/test/integration/rest/utils/page-layout-tab-rest-api.util.ts +++ b/packages/twenty-server/test/integration/rest/utils/page-layout-tab-rest-api.util.ts @@ -1,7 +1,7 @@ import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; import { generateRecordName } from 'test/integration/utils/generate-record-name'; -import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; export const createTestPageLayoutTabWithRestApi = async ( overrides: Partial = {}, diff --git a/packages/twenty-server/test/integration/rest/utils/page-layout-widget-rest-api.util.ts b/packages/twenty-server/test/integration/rest/utils/page-layout-widget-rest-api.util.ts index e83077c234..1fbb7cc525 100644 --- a/packages/twenty-server/test/integration/rest/utils/page-layout-widget-rest-api.util.ts +++ b/packages/twenty-server/test/integration/rest/utils/page-layout-widget-rest-api.util.ts @@ -1,8 +1,8 @@ import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; import { generateRecordName } from 'test/integration/utils/generate-record-name'; -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'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; +import { WidgetType } from 'src/engine/metadata-modules/page-layout/enums/widget-type.enum'; export const createTestPageLayoutWidgetWithRestApi = async ( overrides: Partial = {}, diff --git a/packages/twenty-server/test/integration/utils/page-layout-tab-test.util.ts b/packages/twenty-server/test/integration/utils/page-layout-tab-test.util.ts index d99395f38a..dfa6b35fd2 100644 --- a/packages/twenty-server/test/integration/utils/page-layout-tab-test.util.ts +++ b/packages/twenty-server/test/integration/utils/page-layout-tab-test.util.ts @@ -1,4 +1,4 @@ -import { type PageLayoutTabEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-tab.entity'; +import { type PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-tab.entity'; export const cleanupPageLayoutTabRecords = async (): Promise => { await global.testDataSource.query(`DELETE from "core"."pageLayoutTab"`); diff --git a/packages/twenty-server/test/integration/utils/page-layout-test.util.ts b/packages/twenty-server/test/integration/utils/page-layout-test.util.ts index 9a4490204e..8b08788716 100644 --- a/packages/twenty-server/test/integration/utils/page-layout-test.util.ts +++ b/packages/twenty-server/test/integration/utils/page-layout-test.util.ts @@ -1,5 +1,5 @@ -import { type PageLayoutEntity } from 'src/engine/core-modules/page-layout/entities/page-layout.entity'; -import { PageLayoutType } from 'src/engine/core-modules/page-layout/enums/page-layout-type.enum'; +import { type PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; export const cleanupPageLayoutRecords = async (): Promise => { await global.testDataSource.query(`DELETE from "core"."pageLayout"`); diff --git a/packages/twenty-server/test/integration/utils/page-layout-widget-test.util.ts b/packages/twenty-server/test/integration/utils/page-layout-widget-test.util.ts index e67a945687..939939c85a 100644 --- a/packages/twenty-server/test/integration/utils/page-layout-widget-test.util.ts +++ b/packages/twenty-server/test/integration/utils/page-layout-widget-test.util.ts @@ -1,4 +1,4 @@ -import { type PageLayoutWidgetEntity } from 'src/engine/core-modules/page-layout/entities/page-layout-widget.entity'; +import { type PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout-widget.entity'; export const cleanupPageLayoutWidgetRecords = async (): Promise => { await global.testDataSource.query(`DELETE from "core"."pageLayoutWidget"`); 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 45d616b771..4121bf80c8 100644 --- a/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts +++ b/packages/twenty-shared/src/metadata/all-metadata-name.constant.ts @@ -13,5 +13,6 @@ export const ALL_METADATA_NAME = { role: 'role', roleTarget: 'roleTarget', agent: 'agent', + pageLayoutWidget: 'pageLayoutWidget', pageLayoutTab: 'pageLayoutTab', } as const;