From 59fbe35a8cbe173ca03a413e7aa347fcf79e0329 Mon Sep 17 00:00:00 2001 From: Paul Rastoin <45004772+prastoin@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:18:15 +0200 Subject: [PATCH] Move `view` in `metadata-modules/` and create atomic folder + module for each view entity (#14990) # Introduction Preparing view-filter and view-group introduction in v2 core engine Moving view from `core-modules` to `metadata-modules` ## What happened ### Created dedicated modules for each view entity: - ViewFieldModule - ViewFilterModule - ViewFilterGroupModule - ViewGroupModule - ViewSortModule ### Each module is now completely independent with its own: - Controller - Resolver - Service - Entity ### Created dedicated abstraction metadata module folder for: - flat-view-field - flat-view ### Dependencies - Eleminated circular dep on ViewModule to all others ones - Granular import not importing the whole viewModule anymore everywhere close https://github.com/twentyhq/core-team-issues/issues/1703 --- .../1-5/1-5-migrate-views-to-core.command.ts | 22 ++--- ...ntifier-position-and-visibility.command.ts | 4 +- .../1-6/1-6-upgrade-version-command.module.ts | 4 +- .../graphql-query-runner.module.ts | 8 +- ...graphql-query-group-by-resolver.service.ts | 8 +- ...t-entities-by-metadata-engine-name.type.ts | 4 +- .../engine/core-modules/core-engine.module.ts | 2 - ...flat-view-properies-to-compare.constant.ts | 8 -- .../view-graphql-api-exception.filter.ts | 34 ------- .../engine/core-modules/view/view.module.ts | 91 ------------------- .../workspace/workspace.entity.ts | 24 ++--- .../workspace/workspace.module.ts | 4 +- .../workspace/workspace.resolver.ts | 22 ++--- .../field-metadata/field-metadata.entity.ts | 2 +- .../field-metadata/field-metadata.module.ts | 10 +- .../field-metadata-related-records.spec.ts | 8 +- .../field-metadata-related-records.service.ts | 14 +-- ...metadata-and-related-flat-entities.util.ts | 2 +- ...fter-flat-object-identifier-update.util.ts | 2 +- ...view-field-editable-properties.constant.ts | 2 +- ...ew-field-properties-to-compare.constant.ts | 4 +- ...eld-entity-relation-properties.constant.ts | 2 +- ...space-flat-view-field-map-cache.service.ts | 6 +- .../types/flat-view-field-maps.type.ts | 2 +- ...t-view-field-properties-to-compare.type.ts | 2 +- .../types/flat-view-field.type.ts | 4 +- .../utils/compare-two-flat-view-field.util.ts | 6 +- ...input-to-flat-view-field-to-create.util.ts | 4 +- ...-input-to-flat-view-field-or-throw.util.ts | 8 +- ...-input-to-flat-view-field-or-throw.util.ts | 12 +-- ...flat-view-field-to-update-or-throw.util.ts | 10 +- ...ew-field-entity-to-flat-view-field.util.ts | 6 +- .../is-view-field-in-lowest-position.util.ts | 2 +- .../flat-view-editable-properties.constant.ts | 2 +- ...lat-view-properties-to-compare.constant.ts | 8 ++ ...iew-entity-relation-properties.constant.ts | 2 +- .../flat-view/flat-view.module.ts | 4 +- .../workspace-flat-view-map-cache.service.ts | 6 +- .../flat-view/types/flat-view-maps.type.ts | 2 +- .../flat-view-properties-to-compare.type.ts | 2 +- .../flat-view/types/flat-view.type.ts | 12 +-- .../utils/compare-two-flat-view.util.ts | 6 +- ...-view-input-to-flat-view-to-create.util.ts | 8 +- ...e-view-input-to-flat-view-or-throw.util.ts | 8 +- ...y-view-input-to-flat-view-or-throw.util.ts | 8 +- ...-view-to-flat-view-to-with-default.util.ts | 6 +- ...ut-to-flat-view-to-update-or-throw.util.ts | 10 +- .../from-view-entity-to-flat-view.util.ts | 6 +- .../metadata-engine.module.ts | 7 +- .../object-metadata-v2.service.ts | 10 +- .../object-metadata/object-metadata.entity.ts | 2 +- .../object-metadata/object-metadata.module.ts | 8 +- ...object-metadata-related-records.service.ts | 14 +-- .../controllers/view-field.controller.ts | 18 ++-- .../dtos/inputs/create-view-field.input.ts | 0 .../dtos/inputs/delete-view-field.input.ts | 0 .../dtos/inputs/destroy-view-field.input.ts | 0 .../dtos/inputs/update-view-field.input.ts | 0 .../view-field}/dtos/view-field.dto.ts | 0 .../view-field}/entities/view-field.entity.ts | 2 +- .../exceptions/view-field.exception.ts | 0 .../view-field-rest-api-exception.filter.ts | 2 +- .../resolvers/view-field.resolver.ts | 18 ++-- .../services/tests/view-field.service.spec.ts | 36 ++++---- .../services/view-field-v2.service.ts | 18 ++-- .../services/view-field.service.ts | 49 +++++++--- .../view-field/view-field.module.ts | 27 ++++++ .../view-filter-group.controller.ts | 18 ++-- .../inputs/create-view-filter-group.input.ts | 2 +- .../inputs/update-view-filter-group.input.ts | 0 .../dtos/view-filter-group.dto.ts | 2 +- .../entities/view-filter-group.entity.ts | 6 +- .../view-filter-group-logical-operator.ts | 0 .../exceptions/view-filter-group.exception.ts | 0 ...-filter-group-rest-api-exception.filter.ts | 2 +- .../resolvers/view-filter-group.resolver.ts | 10 +- .../tests/view-filter-group.service.spec.ts | 14 +-- .../services/view-filter-group.service.ts | 24 +++-- .../view-filter-group.module.ts | 19 ++++ .../controllers/view-filter.controller.ts | 18 ++-- .../dtos/inputs/create-view-filter.input.ts | 2 +- .../dtos/inputs/update-view-filter.input.ts | 0 .../view-filter}/dtos/view-filter.dto.ts | 2 +- .../entities/view-filter.entity.ts | 6 +- .../exceptions/view-filter.exception.ts | 0 .../view-filter-rest-api-exception.filter.ts | 2 +- .../resolvers/view-filter.resolver.ts | 10 +- .../tests/view-filter.service.spec.ts | 12 +-- .../services/view-filter.service.ts | 26 ++++-- .../types/view-filter-value.type.ts | 0 .../view-filter/view-filter.module.ts | 19 ++++ .../controllers/view-group.controller.ts | 18 ++-- .../dtos/inputs/create-view-group.input.ts | 0 .../dtos/inputs/update-view-group.input.ts | 0 .../view-group}/dtos/view-group.dto.ts | 0 .../view-group}/entities/view-group.entity.ts | 2 +- .../exceptions/view-group.exception.ts | 0 .../view-group-rest-api-exception.filter.ts | 2 +- .../resolvers/view-group.resolver.ts | 10 +- .../services/tests/view-group.service.spec.ts | 12 +-- .../services/view-group.service.ts | 26 ++++-- .../view-group/view-group.module.ts | 19 ++++ .../controllers/view-sort.controller.ts | 18 ++-- .../dtos/inputs/create-view-sort.input.ts | 2 +- .../dtos/inputs/update-view-sort.input.ts | 0 .../view-sort}/dtos/view-sort.dto.ts | 2 +- .../view-sort}/entities/view-sort.entity.ts | 4 +- .../view-sort}/enums/view-sort-direction.ts | 0 .../exceptions/view-sort.exception.ts | 0 .../view-sort-rest-api-exception.filter.ts | 2 +- .../resolvers/view-sort.resolver.ts | 10 +- .../services/tests/view-sort.service.spec.ts | 14 +-- .../view-sort}/services/view-sort.service.ts | 24 +++-- .../view-sort/view-sort.module.ts | 19 ++++ ...l-core-views-graphql-operation.constant.ts | 1 + .../view/controllers/view.controller.ts | 24 ++--- .../view/dtos/inputs/create-view.input.ts | 8 +- .../view/dtos/inputs/delete-view.input.ts | 0 .../view/dtos/inputs/destroy-view.input.ts | 0 .../view/dtos/inputs/update-view.input.ts | 6 +- .../view/dtos/view.dto.ts | 18 ++-- .../view/entities/view.entity.ts | 18 ++-- .../view/enums/view-calendar-layout.enum.ts | 0 .../view/enums/view-key.enum.ts | 0 .../view/enums/view-open-record-in.ts | 0 .../view/enums/view-type.enum.ts | 0 .../view/exceptions/flat-view.exception.ts | 0 .../view/exceptions/view.exception.ts | 0 .../filters/view-rest-api-exception.filter.ts | 2 +- .../view/resolvers/view.resolver.ts | 32 +++---- .../view/services/tests/view.service.spec.ts | 10 +- .../view/services/view-v2.service.ts | 18 ++-- .../view/services/view.service.ts | 23 +---- ...view-graphql-api-exception-handler.util.ts | 12 +-- .../view-graphql-api-exception.filter.ts | 34 +++++++ .../metadata-modules/view/view.module.ts | 42 +++++++++ .../workspace-flat-map-cache.module.ts | 8 +- .../prefill-core-views.ts | 14 +-- ...metadata-entities-relation-targets.type.ts | 2 +- ...n-v2-view-field-actions-builder.service.ts | 4 +- ...gration-v2-view-actions-builder.service.ts | 4 +- ...workspace-migration-view-action-v2.type.ts | 6 +- ...ace-migration-view-field-action-v2.type.ts | 6 +- .../flat-view-field-validator.service.ts | 8 +- .../services/flat-view-validator.service.ts | 6 +- ...-field-metadata-id-flat-view-field.util.ts | 6 +- ...reate-view-field-action-handler.service.ts | 2 +- ...elete-view-field-action-handler.service.ts | 2 +- ...pdate-view-field-action-handler.service.ts | 2 +- .../create-view-action-handler.service.ts | 2 +- .../delete-view-action-handler.service.ts | 2 +- .../update-view-action-handler.service.ts | 2 +- .../src/modules/modules.module.ts | 4 +- .../src/modules/view/standard-view.module.ts | 30 ++++++ ...ew-filter-workspace-value-to-core-value.ts | 2 +- .../src/modules/view/view.module.ts | 30 ------ .../view/create-view.integration-spec.ts | 6 +- .../view/update-view.integration-spec.ts | 8 +- ...g-create-view-field-v2.integration-spec.ts | 12 +-- ...g-delete-view-field-v2.integration-spec.ts | 12 +-- ...-destroy-view-field-v2.integration-spec.ts | 12 +-- ...g-update-view-field-v2.integration-spec.ts | 12 +-- ...e-effect-on-view-field.integration-spec.ts | 2 +- ...l-create-view-field-v2.integration-spec.ts | 14 +-- .../view-field-resolver.integration-spec.ts | 4 +- ...-filter-group-resolver.integration-spec.ts | 4 +- .../view-filter-resolver.integration-spec.ts | 4 +- .../view-group-resolver.integration-spec.ts | 2 +- .../view-sort-resolver.integration-spec.ts | 4 +- ...iew-filter-group-operation-factory.util.ts | 2 +- ...eate-view-filter-operation-factory.util.ts | 2 +- ...reate-view-group-operation-factory.util.ts | 2 +- .../create-view-operation-factory.util.ts | 2 +- ...create-view-sort-operation-factory.util.ts | 2 +- .../graphql/utils/view-data-factory.util.ts | 22 ++--- .../graphql/utils/view-graphql.util.ts | 2 +- ...ete-one-field-metadata.integration-spec.ts | 4 +- ...etadata-related-record.integration-spec.ts | 4 +- ...ject-metadata-creation.integration-spec.ts | 2 +- ...eate-core-view-field-query-factory.util.ts | 4 +- .../utils/create-one-core-view-field.util.ts | 4 +- ...lete-core-view-field-query-factory.util.ts | 4 +- .../utils/delete-one-core-view-field.util.ts | 4 +- ...troy-core-view-field-query-factory.util.ts | 4 +- .../utils/destroy-one-core-view-field.util.ts | 4 +- .../utils/find-core-view-fields.util.ts | 2 +- ...date-core-view-field-query-factory.util.ts | 4 +- .../utils/update-one-core-view-field.util.ts | 4 +- .../create-core-view-query-factory.util.ts | 2 +- .../view/utils/create-one-core-view.util.ts | 4 +- .../suites/view/utils/find-core-views.util.ts | 2 +- .../suites/view-field.integration-spec.ts | 2 +- .../view-filter-group.integration-spec.ts | 4 +- .../suites/view-group.integration-spec.ts | 4 +- .../rest/suites/view-sort.integration-spec.ts | 4 +- .../rest/suites/view.integration-spec.ts | 6 +- .../rest/utils/view-rest-api.util.ts | 16 ++-- .../test/integration/utils/view-test.util.ts | 12 +-- 198 files changed, 877 insertions(+), 765 deletions(-) delete mode 100644 packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-properies-to-compare.constant.ts delete mode 100644 packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception.filter.ts delete mode 100644 packages/twenty-server/src/engine/core-modules/view/view.module.ts rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/constants/flat-view-field-editable-properties.constant.ts (59%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/constants/flat-view-field-properties-to-compare.constant.ts (52%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/constants/view-field-entity-relation-properties.constant.ts (77%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/services/workspace-flat-view-field-map-cache.service.ts (84%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/types/flat-view-field-maps.type.ts (59%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/types/flat-view-field-properties-to-compare.type.ts (63%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/types/flat-view-field.type.ts (77%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/compare-two-flat-view-field.util.ts (87%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts (84%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts (67%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts (62%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts (73%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/from-view-field-entity-to-flat-view-field.util.ts (64%) rename packages/twenty-server/src/engine/{core-modules/view/flat-view => metadata-modules/flat-view-field}/utils/is-view-field-in-lowest-position.util.ts (79%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/constants/flat-view-editable-properties.constant.ts (77%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-properties-to-compare.constant.ts rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/constants/view-entity-relation-properties.constant.ts (66%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/flat-view.module.ts (56%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/services/workspace-flat-view-map-cache.service.ts (86%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/types/flat-view-maps.type.ts (62%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/types/flat-view-properties-to-compare.type.ts (73%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/types/flat-view.type.ts (54%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/compare-two-flat-view.util.ts (83%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts (80%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts (68%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts (67%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts (83%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts (71%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules}/flat-view/utils/from-view-entity-to-flat-view.util.ts (62%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/controllers/view-field.controller.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/dtos/inputs/create-view-field.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/dtos/inputs/delete-view-field.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/dtos/inputs/destroy-view-field.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/dtos/inputs/update-view-field.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/dtos/view-field.dto.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/entities/view-field.entity.ts (96%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/exceptions/view-field.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/filters/view-field-rest-api-exception.filter.ts (94%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/resolvers/view-field.resolver.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/services/tests/view-field.service.spec.ts (93%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/services/view-field-v2.service.ts (91%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-field}/services/view-field.service.ts (87%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/view-field/view-field.module.ts rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/controllers/view-filter-group.controller.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/dtos/inputs/create-view-filter-group.input.ts (83%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/dtos/inputs/update-view-filter-group.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/dtos/view-filter-group.dto.ts (88%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/entities/view-filter-group.entity.ts (87%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/enums/view-filter-group-logical-operator.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/exceptions/view-filter-group.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/filters/view-filter-group-rest-api-exception.filter.ts (93%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/resolvers/view-filter-group.resolver.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/services/tests/view-filter-group.service.spec.ts (94%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter-group}/services/view-filter-group.service.ts (83%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/view-filter-group/view-filter-group.module.ts rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/controllers/view-filter.controller.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/dtos/inputs/create-view-filter.input.ts (89%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/dtos/inputs/update-view-filter.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/dtos/view-filter.dto.ts (92%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/entities/view-filter.entity.ts (89%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/exceptions/view-filter.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/filters/view-filter-rest-api-exception.filter.ts (94%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/resolvers/view-filter.resolver.ts (82%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/services/tests/view-filter.service.spec.ts (95%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/services/view-filter.service.ts (82%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-filter}/types/view-filter-value.type.ts (100%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/view-filter/view-filter.module.ts rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/controllers/view-group.controller.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/dtos/inputs/create-view-group.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/dtos/inputs/update-view-group.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/dtos/view-group.dto.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/entities/view-group.entity.ts (95%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/exceptions/view-group.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/filters/view-group-rest-api-exception.filter.ts (94%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/resolvers/view-group.resolver.ts (82%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/services/tests/view-group.service.spec.ts (95%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-group}/services/view-group.service.ts (82%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/view-group/view-group.module.ts rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/controllers/view-sort.controller.ts (81%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/dtos/inputs/create-view-sort.input.ts (84%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/dtos/inputs/update-view-sort.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/dtos/view-sort.dto.ts (89%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/entities/view-sort.entity.ts (91%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/enums/view-sort-direction.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/exceptions/view-sort.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/filters/view-sort-rest-api-exception.filter.ts (94%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/resolvers/view-sort.resolver.ts (82%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/services/tests/view-sort.service.spec.ts (94%) rename packages/twenty-server/src/engine/{core-modules/view => metadata-modules/view-sort}/services/view-sort.service.ts (82%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/view-sort/view-sort.module.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant.ts rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/controllers/view.controller.ts (91%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/dtos/inputs/create-view.input.ts (85%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/dtos/inputs/delete-view.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/dtos/inputs/destroy-view.input.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/dtos/inputs/update-view.input.ts (87%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/dtos/view.dto.ts (74%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/entities/view.entity.ts (81%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/enums/view-calendar-layout.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/enums/view-key.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/enums/view-open-record-in.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/enums/view-type.enum.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/exceptions/flat-view.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/exceptions/view.exception.ts (100%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/filters/view-rest-api-exception.filter.ts (95%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/resolvers/view.resolver.ts (83%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/services/tests/view.service.spec.ts (96%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/services/view-v2.service.ts (91%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/services/view.service.ts (91%) rename packages/twenty-server/src/engine/{core-modules => metadata-modules}/view/utils/view-graphql-api-exception-handler.util.ts (88%) create mode 100644 packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter.ts create mode 100644 packages/twenty-server/src/engine/metadata-modules/view/view.module.ts create mode 100644 packages/twenty-server/src/modules/view/standard-view.module.ts delete mode 100644 packages/twenty-server/src/modules/view/view.module.ts diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-5/1-5-migrate-views-to-core.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-5/1-5-migrate-views-to-core.command.ts index 39659105b8b..3e6d83b362b 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-5/1-5-migrate-views-to-core.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-5/1-5-migrate-views-to-core.command.ts @@ -10,20 +10,20 @@ import { ActiveOrSuspendedWorkspacesMigrationCommandRunner, type RunOnWorkspaceArgs, } from 'src/database/commands/command-runners/active-or-suspended-workspaces-migration.command-runner'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { type ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { type ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { type ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; +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'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { type ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { ViewFieldWorkspaceEntity } from 'src/modules/view/standard-objects/view-field.workspace-entity'; import { type ViewFilterGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-filter-group.workspace-entity'; diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-fix-label-identifier-position-and-visibility.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-fix-label-identifier-position-and-visibility.command.ts index 077a43f3733..ab46fea726e 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-fix-label-identifier-position-and-visibility.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-fix-label-identifier-position-and-visibility.command.ts @@ -7,9 +7,9 @@ import { ActiveOrSuspendedWorkspacesMigrationCommandRunner, type RunOnWorkspaceArgs, } from 'src/database/commands/command-runners/active-or-suspended-workspaces-migration.command-runner'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; @Command({ diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-upgrade-version-command.module.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-upgrade-version-command.module.ts index a943af9e1e2..32b05e21a63 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-upgrade-version-command.module.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-6/1-6-upgrade-version-command.module.ts @@ -2,11 +2,11 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { FixLabelIdentifierPositionAndVisibilityCommand } from 'src/database/commands/upgrade-version-command/1-6/1-6-fix-label-identifier-position-and-visibility.command'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceSchemaManagerModule } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-runner.module.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-runner.module.ts index e24089c8cb3..7126f4e0a3e 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-runner.module.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-runner.module.ts @@ -22,10 +22,12 @@ import { GraphqlQueryUpdateOneResolverService } from 'src/engine/api/graphql/gra import { WorkspaceQueryHookModule } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/workspace-query-hook.module'; import { WorkspaceQueryRunnerModule } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-runner.module'; import { ApiKeyModule } from 'src/engine/core-modules/api-key/api-key.module'; -import { CoreViewModule } from 'src/engine/core-modules/view/view.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity'; import { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module'; +import { ViewFilterGroupModule } from 'src/engine/metadata-modules/view-filter-group/view-filter-group.module'; +import { ViewFilterModule } from 'src/engine/metadata-modules/view-filter/view-filter.module'; +import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; const graphqlQueryResolvers = [ GraphqlQueryCreateManyResolverService, @@ -53,7 +55,9 @@ const graphqlQueryResolvers = [ TypeOrmModule.forFeature([RoleTargetsEntity]), UserRoleModule, ApiKeyModule, - CoreViewModule, + ViewModule, + ViewFilterModule, + ViewFilterGroupModule, ], providers: [ ProcessNestedRelationsHelper, diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/group-by/resolvers/graphql-query-group-by-resolver.service.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/group-by/resolvers/graphql-query-group-by-resolver.service.ts index bc63d789816..c1f23673620 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/group-by/resolvers/graphql-query-group-by-resolver.service.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/group-by/resolvers/graphql-query-group-by-resolver.service.ts @@ -34,12 +34,12 @@ import { parseGroupByArgs } from 'src/engine/api/graphql/graphql-query-runner/gr import { removeQuotes } from 'src/engine/api/graphql/graphql-query-runner/group-by/resolvers/utils/remove-quote.util'; import { ProcessAggregateHelper } from 'src/engine/api/graphql/graphql-query-runner/helpers/process-aggregate.helper'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; import { WorkspaceNotFoundDefaultError } from 'src/engine/core-modules/workspace/workspace.exception'; import { ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; +import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { formatColumnNamesFromCompositeFieldAndSubfields } from 'src/engine/twenty-orm/utils/format-column-names-from-composite-field-and-subfield.util'; @Injectable() export class GraphqlQueryGroupByResolverService extends GraphqlQueryBaseResolverService< diff --git a/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts b/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts index ff832430e5f..190fc4e9837 100644 --- a/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts +++ b/packages/twenty-server/src/engine/core-modules/common/types/all-flat-entities-by-metadata-engine-name.type.ts @@ -1,10 +1,10 @@ -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; import { type FlatCronTrigger } from 'src/engine/metadata-modules/cron-trigger/types/flat-cron-trigger.type'; import { type FlatDatabaseEventTrigger } from 'src/engine/metadata-modules/database-event-trigger/types/flat-database-event-trigger.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; import { type FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type'; import { type FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type'; 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 8f17e42bf02..a9266443601 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 @@ -50,7 +50,6 @@ import { TelemetryModule } from 'src/engine/core-modules/telemetry/telemetry.mod import { TwentyConfigModule } from 'src/engine/core-modules/twenty-config/twenty-config.module'; import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; import { UserModule } from 'src/engine/core-modules/user/user.module'; -import { CoreViewModule } from 'src/engine/core-modules/view/view.module'; import { WebhookModule } from 'src/engine/core-modules/webhook/webhook.module'; import { WorkflowApiModule } from 'src/engine/core-modules/workflow/workflow-api.module'; import { WorkspaceInvitationModule } from 'src/engine/core-modules/workspace-invitation/workspace-invitation.module'; @@ -131,7 +130,6 @@ import { FileModule } from './file/file.module'; SearchModule, ApiKeyModule, WebhookModule, - CoreViewModule, PageLayoutModule, ImpersonationModule, ], diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-properies-to-compare.constant.ts b/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-properies-to-compare.constant.ts deleted file mode 100644 index 7b8f41a33cc..00000000000 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-properies-to-compare.constant.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { FLAT_VIEW_EDITABLE_PROPERTIES } from 'src/engine/core-modules/view/flat-view/constants/flat-view-editable-properties.constant'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; - -export const FLAT_VIEW_PROPERTIES_TO_COMPARE = [ - 'key', - 'deletedAt', - ...FLAT_VIEW_EDITABLE_PROPERTIES, -] as const satisfies (keyof FlatView)[]; diff --git a/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception.filter.ts deleted file mode 100644 index 604859fca2f..00000000000 --- a/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception.filter.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Catch, type ExceptionFilter } from '@nestjs/common'; - -import { ViewFieldException } from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { ViewFilterGroupException } from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; -import { ViewFilterException } from 'src/engine/core-modules/view/exceptions/view-filter.exception'; -import { ViewGroupException } from 'src/engine/core-modules/view/exceptions/view-group.exception'; -import { ViewSortException } from 'src/engine/core-modules/view/exceptions/view-sort.exception'; -import { ViewException } from 'src/engine/core-modules/view/exceptions/view.exception'; -import { viewGraphqlApiExceptionHandler } from 'src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; - -@Catch( - ViewException, - ViewFieldException, - ViewFilterException, - ViewFilterGroupException, - ViewGroupException, - ViewSortException, - WorkspaceMigrationBuilderExceptionV2, -) -export class ViewGraphqlApiExceptionFilter implements ExceptionFilter { - catch( - exception: - | ViewException - | ViewFieldException - | ViewFilterException - | ViewFilterGroupException - | ViewGroupException - | ViewSortException - | WorkspaceMigrationBuilderExceptionV2, - ) { - return viewGraphqlApiExceptionHandler(exception); - } -} diff --git a/packages/twenty-server/src/engine/core-modules/view/view.module.ts b/packages/twenty-server/src/engine/core-modules/view/view.module.ts deleted file mode 100644 index 1150b2baa9b..00000000000 --- a/packages/twenty-server/src/engine/core-modules/view/view.module.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; - -import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module'; -import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { I18nModule } from 'src/engine/core-modules/i18n/i18n.module'; -import { ViewFieldController } from 'src/engine/core-modules/view/controllers/view-field.controller'; -import { ViewFilterGroupController } from 'src/engine/core-modules/view/controllers/view-filter-group.controller'; -import { ViewFilterController } from 'src/engine/core-modules/view/controllers/view-filter.controller'; -import { ViewGroupController } from 'src/engine/core-modules/view/controllers/view-group.controller'; -import { ViewSortController } from 'src/engine/core-modules/view/controllers/view-sort.controller'; -import { ViewController } from 'src/engine/core-modules/view/controllers/view.controller'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { FlatViewModule } from 'src/engine/core-modules/view/flat-view/flat-view.module'; -import { ViewFieldResolver } from 'src/engine/core-modules/view/resolvers/view-field.resolver'; -import { ViewFilterGroupResolver } from 'src/engine/core-modules/view/resolvers/view-filter-group.resolver'; -import { ViewFilterResolver } from 'src/engine/core-modules/view/resolvers/view-filter.resolver'; -import { ViewGroupResolver } from 'src/engine/core-modules/view/resolvers/view-group.resolver'; -import { ViewSortResolver } from 'src/engine/core-modules/view/resolvers/view-sort.resolver'; -import { ViewResolver } from 'src/engine/core-modules/view/resolvers/view.resolver'; -import { ViewFieldV2Service } from 'src/engine/core-modules/view/services/view-field-v2.service'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { ViewSortService } from 'src/engine/core-modules/view/services/view-sort.service'; -import { ViewV2Service } from 'src/engine/core-modules/view/services/view-v2.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; -import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.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([ - ViewEntity, - ViewFieldEntity, - ViewFilterEntity, - ViewFilterGroupEntity, - ViewGroupEntity, - ViewSortEntity, - ]), - I18nModule, - FeatureFlagModule, - WorkspaceCacheStorageModule, - WorkspaceMetadataCacheModule, - WorkspaceMigrationV2Module, - FlatViewModule, - WorkspaceManyOrAllFlatEntityMapsCacheModule, - ], - controllers: [ - ViewController, - ViewFieldController, - ViewFilterController, - ViewFilterGroupController, - ViewGroupController, - ViewSortController, - ], - providers: [ - ViewService, - ViewFieldService, - ViewFilterService, - ViewFilterGroupService, - ViewGroupService, - ViewSortService, - ViewResolver, - ViewFieldResolver, - ViewFilterResolver, - ViewFilterGroupResolver, - ViewGroupResolver, - ViewSortResolver, - ViewV2Service, - ViewFieldV2Service, - ], - exports: [ - ViewService, - ViewFieldService, - ViewFilterService, - ViewFilterGroupService, - ViewGroupService, - ViewSortService, - ViewV2Service, - ViewFieldV2Service, - ], -}) -export class CoreViewModule {} diff --git a/packages/twenty-server/src/engine/core-modules/workspace/workspace.entity.ts b/packages/twenty-server/src/engine/core-modules/workspace/workspace.entity.ts index db80d446172..c6b31334008 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/workspace.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/workspace.entity.ts @@ -26,23 +26,23 @@ import { PostgresCredentials } from 'src/engine/core-modules/postgres-credential import { PublicDomain } from 'src/engine/core-modules/public-domain/public-domain.entity'; import { WorkspaceSSOIdentityProvider } from 'src/engine/core-modules/sso/workspace-sso-identity-provider.entity'; import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; -import { ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto'; -import { ViewFilterGroupDTO } from 'src/engine/core-modules/view/dtos/view-filter-group.dto'; -import { ViewFilterDTO } from 'src/engine/core-modules/view/dtos/view-filter.dto'; -import { ViewGroupDTO } from 'src/engine/core-modules/view/dtos/view-group.dto'; -import { ViewSortDTO } from 'src/engine/core-modules/view/dtos/view-sort.dto'; -import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { Webhook } from 'src/engine/core-modules/webhook/webhook.entity'; import { AgentHandoffEntity } from 'src/engine/metadata-modules/agent/agent-handoff.entity'; import { AgentEntity } from 'src/engine/metadata-modules/agent/agent.entity'; import { AgentDTO } from 'src/engine/metadata-modules/agent/dtos/agent.dto'; import { RoleDTO } from 'src/engine/metadata-modules/role/dtos/role.dto'; +import { ViewFieldDTO } from 'src/engine/metadata-modules/view-field/dtos/view-field.dto'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFilterGroupDTO } from 'src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { ViewFilterDTO } from 'src/engine/metadata-modules/view-filter/dtos/view-filter.dto'; +import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { ViewGroupDTO } from 'src/engine/metadata-modules/view-group/dtos/view-group.dto'; +import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { ViewSortDTO } from 'src/engine/metadata-modules/view-sort/dtos/view-sort.dto'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; registerEnumType(WorkspaceActivationStatus, { name: 'WorkspaceActivationStatus', diff --git a/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts b/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts index 40b9d8e0422..60de64ef73a 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/workspace.module.ts @@ -20,7 +20,6 @@ import { PublicDomain } from 'src/engine/core-modules/public-domain/public-domai import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { UserWorkspaceModule } from 'src/engine/core-modules/user-workspace/user-workspace.module'; import { User } from 'src/engine/core-modules/user/user.entity'; -import { CoreViewModule } from 'src/engine/core-modules/view/view.module'; import { CheckCustomDomainValidRecordsCronCommand } from 'src/engine/core-modules/workspace/crons/commands/check-custom-domain-valid-records.cron.command'; import { CheckCustomDomainValidRecordsCronJob } from 'src/engine/core-modules/workspace/crons/jobs/check-custom-domain-valid-records.cron.job'; import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service'; @@ -32,6 +31,7 @@ import { AgentModule } from 'src/engine/metadata-modules/agent/agent.module'; import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { RoleModule } from 'src/engine/metadata-modules/role/role.module'; +import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-manager.module'; @@ -66,7 +66,7 @@ import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-m AgentModule, DnsManagerModule, DomainManagerModule, - CoreViewModule, + ViewModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ], services: [WorkspaceService], diff --git a/packages/twenty-server/src/engine/core-modules/workspace/workspace.resolver.ts b/packages/twenty-server/src/engine/core-modules/workspace/workspace.resolver.ts index 83ca49590e6..6b1a5c91315 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/workspace.resolver.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/workspace.resolver.ts @@ -23,6 +23,8 @@ import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder. import { BillingSubscription } from 'src/engine/core-modules/billing/entities/billing-subscription.entity'; import { BillingSubscriptionService } from 'src/engine/core-modules/billing/services/billing-subscription.service'; +import { DomainValidRecords } from 'src/engine/core-modules/dns-manager/dtos/domain-valid-records'; +import { DnsManagerService } from 'src/engine/core-modules/dns-manager/services/dns-manager.service'; import { DomainManagerService } from 'src/engine/core-modules/domain-manager/services/domain-manager.service'; import { FeatureFlagDTO } from 'src/engine/core-modules/feature-flag/dtos/feature-flag-dto'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; @@ -35,8 +37,6 @@ import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/re import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; import { User } from 'src/engine/core-modules/user/user.entity'; -import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; import { ActivateWorkspaceInput } from 'src/engine/core-modules/workspace/dtos/activate-workspace-input'; import { type AuthProviders, @@ -44,8 +44,15 @@ import { } from 'src/engine/core-modules/workspace/dtos/public-workspace-data-output'; import { UpdateWorkspaceInput } from 'src/engine/core-modules/workspace/dtos/update-workspace-input'; import { WorkspaceUrls } from 'src/engine/core-modules/workspace/dtos/workspace-urls.dto'; +import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service'; import { getAuthProvidersByWorkspace } from 'src/engine/core-modules/workspace/utils/get-auth-providers-by-workspace.util'; import { workspaceGraphqlApiExceptionHandler } from 'src/engine/core-modules/workspace/utils/workspace-graphql-api-exception-handler.util'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { + WorkspaceException, + WorkspaceExceptionCode, + WorkspaceNotFoundDefaultError, +} from 'src/engine/core-modules/workspace/workspace.exception'; import { AuthApiKey } from 'src/engine/decorators/auth/auth-api-key.decorator'; import { AuthUserWorkspaceId } from 'src/engine/decorators/auth/auth-user-workspace-id.decorator'; import { AuthUser } from 'src/engine/decorators/auth/auth-user.decorator'; @@ -60,17 +67,10 @@ import { PermissionFlagType } from 'src/engine/metadata-modules/permissions/cons import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/permissions/utils/permissions-graphql-api-exception.filter'; import { RoleDTO } from 'src/engine/metadata-modules/role/dtos/role.dto'; import { RoleService } from 'src/engine/metadata-modules/role/role.service'; +import { ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { getRequest } from 'src/utils/extract-request'; import { streamToBuffer } from 'src/utils/stream-to-buffer'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service'; -import { DomainValidRecords } from 'src/engine/core-modules/dns-manager/dtos/domain-valid-records'; -import { - WorkspaceException, - WorkspaceExceptionCode, - WorkspaceNotFoundDefaultError, -} from 'src/engine/core-modules/workspace/workspace.exception'; -import { DnsManagerService } from 'src/engine/core-modules/dns-manager/services/dns-manager.service'; const OriginHeader = createParamDecorator( (_: unknown, ctx: ExecutionContext) => { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.entity.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.entity.ts index 713d40499d7..197b61b903c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.entity.ts @@ -19,13 +19,13 @@ import { FieldMetadataDefaultValue } from 'src/engine/metadata-modules/field-met import { FieldMetadataOptions } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-options.interface'; import { FieldMetadataSettings } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-settings.interface'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; import { type FieldStandardOverridesDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-standard-overrides.dto'; import { AssignIfIsGivenFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/assign-if-is-given-field-metadata-type.type'; import { AssignTypeIfIsMorphOrRelationFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/assign-type-if-is-morph-or-relation-field-metadata-type.type'; import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { FieldPermissionEntity } from 'src/engine/metadata-modules/object-permission/field-permission/field-permission.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; @Entity('fieldMetadata') @Check( diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts index 637e7657832..d5139c212cd 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts @@ -11,7 +11,6 @@ import { TypeORMModule } from 'src/database/typeorm/typeorm.module'; import { ActorModule } from 'src/engine/core-modules/actor/actor.module'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { CoreViewModule } from 'src/engine/core-modules/view/view.module'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module'; import { FieldMetadataDTO } from 'src/engine/metadata-modules/field-metadata/dtos/field-metadata.dto'; @@ -31,6 +30,10 @@ import { IndexMetadataModule } from 'src/engine/metadata-modules/index-metadata/ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; +import { ViewFieldModule } from 'src/engine/metadata-modules/view-field/view-field.module'; +import { ViewFilterModule } from 'src/engine/metadata-modules/view-filter/view-filter.module'; +import { ViewGroupModule } from 'src/engine/metadata-modules/view-group/view-group.module'; +import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.module'; import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; @@ -61,7 +64,10 @@ import { FieldMetadataService } from './services/field-metadata.service'; TypeORMModule, ActorModule, FeatureFlagModule, - CoreViewModule, + ViewModule, + ViewFieldModule, + ViewFilterModule, + ViewGroupModule, PermissionsModule, WorkspaceMetadataCacheModule, WorkspaceMigrationV2Module, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/__tests__/field-metadata-related-records.spec.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/__tests__/field-metadata-related-records.spec.ts index 836a662f01d..343dea91303 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/__tests__/field-metadata-related-records.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/__tests__/field-metadata-related-records.spec.ts @@ -1,11 +1,11 @@ import { type EachTestingContext } from 'twenty-shared/testing'; -import { type ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { type ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { type ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { type ViewService } from 'src/engine/core-modules/view/services/view.service'; import { type FieldMetadataDefaultOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; import { FieldMetadataRelatedRecordsService } from 'src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service'; +import { type ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { type ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { type ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; +import { type ViewService } from 'src/engine/metadata-modules/view/services/view.service'; type GetOptionsDifferencesTestContext = EachTestingContext<{ oldOptions: FieldMetadataDefaultOption[]; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts index 2cfff9b9135..3809488c2c3 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata-related-records.service.ts @@ -4,13 +4,6 @@ import { isNonEmptyString } from '@sniptt/guards'; import { isDefined, parseJson } from 'twenty-shared/utils'; import { settings } from 'src/engine/constants/settings'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; import { type FieldMetadataComplexOption, type FieldMetadataDefaultOption, @@ -22,6 +15,13 @@ import { } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception'; import { isSelectFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-select-field-metadata-type.util'; import { type SelectOrMultiSelectFieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/utils/is-select-or-multi-select-field-metadata.util'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; type Differences = { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata-and-related-flat-entities.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata-and-related-flat-entities.util.ts index 5fc38ea9b12..ac475e295eb 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata-and-related-flat-entities.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata-and-related-flat-entities.util.ts @@ -6,7 +6,6 @@ import { import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; import { FLAT_OBJECT_METADATA_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-object-metadata/constants/flat-object-metadata-properties-to-compare.constant'; @@ -15,6 +14,7 @@ import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object import { recomputeIndexAfterFlatObjectMetadataSingularNameUpdate } from 'src/engine/metadata-modules/flat-object-metadata/utils/recompute-index-after-flat-object-metadata-singular-name-update.util'; import { recomputeViewFieldIdentifierAfterFlatObjectIdentifierUpdate } from 'src/engine/metadata-modules/flat-object-metadata/utils/recompute-view-field-identifier-after-flat-object-identifier-update.util'; import { renameRelatedMorphFieldOnObjectNamesUpdate } from 'src/engine/metadata-modules/flat-object-metadata/utils/rename-related-morph-field-on-object-names-update.util'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; import { OBJECT_METADATA_STANDARD_OVERRIDES_PROPERTIES } from 'src/engine/metadata-modules/object-metadata/constants/object-metadata-standard-overrides-properties.constant'; import { type UpdateOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input'; import { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-view-field-identifier-after-flat-object-identifier-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-view-field-identifier-after-flat-object-identifier-update.util.ts index 171a817d21e..4712f1c0164 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-view-field-identifier-after-flat-object-identifier-update.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-view-field-identifier-after-flat-object-identifier-update.util.ts @@ -3,8 +3,8 @@ import { v4 } from 'uuid'; import { type AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; type RecomputeViewFieldIdentifierAfterFlatObjectIdentifierUpdateArgs = { diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-field-editable-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/flat-view-field-editable-properties.constant.ts similarity index 59% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-field-editable-properties.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/flat-view-field-editable-properties.constant.ts index 5a313eaa967..f48cff03233 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-field-editable-properties.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/flat-view-field-editable-properties.constant.ts @@ -1,4 +1,4 @@ -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; export const FLAT_VIEW_FIELD_EDITABLE_PROPERTIES = [ 'isVisible', diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-field-properties-to-compare.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/flat-view-field-properties-to-compare.constant.ts similarity index 52% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-field-properties-to-compare.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/flat-view-field-properties-to-compare.constant.ts index b62173da8d3..49aaf038b79 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-field-properties-to-compare.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/flat-view-field-properties-to-compare.constant.ts @@ -1,5 +1,5 @@ -import { FLAT_VIEW_FIELD_EDITABLE_PROPERTIES } from 'src/engine/core-modules/view/flat-view/constants/flat-view-field-editable-properties.constant'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { FLAT_VIEW_FIELD_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-view-field/constants/flat-view-field-editable-properties.constant'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; export const FLAT_VIEW_FIELD_PROPERTIES_TO_COMPARE = [ ...FLAT_VIEW_FIELD_EDITABLE_PROPERTIES, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/view-field-entity-relation-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/view-field-entity-relation-properties.constant.ts similarity index 77% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/constants/view-field-entity-relation-properties.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/view-field-entity-relation-properties.constant.ts index 7313786c34b..7d064523c20 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/view-field-entity-relation-properties.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/view-field-entity-relation-properties.constant.ts @@ -1,4 +1,4 @@ -import { type ViewFieldEntityRelationProperties } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type ViewFieldEntityRelationProperties } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; export const VIEW_FIELD_ENTITY_RELATION_PROPERTIES = [ 'fieldMetadata', diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/services/workspace-flat-view-field-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/services/workspace-flat-view-field-map-cache.service.ts similarity index 84% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/services/workspace-flat-view-field-map-cache.service.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/services/workspace-flat-view-field-map-cache.service.ts index a662168257c..b2ab69a71f3 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/services/workspace-flat-view-field-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/services/workspace-flat-view-field-map-cache.service.ts @@ -8,9 +8,9 @@ import { CacheStorageService } from 'src/engine/core-modules/cache-storage/servi import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum'; import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant'; import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { FlatViewFieldMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type'; -import { fromViewFieldEntityToFlatViewField } from 'src/engine/core-modules/view/flat-view/utils/from-view-field-entity-to-flat-view-field.util'; +import { FlatViewFieldMaps } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type'; +import { fromViewFieldEntityToFlatViewField } from 'src/engine/metadata-modules/flat-view-field/utils/from-view-field-entity-to-flat-view-field.util'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { WorkspaceFlatMapCache } from 'src/engine/workspace-flat-map-cache/decorators/workspace-flat-map-cache.decorator'; import { WorkspaceFlatMapCacheService } from 'src/engine/workspace-flat-map-cache/services/workspace-flat-map-cache.service'; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type.ts similarity index 59% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type.ts index 26f9acaf056..db76a38da55 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type.ts @@ -1,4 +1,4 @@ import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; export type FlatViewFieldMaps = FlatEntityMaps; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field-properties-to-compare.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field-properties-to-compare.type.ts similarity index 63% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field-properties-to-compare.type.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field-properties-to-compare.type.ts index 9218aec1403..cfec4e9203b 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field-properties-to-compare.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field-properties-to-compare.type.ts @@ -1,4 +1,4 @@ -import { type FLAT_VIEW_FIELD_PROPERTIES_TO_COMPARE } from 'src/engine/core-modules/view/flat-view/constants/flat-view-field-properties-to-compare.constant'; +import { type FLAT_VIEW_FIELD_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-view-field/constants/flat-view-field-properties-to-compare.constant'; export type FlatViewFieldPropertiesToCompare = (typeof FLAT_VIEW_FIELD_PROPERTIES_TO_COMPARE)[number]; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field.type.ts similarity index 77% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field.type.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field.type.ts index 054b827fd62..35f4f7cfd49 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-field.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/types/flat-view-field.type.ts @@ -1,7 +1,7 @@ -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { type Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { type ExtractRecordTypeOrmRelationProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-relation-properties.type'; export type ViewFieldEntityRelationProperties = diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/compare-two-flat-view-field.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/compare-two-flat-view-field.util.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/compare-two-flat-view-field.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/compare-two-flat-view-field.util.ts index e09d9418f93..5aced1eafa7 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/compare-two-flat-view-field.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/compare-two-flat-view-field.util.ts @@ -1,9 +1,9 @@ import diff from 'microdiff'; import { type FromTo } from 'twenty-shared/types'; -import { FLAT_VIEW_FIELD_PROPERTIES_TO_COMPARE } from 'src/engine/core-modules/view/flat-view/constants/flat-view-field-properties-to-compare.constant'; -import { type FlatViewFieldPropertiesToCompare } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-properties-to-compare.type'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { FLAT_VIEW_FIELD_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-view-field/constants/flat-view-field-properties-to-compare.constant'; +import { type FlatViewFieldPropertiesToCompare } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-properties-to-compare.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; import { type UpdateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-action-v2.type'; import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts similarity index 84% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts index e6a0f3f4cc4..5eef9d23b48 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-create-view-field-input-to-flat-view-field-to-create.util.ts @@ -1,8 +1,8 @@ import { trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties } from 'twenty-shared/utils'; import { v4 } from 'uuid'; -import { type CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; export const fromCreateViewFieldInputToFlatViewFieldToCreate = ({ diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts similarity index 67% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts index bfaa291b7b9..bc6f39bf6ae 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util.ts @@ -4,13 +4,13 @@ import { isDefined, } from 'twenty-shared/utils'; -import { type DeleteViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view-field.input'; +import { type FlatViewFieldMaps } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type DeleteViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input'; import { ViewFieldException, ViewFieldExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { type FlatViewFieldMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; export const fromDeleteViewFieldInputToFlatViewFieldOrThrow = ({ deleteViewFieldInput: rawDeleteViewFieldInput, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts similarity index 62% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts index 43a48df0a95..79e1da3726f 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util.ts @@ -4,23 +4,23 @@ import { isDefined, } from 'twenty-shared/utils'; -import { type DestroyViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view-field.input'; +import { type FlatViewFieldMaps } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type DestroyViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input'; import { ViewFieldException, ViewFieldExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { type FlatViewFieldMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; export const fromDestroyViewFieldInputToFlatViewFieldOrThrow = ({ - destroyViewFieldInput: rawDeleteDestroyViewInput, + destroyViewFieldInput, flatViewFieldMaps, }: { destroyViewFieldInput: DestroyViewFieldInput; flatViewFieldMaps: FlatViewFieldMaps; }): FlatViewField => { const { id: viewFieldId } = extractAndSanitizeObjectStringFields( - rawDeleteDestroyViewInput, + destroyViewFieldInput, ['id'], ); diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts similarity index 73% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts index cc9868cb376..fd6df76e308 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util.ts @@ -5,14 +5,14 @@ import { trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties, } from 'twenty-shared/utils'; -import { type UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; +import { FLAT_VIEW_FIELD_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-view-field/constants/flat-view-field-editable-properties.constant'; +import { type FlatViewFieldMaps } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; import { ViewFieldException, ViewFieldExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { FLAT_VIEW_FIELD_EDITABLE_PROPERTIES } from 'src/engine/core-modules/view/flat-view/constants/flat-view-field-editable-properties.constant'; -import { type FlatViewFieldMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; import { mergeUpdateInExistingRecord } from 'src/utils/merge-update-in-existing-record.util'; export const fromUpdateViewFieldInputToFlatViewFieldToUpdateOrThrow = ({ diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-view-field-entity-to-flat-view-field.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-view-field-entity-to-flat-view-field.util.ts similarity index 64% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-view-field-entity-to-flat-view-field.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-view-field-entity-to-flat-view-field.util.ts index ff755014aab..7629dc21132 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-view-field-entity-to-flat-view-field.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/from-view-field-entity-to-flat-view-field.util.ts @@ -1,8 +1,8 @@ import { removePropertiesFromRecord } from 'twenty-shared/utils'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { VIEW_FIELD_ENTITY_RELATION_PROPERTIES } from 'src/engine/core-modules/view/flat-view/constants/view-field-entity-relation-properties.constant'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { VIEW_FIELD_ENTITY_RELATION_PROPERTIES } from 'src/engine/metadata-modules/flat-view-field/constants/view-field-entity-relation-properties.constant'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export const fromViewFieldEntityToFlatViewField = ( viewFieldEntity: ViewFieldEntity, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/is-view-field-in-lowest-position.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/is-view-field-in-lowest-position.util.ts similarity index 79% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/is-view-field-in-lowest-position.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/is-view-field-in-lowest-position.util.ts index e10146c544d..dc4c5a02be8 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/is-view-field-in-lowest-position.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/utils/is-view-field-in-lowest-position.util.ts @@ -1,4 +1,4 @@ -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; export const isViewFieldInLowestPosition = ({ flatViewField, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-editable-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-editable-properties.constant.ts similarity index 77% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-editable-properties.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-editable-properties.constant.ts index 81bf6e63b94..6456e6aa58f 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/flat-view-editable-properties.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-editable-properties.constant.ts @@ -1,4 +1,4 @@ -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; export const FLAT_VIEW_EDITABLE_PROPERTIES = [ 'name', diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-properties-to-compare.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-properties-to-compare.constant.ts new file mode 100644 index 00000000000..54155bffb4c --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/flat-view-properties-to-compare.constant.ts @@ -0,0 +1,8 @@ +import { FLAT_VIEW_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-view/constants/flat-view-editable-properties.constant'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; + +export const FLAT_VIEW_PROPERTIES_TO_COMPARE = [ + 'key', + 'deletedAt', + ...FLAT_VIEW_EDITABLE_PROPERTIES, +] as const satisfies (keyof FlatView)[]; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/view-entity-relation-properties.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/view-entity-relation-properties.constant.ts similarity index 66% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/constants/view-entity-relation-properties.constant.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/constants/view-entity-relation-properties.constant.ts index b1f413fc072..8e5acd31766 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/constants/view-entity-relation-properties.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/constants/view-entity-relation-properties.constant.ts @@ -1,4 +1,4 @@ -import { type ViewEntityRelationProperties } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type ViewEntityRelationProperties } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; export const VIEW_ENTITY_RELATION_PROPERTIES = [ 'objectMetadata', diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/flat-view.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/flat-view.module.ts similarity index 56% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/flat-view.module.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/flat-view.module.ts index 56129938f35..7d44ec14a09 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/flat-view.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/flat-view.module.ts @@ -1,8 +1,8 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { WorkspaceFlatViewMapCacheService } from 'src/engine/core-modules/view/flat-view/services/workspace-flat-view-map-cache.service'; +import { WorkspaceFlatViewMapCacheService } from 'src/engine/metadata-modules/flat-view/services/workspace-flat-view-map-cache.service'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Module({ imports: [TypeOrmModule.forFeature([ViewEntity])], diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/services/workspace-flat-view-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/services/workspace-flat-view-map-cache.service.ts similarity index 86% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/services/workspace-flat-view-map-cache.service.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/services/workspace-flat-view-map-cache.service.ts index 9983fc78641..b30dd9290fe 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/services/workspace-flat-view-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/services/workspace-flat-view-map-cache.service.ts @@ -8,9 +8,9 @@ import { CacheStorageService } from 'src/engine/core-modules/cache-storage/servi import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/types/cache-storage-namespace.enum'; import { EMPTY_FLAT_ENTITY_MAPS } from 'src/engine/core-modules/common/constant/empty-flat-entity-maps.constant'; import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { type FlatViewMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-maps.type'; -import { fromViewEntityToFlatView } from 'src/engine/core-modules/view/flat-view/utils/from-view-entity-to-flat-view.util'; +import { type FlatViewMaps } from 'src/engine/metadata-modules/flat-view/types/flat-view-maps.type'; +import { fromViewEntityToFlatView } from 'src/engine/metadata-modules/flat-view/utils/from-view-entity-to-flat-view.util'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { WorkspaceFlatMapCache } from 'src/engine/workspace-flat-map-cache/decorators/workspace-flat-map-cache.decorator'; import { WorkspaceFlatMapCacheService } from 'src/engine/workspace-flat-map-cache/services/workspace-flat-map-cache.service'; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-maps.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view-maps.type.ts similarity index 62% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-maps.type.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view-maps.type.ts index 6862648b794..e063f52d122 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-maps.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view-maps.type.ts @@ -1,4 +1,4 @@ import { type FlatEntityMaps } from 'src/engine/core-modules/common/types/flat-entity-maps.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; export type FlatViewMaps = FlatEntityMaps; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-properties-to-compare.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view-properties-to-compare.type.ts similarity index 73% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-properties-to-compare.type.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view-properties-to-compare.type.ts index 2c8a4c12d16..b467e097eac 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view-properties-to-compare.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view-properties-to-compare.type.ts @@ -1,4 +1,4 @@ -import { type FLAT_VIEW_PROPERTIES_TO_COMPARE } from 'src/engine/core-modules/view/flat-view/constants/flat-view-properies-to-compare.constant'; +import { type FLAT_VIEW_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-view/constants/flat-view-properties-to-compare.constant'; export type FlatViewPropertiesToCompare = (typeof FLAT_VIEW_PROPERTIES_TO_COMPARE)[number]; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view.type.ts similarity index 54% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view.type.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view.type.ts index cb30731c93d..a150b015762 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/types/flat-view.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/types/flat-view.type.ts @@ -1,11 +1,11 @@ -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { type Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { type ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { type ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { type ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { type ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { type ExtractRecordTypeOrmRelationProperties } from 'src/engine/workspace-manager/workspace-migration-v2/types/extract-record-typeorm-relation-properties.type'; export type ViewEntityRelationProperties = diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/compare-two-flat-view.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/compare-two-flat-view.util.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/compare-two-flat-view.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/compare-two-flat-view.util.ts index 5583ee19be2..8e020653bbf 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/compare-two-flat-view.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/compare-two-flat-view.util.ts @@ -1,9 +1,9 @@ import diff from 'microdiff'; import { type FromTo } from 'twenty-shared/types'; -import { FLAT_VIEW_PROPERTIES_TO_COMPARE } from 'src/engine/core-modules/view/flat-view/constants/flat-view-properies-to-compare.constant'; -import { type FlatViewPropertiesToCompare } from 'src/engine/core-modules/view/flat-view/types/flat-view-properties-to-compare.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { FLAT_VIEW_PROPERTIES_TO_COMPARE } from 'src/engine/metadata-modules/flat-view/constants/flat-view-properties-to-compare.constant'; +import { type FlatViewPropertiesToCompare } from 'src/engine/metadata-modules/flat-view/types/flat-view-properties-to-compare.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; import { type UpdateViewAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-action-v2.type'; import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts similarity index 80% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts index fbcdf28f3ba..3b8cff81361 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-create-view-input-to-flat-view-to-create.util.ts @@ -1,10 +1,10 @@ import { trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties } from 'twenty-shared/utils'; import { v4 } from 'uuid'; -import { type CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { type CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; export const fromCreateViewInputToFlatViewToCreate = ({ createViewInput: rawCreateViewInput, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts similarity index 68% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts index 0228d2e32a5..61f81ed25e1 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util.ts @@ -4,13 +4,13 @@ import { isDefined, } from 'twenty-shared/utils'; -import { type DeleteViewInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view.input'; +import { type FlatViewMaps } from 'src/engine/metadata-modules/flat-view/types/flat-view-maps.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { type DeleteViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/delete-view.input'; import { ViewException, ViewExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view.exception'; -import { type FlatViewMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-maps.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; export const fromDeleteViewInputToFlatViewOrThrow = ({ deleteViewInput: rawDeleteViewInput, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts similarity index 67% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts index ca58c1a054e..ba5cbcf1639 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util.ts @@ -4,13 +4,13 @@ import { isDefined, } from 'twenty-shared/utils'; -import { type DestroyViewInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view.input'; +import { type FlatViewMaps } from 'src/engine/metadata-modules/flat-view/types/flat-view-maps.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { type DestroyViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/destroy-view.input'; import { ViewException, ViewExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view.exception'; -import { type FlatViewMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-maps.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; export const fromDestroyViewInputToFlatViewOrThrow = ({ destroyViewInput: rawDestroyViewInput, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts index 43375d2cf26..80a8ef54e73 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-partial-flat-view-to-flat-view-to-with-default.util.ts @@ -1,8 +1,8 @@ import { v4 } from 'uuid'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; export const fromPartialFlatViewToFlatViewWithDefault = ( partialFlatView: Partial, diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts similarity index 71% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts index 6a73a4c797b..66a2803da38 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util.ts @@ -5,14 +5,14 @@ import { trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties, } from 'twenty-shared/utils'; -import { type UpdateViewInput } from 'src/engine/core-modules/view/dtos/inputs/update-view.input'; +import { FLAT_VIEW_EDITABLE_PROPERTIES } from 'src/engine/metadata-modules/flat-view/constants/flat-view-editable-properties.constant'; +import { type FlatViewMaps } from 'src/engine/metadata-modules/flat-view/types/flat-view-maps.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { type UpdateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/update-view.input'; import { ViewException, ViewExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view.exception'; -import { FLAT_VIEW_EDITABLE_PROPERTIES } from 'src/engine/core-modules/view/flat-view/constants/flat-view-editable-properties.constant'; -import { type FlatViewMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-maps.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { mergeUpdateInExistingRecord } from 'src/utils/merge-update-in-existing-record.util'; export const fromUpdateViewInputToFlatViewToUpdateOrThrow = ({ diff --git a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-view-entity-to-flat-view.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-view-entity-to-flat-view.util.ts similarity index 62% rename from packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-view-entity-to-flat-view.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-view-entity-to-flat-view.util.ts index 9a2b2192ffe..d3943c15019 100644 --- a/packages/twenty-server/src/engine/core-modules/view/flat-view/utils/from-view-entity-to-flat-view.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view/utils/from-view-entity-to-flat-view.util.ts @@ -1,8 +1,8 @@ import { removePropertiesFromRecord } from 'twenty-shared/utils'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { VIEW_ENTITY_RELATION_PROPERTIES } from 'src/engine/core-modules/view/flat-view/constants/view-entity-relation-properties.constant'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { VIEW_ENTITY_RELATION_PROPERTIES } from 'src/engine/metadata-modules/flat-view/constants/view-entity-relation-properties.constant'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; export const fromViewEntityToFlatView = (viewEntity: ViewEntity): FlatView => { const viewEntityWithoutRelations = removePropertiesFromRecord( diff --git a/packages/twenty-server/src/engine/metadata-modules/metadata-engine.module.ts b/packages/twenty-server/src/engine/metadata-modules/metadata-engine.module.ts index 53e14f34379..381480257dd 100644 --- a/packages/twenty-server/src/engine/metadata-modules/metadata-engine.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/metadata-engine.module.ts @@ -9,12 +9,13 @@ import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadat import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { RemoteServerModule } from 'src/engine/metadata-modules/remote-server/remote-server.module'; import { RoleModule } from 'src/engine/metadata-modules/role/role.module'; +import { RouteTriggerModule } from 'src/engine/metadata-modules/route-trigger/route-trigger.module'; import { SearchFieldMetadataModule } from 'src/engine/metadata-modules/search-field-metadata/search-field-metadata.module'; +import { ServerlessFunctionLayerModule } from 'src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.module'; import { ServerlessFunctionModule } from 'src/engine/metadata-modules/serverless-function/serverless-function.module'; +import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; -import { RouteTriggerModule } from 'src/engine/metadata-modules/route-trigger/route-trigger.module'; -import { ServerlessFunctionLayerModule } from 'src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.module'; @Module({ imports: [ @@ -25,6 +26,7 @@ import { ServerlessFunctionLayerModule } from 'src/engine/metadata-modules/serve ServerlessFunctionModule, ServerlessFunctionLayerModule, AgentModule, + ViewModule, WorkspaceMetadataVersionModule, WorkspaceMigrationModule, RemoteServerModule, @@ -42,6 +44,7 @@ import { ServerlessFunctionLayerModule } from 'src/engine/metadata-modules/serve SearchFieldMetadataModule, ServerlessFunctionModule, AgentModule, + ViewModule, RemoteServerModule, RoleModule, PermissionsModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts index 0d478c90730..cd3bcda4d4c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts @@ -10,17 +10,15 @@ import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modul import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { getSubFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/get-sub-flat-entity-maps-or-throw.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; -import { FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; -import { fromCreateViewFieldInputToFlatViewFieldToCreate } from 'src/engine/core-modules/view/flat-view/utils/from-create-view-field-input-to-flat-view-field-to-create.util'; -import { fromCreateViewInputToFlatViewToCreate } from 'src/engine/core-modules/view/flat-view/utils/from-create-view-input-to-flat-view-to-create.util'; import { FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; import { fromCreateObjectInputToFlatObjectMetadataAndFlatFieldMetadatasToCreate } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata-and-flat-field-metadatas-to-create.util'; import { fromDeleteObjectInputToFlatFieldMetadatasToDelete } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-delete-object-input-to-flat-field-metadatas-to-delete.util'; import { fromFlatObjectMetadataToObjectMetadataDto } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-to-object-metadata-dto.util'; import { fromUpdateObjectInputToFlatObjectMetadataAndRelatedFlatEntities } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata-and-related-flat-entities.util'; +import { fromCreateViewFieldInputToFlatViewFieldToCreate } from 'src/engine/metadata-modules/flat-view-field/utils/from-create-view-field-input-to-flat-view-field-to-create.util'; +import { FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { fromCreateViewInputToFlatViewToCreate } from 'src/engine/metadata-modules/flat-view/utils/from-create-view-input-to-flat-view-to-create.util'; import { CreateObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/create-object.input'; import { DeleteOneObjectInput } from 'src/engine/metadata-modules/object-metadata/dtos/delete-object.input'; import { ObjectMetadataDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto'; @@ -29,6 +27,8 @@ import { ObjectMetadataException, ObjectMetadataExceptionCode, } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.entity.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.entity.ts index 14145077da0..c06f2fe290f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.entity.ts @@ -13,13 +13,13 @@ import { import { type WorkspaceEntityDuplicateCriteria } from 'src/engine/api/graphql/workspace-query-builder/types/workspace-entity-duplicate-criteria.type'; import { ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { type ObjectStandardOverridesDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-standard-overrides.dto'; import { FieldPermissionEntity } from 'src/engine/metadata-modules/object-permission/field-permission/field-permission.entity'; import { ObjectPermissionEntity } from 'src/engine/metadata-modules/object-permission/object-permission.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Entity('objectMetadata') @Unique('IDX_OBJECT_METADATA_NAME_SINGULAR_WORKSPACE_ID_UNIQUE', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts index 23438d06a4c..3200e633edf 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts @@ -12,8 +12,6 @@ import { TypeORMModule } from 'src/database/typeorm/typeorm.module'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { FeatureFlag } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { CoreViewModule } from 'src/engine/core-modules/view/view.module'; import { SettingsPermissionsGuard } from 'src/engine/guards/settings-permissions.guard'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module'; @@ -37,6 +35,9 @@ import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permi import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/permissions/utils/permissions-graphql-api-exception.filter'; import { RemoteTableRelationsModule } from 'src/engine/metadata-modules/remote-server/remote-table/remote-table-relations/remote-table-relations.module'; import { SearchVectorModule } from 'src/engine/metadata-modules/search-vector/search-vector.module'; +import { ViewFieldModule } from 'src/engine/metadata-modules/view-field/view-field.module'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.module'; import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; @@ -71,7 +72,8 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa WorkspaceDataSourceModule, FeatureFlagModule, WorkspaceMigrationV2Module, - CoreViewModule, + ViewModule, + ViewFieldModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ], services: [ diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/services/object-metadata-related-records.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/services/object-metadata-related-records.service.ts index 2d7325b98a9..1e203ec5d9d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/services/object-metadata-related-records.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/services/object-metadata-related-records.service.ts @@ -4,15 +4,15 @@ import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; import { Repository } from 'typeorm'; -import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager'; import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; diff --git a/packages/twenty-server/src/engine/core-modules/view/controllers/view-field.controller.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/controllers/view-field.controller.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/controllers/view-field.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/controllers/view-field.controller.ts index ab870397730..53ce41982c5 100644 --- a/packages/twenty-server/src/engine/core-modules/view/controllers/view-field.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/controllers/view-field.controller.ts @@ -13,21 +13,21 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; -import { UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; +import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; +import { UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { generateViewFieldExceptionMessage, generateViewFieldUserFriendlyExceptionMessage, ViewFieldException, ViewFieldExceptionCode, ViewFieldExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { ViewFieldRestApiExceptionFilter } from 'src/engine/core-modules/view/filters/view-field-rest-api-exception.filter'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; +import { ViewFieldRestApiExceptionFilter } from 'src/engine/metadata-modules/view-field/filters/view-field-rest-api-exception.filter'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; @Controller('rest/metadata/viewFields') @UseGuards(WorkspaceAuthGuard) diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-field.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-field.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/delete-view-field.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/delete-view-field.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/destroy-view-field.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/destroy-view-field.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-field.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-field.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view-field.dto.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/dtos/view-field.dto.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/view-field.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/dtos/view-field.dto.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view-field.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts similarity index 96% rename from packages/twenty-server/src/engine/core-modules/view/entities/view-field.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts index 5f5af9117cc..59725055cee 100644 --- a/packages/twenty-server/src/engine/core-modules/view/entities/view-field.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts @@ -14,9 +14,9 @@ import { import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Entity({ name: 'viewField', schema: 'core' }) @Index('IDX_VIEW_FIELD_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/view-field.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/exceptions/view-field.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/view-field.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/exceptions/view-field.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/filters/view-field-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/filters/view-field-rest-api-exception.filter.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/view/filters/view-field-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/filters/view-field-rest-api-exception.filter.ts index 5567fe9592d..8d3831d9e8c 100644 --- a/packages/twenty-server/src/engine/core-modules/view/filters/view-field-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/filters/view-field-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { ViewFieldException, ViewFieldExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; import { type CustomException } from 'src/utils/custom-exception'; @Catch(ViewFieldException) diff --git a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-field.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/resolvers/view-field.resolver.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/resolvers/view-field.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/resolvers/view-field.resolver.ts index a66a14170d2..8aab75099d7 100644 --- a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-field.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/resolvers/view-field.resolver.ts @@ -3,18 +3,18 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; 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 { CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; -import { DeleteViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view-field.input'; -import { DestroyViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view-field.input'; -import { UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; -import { ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFieldV2Service } from 'src/engine/core-modules/view/services/view-field-v2.service'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { ViewGraphqlApiExceptionFilter } from 'src/engine/core-modules/view/utils/view-graphql-api-exception.filter'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; +import { DeleteViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input'; +import { DestroyViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input'; +import { UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; +import { ViewFieldDTO } from 'src/engine/metadata-modules/view-field/dtos/view-field.dto'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFieldV2Service } from 'src/engine/metadata-modules/view-field/services/view-field-v2.service'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { ViewGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter'; @Resolver(() => ViewFieldDTO) @UseFilters(ViewGraphqlApiExceptionFilter) diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-field.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/services/tests/view-field.service.spec.ts similarity index 93% rename from packages/twenty-server/src/engine/core-modules/view/services/tests/view-field.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/services/tests/view-field.service.spec.ts index 1deef197e7d..2a8f9d2b78f 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-field.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/services/tests/view-field.service.spec.ts @@ -4,22 +4,21 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { UserInputError } from 'apollo-server-core'; import { type Repository } from 'typeorm'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { ViewFieldException, ViewFieldExceptionCode, ViewFieldExceptionMessageKey, generateViewFieldExceptionMessage, generateViewFieldUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; describe('ViewFieldService', () => { let viewFieldService: ViewFieldService; let viewFieldRepository: Repository; - let viewService: ViewService; const mockViewField = { id: 'view-field-id', @@ -50,10 +49,15 @@ describe('ViewFieldService', () => { }, }, { - provide: ViewService, + provide: getRepositoryToken(ViewEntity), useValue: { - findByIdWithRelatedObjectMetadata: jest.fn(), - flushGraphQLCache: jest.fn(), + findOne: jest.fn(), + }, + }, + { + provide: WorkspaceCacheStorageService, + useValue: { + flushGraphQLOperation: jest.fn(), }, }, ], @@ -63,7 +67,6 @@ describe('ViewFieldService', () => { viewFieldRepository = module.get>( getRepositoryToken(ViewFieldEntity), ); - viewService = module.get(ViewService); }); it('should be defined', () => { @@ -248,7 +251,7 @@ describe('ViewFieldService', () => { return Promise.resolve(null); }); jest - .spyOn(viewService, 'findByIdWithRelatedObjectMetadata') + .spyOn(viewFieldService, 'findViewByIdWithRelations') .mockResolvedValue(mockView); const invalidData = { ...validViewFieldData, position: -1 }; @@ -285,7 +288,7 @@ describe('ViewFieldService', () => { .spyOn(viewFieldRepository, 'save') .mockResolvedValue(updatedViewField); jest - .spyOn(viewService, 'findByIdWithRelatedObjectMetadata') + .spyOn(viewFieldService, 'findViewByIdWithRelations') .mockResolvedValue(mockView); const result = await viewFieldService.update(id, workspaceId, updateData); @@ -352,7 +355,7 @@ describe('ViewFieldService', () => { return Promise.resolve(null); }); jest - .spyOn(viewService, 'findByIdWithRelatedObjectMetadata') + .spyOn(viewFieldService, 'findViewByIdWithRelations') .mockResolvedValue(mockView); await expect( @@ -406,7 +409,7 @@ describe('ViewFieldService', () => { return Promise.resolve(null); }); jest - .spyOn(viewService, 'findByIdWithRelatedObjectMetadata') + .spyOn(viewFieldService, 'findViewByIdWithRelations') .mockResolvedValue(mockView); await expect( @@ -453,10 +456,7 @@ describe('ViewFieldService', () => { return Promise.resolve(null); }); jest - .spyOn( - viewFieldService['viewService'], - 'findByIdWithRelatedObjectMetadata', - ) + .spyOn(viewFieldService, 'findViewByIdWithRelations') .mockResolvedValue(mockView); await expect( diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts similarity index 91% rename from packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts index fd7327b8503..aaff7bce6da 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-field-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts @@ -9,15 +9,15 @@ import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modul import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { getSubFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/get-sub-flat-entity-maps-or-throw.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; -import { DeleteViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view-field.input'; -import { DestroyViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view-field.input'; -import { UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; -import { ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto'; -import { fromCreateViewFieldInputToFlatViewFieldToCreate } from 'src/engine/core-modules/view/flat-view/utils/from-create-view-field-input-to-flat-view-field-to-create.util'; -import { fromDeleteViewFieldInputToFlatViewFieldOrThrow } from 'src/engine/core-modules/view/flat-view/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util'; -import { fromDestroyViewFieldInputToFlatViewFieldOrThrow } from 'src/engine/core-modules/view/flat-view/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util'; -import { fromUpdateViewFieldInputToFlatViewFieldToUpdateOrThrow } from 'src/engine/core-modules/view/flat-view/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util'; +import { fromCreateViewFieldInputToFlatViewFieldToCreate } from 'src/engine/metadata-modules/flat-view-field/utils/from-create-view-field-input-to-flat-view-field-to-create.util'; +import { fromDeleteViewFieldInputToFlatViewFieldOrThrow } from 'src/engine/metadata-modules/flat-view-field/utils/from-delete-view-field-input-to-flat-view-field-or-throw.util'; +import { fromDestroyViewFieldInputToFlatViewFieldOrThrow } from 'src/engine/metadata-modules/flat-view-field/utils/from-destroy-view-field-input-to-flat-view-field-or-throw.util'; +import { fromUpdateViewFieldInputToFlatViewFieldToUpdateOrThrow } from 'src/engine/metadata-modules/flat-view-field/utils/from-update-view-field-input-to-flat-view-field-to-update-or-throw.util'; +import { CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; +import { DeleteViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input'; +import { DestroyViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input'; +import { UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; +import { ViewFieldDTO } from 'src/engine/metadata-modules/view-field/dtos/view-field.dto'; import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service'; diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-field.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field.service.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/view/services/view-field.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field.service.ts index 61470c62b8b..640e7bb5d1c 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-field.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field.service.ts @@ -5,22 +5,26 @@ import { isDefined } from 'twenty-shared/utils'; import { IsNull, Repository } from 'typeorm'; import { UserInputError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { ViewFieldException, ViewFieldExceptionCode, ViewFieldExceptionMessageKey, generateViewFieldExceptionMessage, generateViewFieldUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; +import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; @Injectable() export class ViewFieldService { constructor( @InjectRepository(ViewFieldEntity) private readonly viewFieldRepository: Repository, - private readonly viewService: ViewService, + @InjectRepository(ViewEntity) + private readonly viewRepository: Repository, + private readonly workspaceCacheStorageService: WorkspaceCacheStorageService, ) {} async findByWorkspaceId(workspaceId: string): Promise { @@ -96,7 +100,7 @@ export class ViewFieldService { const savedViewField = await this.viewFieldRepository.save(viewField); - await this.viewService.flushGraphQLCache(viewFieldData.workspaceId); + await this.flushGraphQLCache(viewFieldData.workspaceId); const createdViewField = await this.findById( savedViewField.id, @@ -226,7 +230,7 @@ export class ViewFieldService { ...updateData, }); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return { ...existingViewField, ...updatedViewField }; } @@ -246,7 +250,7 @@ export class ViewFieldService { await this.viewFieldRepository.softDelete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return viewField; } @@ -266,7 +270,7 @@ export class ViewFieldService { await this.viewFieldRepository.delete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return viewField; } @@ -289,7 +293,7 @@ export class ViewFieldService { }, workspaceId: string, ) { - const view = await this.viewService.findByIdWithRelatedObjectMetadata( + const view = await this.findViewByIdWithRelations( newOrUpdatedViewField.viewId, workspaceId, ); @@ -326,7 +330,7 @@ export class ViewFieldService { }, workspaceId: string, ) { - const view = await this.viewService.findByIdWithRelatedObjectMetadata( + const view = await this.findViewByIdWithRelations( newOrUpdatedViewField.viewId, workspaceId, ); @@ -398,7 +402,7 @@ export class ViewFieldService { workspaceId: string, ): Promise> { if (!isDefined(viewFieldData.position)) { - const view = await this.viewService.findByIdWithRelatedObjectMetadata( + const view = await this.findViewByIdWithRelations( viewFieldData.viewId, workspaceId, ); @@ -432,4 +436,27 @@ export class ViewFieldService { isDefined(data.workspaceId) ); } + + public async findViewByIdWithRelations( + id: string, + workspaceId: string, + ): Promise { + const view = await this.viewRepository.findOne({ + where: { + id, + workspaceId, + deletedAt: IsNull(), + }, + relations: ['workspace', 'objectMetadata', 'viewFields'], + }); + + return view || null; + } + + private async flushGraphQLCache(workspaceId: string): Promise { + await this.workspaceCacheStorageService.flushGraphQLOperation({ + operationName: FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION, + workspaceId, + }); + } } diff --git a/packages/twenty-server/src/engine/metadata-modules/view-field/view-field.module.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/view-field.module.ts new file mode 100644 index 00000000000..7f414864b4d --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/view-field.module.ts @@ -0,0 +1,27 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module'; +import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; +import { ViewFieldController } from 'src/engine/metadata-modules/view-field/controllers/view-field.controller'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFieldResolver } from 'src/engine/metadata-modules/view-field/resolvers/view-field.resolver'; +import { ViewFieldV2Service } from 'src/engine/metadata-modules/view-field/services/view-field-v2.service'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +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([ViewFieldEntity, ViewEntity]), + WorkspaceCacheStorageModule, + FeatureFlagModule, + WorkspaceMigrationV2Module, + WorkspaceManyOrAllFlatEntityMapsCacheModule, + ], + controllers: [ViewFieldController], + providers: [ViewFieldService, ViewFieldResolver, ViewFieldV2Service], + exports: [ViewFieldService, ViewFieldV2Service], +}) +export class ViewFieldModule {} diff --git a/packages/twenty-server/src/engine/core-modules/view/controllers/view-filter-group.controller.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/controllers/view-filter-group.controller.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/controllers/view-filter-group.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/controllers/view-filter-group.controller.ts index d5eb4453385..6f7644b679c 100644 --- a/packages/twenty-server/src/engine/core-modules/view/controllers/view-filter-group.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/controllers/view-filter-group.controller.ts @@ -13,21 +13,21 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreateViewFilterGroupInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-filter-group.input'; -import { UpdateViewFilterGroupInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-filter-group.input'; -import { type ViewFilterGroupDTO } from 'src/engine/core-modules/view/dtos/view-filter-group.dto'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; +import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewFilterGroupInput } from 'src/engine/metadata-modules/view-filter-group/dtos/inputs/create-view-filter-group.input'; +import { UpdateViewFilterGroupInput } from 'src/engine/metadata-modules/view-filter-group/dtos/inputs/update-view-filter-group.input'; +import { type ViewFilterGroupDTO } from 'src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto'; import { generateViewFilterGroupExceptionMessage, generateViewFilterGroupUserFriendlyExceptionMessage, ViewFilterGroupException, ViewFilterGroupExceptionCode, ViewFilterGroupExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; -import { ViewFilterGroupRestApiExceptionFilter } from 'src/engine/core-modules/view/filters/view-filter-group-rest-api-exception.filter'; -import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; +import { ViewFilterGroupRestApiExceptionFilter } from 'src/engine/metadata-modules/view-filter-group/filters/view-filter-group-rest-api-exception.filter'; +import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; @Controller('rest/metadata/viewFilterGroups') @UseGuards(WorkspaceAuthGuard) diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter-group.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/inputs/create-view-filter-group.input.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter-group.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/inputs/create-view-filter-group.input.ts index 1807c3b8209..ba1aa51781a 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter-group.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/inputs/create-view-filter-group.input.ts @@ -1,7 +1,7 @@ import { Field, InputType } from '@nestjs/graphql'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; @InputType() export class CreateViewFilterGroupInput { diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-filter-group.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/inputs/update-view-filter-group.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-filter-group.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/inputs/update-view-filter-group.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter-group.dto.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto.ts similarity index 88% rename from packages/twenty-server/src/engine/core-modules/view/dtos/view-filter-group.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto.ts index 5819901a828..3c254c4b7b5 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter-group.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto.ts @@ -3,7 +3,7 @@ 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 { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; registerEnumType(ViewFilterGroupLogicalOperator, { name: 'ViewFilterGroupLogicalOperator', diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view-filter-group.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/view/entities/view-filter-group.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts index ced23f5e755..04bc0776420 100644 --- a/packages/twenty-server/src/engine/core-modules/view/entities/view-filter-group.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts @@ -14,10 +14,10 @@ import { import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; +import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Entity({ name: 'viewFilterGroup', schema: 'core' }) @Index('IDX_VIEW_FILTER_GROUP_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-filter-group-logical-operator.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/enums/view-filter-group-logical-operator.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/view-filter-group.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/view-filter-group.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/filters/view-filter-group-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/filters/view-filter-group-rest-api-exception.filter.ts similarity index 93% rename from packages/twenty-server/src/engine/core-modules/view/filters/view-filter-group-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/filters/view-filter-group-rest-api-exception.filter.ts index 842b7aea952..b018da18713 100644 --- a/packages/twenty-server/src/engine/core-modules/view/filters/view-filter-group-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/filters/view-filter-group-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { ViewFilterGroupException, ViewFilterGroupExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; import { type CustomException } from 'src/utils/custom-exception'; @Catch(ViewFilterGroupException) diff --git a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-filter-group.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/resolvers/view-filter-group.resolver.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/resolvers/view-filter-group.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/resolvers/view-filter-group.resolver.ts index 142e35a0e39..b9460f2b782 100644 --- a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-filter-group.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/resolvers/view-filter-group.resolver.ts @@ -3,14 +3,14 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; -import { CreateViewFilterGroupInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-filter-group.input'; -import { UpdateViewFilterGroupInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-filter-group.input'; -import { ViewFilterGroupDTO } from 'src/engine/core-modules/view/dtos/view-filter-group.dto'; -import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service'; -import { ViewGraphqlApiExceptionFilter } from 'src/engine/core-modules/view/utils/view-graphql-api-exception.filter'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewFilterGroupInput } from 'src/engine/metadata-modules/view-filter-group/dtos/inputs/create-view-filter-group.input'; +import { UpdateViewFilterGroupInput } from 'src/engine/metadata-modules/view-filter-group/dtos/inputs/update-view-filter-group.input'; +import { ViewFilterGroupDTO } from 'src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto'; +import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; +import { ViewGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter'; @Resolver(() => ViewFilterGroupDTO) @UseFilters(ViewGraphqlApiExceptionFilter) diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter-group.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/tests/view-filter-group.service.spec.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter-group.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/tests/view-filter-group.service.spec.ts index 4232293890e..88218c50316 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter-group.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/tests/view-filter-group.service.spec.ts @@ -3,17 +3,17 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { type Repository } from 'typeorm'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; import { ViewFilterGroupException, ViewFilterGroupExceptionCode, ViewFilterGroupExceptionMessageKey, generateViewFilterGroupExceptionMessage, generateViewFilterGroupUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; -import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; +import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; describe('ViewFilterGroupService', () => { let viewFilterGroupService: ViewFilterGroupService; @@ -46,9 +46,9 @@ describe('ViewFilterGroupService', () => { }, }, { - provide: ViewService, + provide: WorkspaceCacheStorageService, useValue: { - flushGraphQLCache: jest.fn(), + flushGraphQLOperation: jest.fn(), }, }, ], diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-filter-group.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/view/services/view-filter-group.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts index b3986fac3aa..0ff41b9ee73 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-filter-group.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts @@ -4,22 +4,23 @@ import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; import { IsNull, Repository } from 'typeorm'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; import { ViewFilterGroupException, ViewFilterGroupExceptionCode, ViewFilterGroupExceptionMessageKey, generateViewFilterGroupExceptionMessage, generateViewFilterGroupUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; +import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; @Injectable() export class ViewFilterGroupService { constructor( @InjectRepository(ViewFilterGroupEntity) private readonly viewFilterGroupRepository: Repository, - private readonly viewService: ViewService, + private readonly workspaceCacheStorageService: WorkspaceCacheStorageService, ) {} async findByWorkspaceId( @@ -120,12 +121,12 @@ export class ViewFilterGroupService { const viewFilterGroup = this.viewFilterGroupRepository.create(viewFilterGroupData); - await this.viewService.flushGraphQLCache(viewFilterGroupData.workspaceId); + await this.flushGraphQLCache(viewFilterGroupData.workspaceId); const savedViewFilterGroup = await this.viewFilterGroupRepository.save(viewFilterGroup); - await this.viewService.flushGraphQLCache(viewFilterGroupData.workspaceId); + await this.flushGraphQLCache(viewFilterGroupData.workspaceId); return savedViewFilterGroup; } @@ -152,7 +153,7 @@ export class ViewFilterGroupService { ...updateData, }); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return { ...existingViewFilterGroup, ...updatedViewFilterGroup }; } @@ -193,8 +194,15 @@ export class ViewFilterGroupService { await this.viewFilterGroupRepository.delete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return true; } + + private async flushGraphQLCache(workspaceId: string): Promise { + await this.workspaceCacheStorageService.flushGraphQLOperation({ + operationName: FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION, + workspaceId, + }); + } } diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/view-filter-group.module.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/view-filter-group.module.ts new file mode 100644 index 00000000000..3e50f62de4f --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/view-filter-group.module.ts @@ -0,0 +1,19 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { ViewFilterGroupController } from 'src/engine/metadata-modules/view-filter-group/controllers/view-filter-group.controller'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { ViewFilterGroupResolver } from 'src/engine/metadata-modules/view-filter-group/resolvers/view-filter-group.resolver'; +import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; +import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ViewFilterGroupEntity]), + WorkspaceCacheStorageModule, + ], + controllers: [ViewFilterGroupController], + providers: [ViewFilterGroupService, ViewFilterGroupResolver], + exports: [ViewFilterGroupService], +}) +export class ViewFilterGroupModule {} diff --git a/packages/twenty-server/src/engine/core-modules/view/controllers/view-filter.controller.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/controllers/view-filter.controller.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/controllers/view-filter.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/controllers/view-filter.controller.ts index deed52dc6cb..eb23493561e 100644 --- a/packages/twenty-server/src/engine/core-modules/view/controllers/view-filter.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/controllers/view-filter.controller.ts @@ -13,21 +13,21 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreateViewFilterInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-filter.input'; -import { UpdateViewFilterInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-filter.input'; -import { ViewFilterDTO } from 'src/engine/core-modules/view/dtos/view-filter.dto'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; +import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewFilterInput } from 'src/engine/metadata-modules/view-filter/dtos/inputs/create-view-filter.input'; +import { UpdateViewFilterInput } from 'src/engine/metadata-modules/view-filter/dtos/inputs/update-view-filter.input'; +import { ViewFilterDTO } from 'src/engine/metadata-modules/view-filter/dtos/view-filter.dto'; import { generateViewFilterExceptionMessage, generateViewFilterUserFriendlyExceptionMessage, ViewFilterException, ViewFilterExceptionCode, ViewFilterExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-filter.exception'; -import { ViewFilterRestApiExceptionFilter } from 'src/engine/core-modules/view/filters/view-filter-rest-api-exception.filter'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +} from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; +import { ViewFilterRestApiExceptionFilter } from 'src/engine/metadata-modules/view-filter/filters/view-filter-rest-api-exception.filter'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; @Controller('rest/metadata/viewFilters') @UseGuards(WorkspaceAuthGuard) diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/inputs/create-view-filter.input.ts similarity index 89% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/inputs/create-view-filter.input.ts index 28f15d5ffdf..a970be2c662 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-filter.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/inputs/create-view-filter.input.ts @@ -4,7 +4,7 @@ import GraphQLJSON from 'graphql-type-json'; import { ViewFilterOperand } from 'twenty-shared/types'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type'; +import { ViewFilterValue } from 'src/engine/metadata-modules/view-filter/types/view-filter-value.type'; @InputType() export class CreateViewFilterInput { diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-filter.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/inputs/update-view-filter.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-filter.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/inputs/update-view-filter.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/view-filter.dto.ts similarity index 92% rename from packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/view-filter.dto.ts index 0a481b7b49b..36f741ece10 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/view-filter.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/dtos/view-filter.dto.ts @@ -5,7 +5,7 @@ import GraphQLJSON from 'graphql-type-json'; import { ViewFilterOperand } from 'twenty-shared/types'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type'; +import { ViewFilterValue } from 'src/engine/metadata-modules/view-filter/types/view-filter-value.type'; registerEnumType(ViewFilterOperand, { name: 'ViewFilterOperand', diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts similarity index 89% rename from packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts index 89c6b03b385..32371d3a13c 100644 --- a/packages/twenty-server/src/engine/core-modules/view/entities/view-filter.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts @@ -14,11 +14,11 @@ import { import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { ViewFilterValue } from 'src/engine/metadata-modules/view-filter/types/view-filter-value.type'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Entity({ name: 'viewFilter', schema: 'core' }) @Index('IDX_VIEW_FILTER_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/view-filter.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/exceptions/view-filter.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/view-filter.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/exceptions/view-filter.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/filters/view-filter-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/filters/view-filter-rest-api-exception.filter.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/view/filters/view-filter-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/filters/view-filter-rest-api-exception.filter.ts index 620f5d41ebb..f389e987f59 100644 --- a/packages/twenty-server/src/engine/core-modules/view/filters/view-filter-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/filters/view-filter-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { ViewFilterException, ViewFilterExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-filter.exception'; +} from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; import { type CustomException } from 'src/utils/custom-exception'; @Catch(ViewFilterException) diff --git a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-filter.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/resolvers/view-filter.resolver.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/view/resolvers/view-filter.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/resolvers/view-filter.resolver.ts index eedcbc9a2b1..e9bb7e012f4 100644 --- a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-filter.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/resolvers/view-filter.resolver.ts @@ -3,14 +3,14 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; -import { CreateViewFilterInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-filter.input'; -import { UpdateViewFilterInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-filter.input'; -import { ViewFilterDTO } from 'src/engine/core-modules/view/dtos/view-filter.dto'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { ViewGraphqlApiExceptionFilter } from 'src/engine/core-modules/view/utils/view-graphql-api-exception.filter'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewFilterInput } from 'src/engine/metadata-modules/view-filter/dtos/inputs/create-view-filter.input'; +import { UpdateViewFilterInput } from 'src/engine/metadata-modules/view-filter/dtos/inputs/update-view-filter.input'; +import { ViewFilterDTO } from 'src/engine/metadata-modules/view-filter/dtos/view-filter.dto'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { ViewGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter'; @Resolver(() => ViewFilterDTO) @UseFilters(ViewGraphqlApiExceptionFilter) diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/services/tests/view-filter.service.spec.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/services/tests/view-filter.service.spec.ts index 99c2d92cf5e..e9c76ba29eb 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-filter.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/services/tests/view-filter.service.spec.ts @@ -4,16 +4,16 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { ViewFilterOperand } from 'twenty-shared/types'; import { type Repository } from 'typeorm'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; +import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; import { ViewFilterException, ViewFilterExceptionCode, ViewFilterExceptionMessageKey, generateViewFilterExceptionMessage, generateViewFilterUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-filter.exception'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; describe('ViewFilterService', () => { let viewFilterService: ViewFilterService; @@ -37,9 +37,9 @@ describe('ViewFilterService', () => { providers: [ ViewFilterService, { - provide: ViewService, + provide: WorkspaceCacheStorageService, useValue: { - flushGraphQLCache: jest.fn(), + flushGraphQLOperation: jest.fn(), }, }, { diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-filter.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/view/services/view-filter.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts index fa18a5d8e99..2808372c672 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-filter.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts @@ -4,22 +4,23 @@ import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; import { IsNull, Repository } from 'typeorm'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; +import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; import { ViewFilterException, ViewFilterExceptionCode, ViewFilterExceptionMessageKey, generateViewFilterExceptionMessage, generateViewFilterUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-filter.exception'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; +import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; @Injectable() export class ViewFilterService { constructor( @InjectRepository(ViewFilterEntity) private readonly viewFilterRepository: Repository, - private readonly viewService: ViewService, + private readonly workspaceCacheStorageService: WorkspaceCacheStorageService, ) {} async findByWorkspaceId(workspaceId: string): Promise { @@ -111,11 +112,11 @@ export class ViewFilterService { const viewFilter = this.viewFilterRepository.create(viewFilterData); - await this.viewService.flushGraphQLCache(viewFilterData.workspaceId); + await this.flushGraphQLCache(viewFilterData.workspaceId); const savedViewFilter = await this.viewFilterRepository.save(viewFilter); - await this.viewService.flushGraphQLCache(viewFilterData.workspaceId); + await this.flushGraphQLCache(viewFilterData.workspaceId); return savedViewFilter; } @@ -142,7 +143,7 @@ export class ViewFilterService { ...updateData, }); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return { ...existingViewFilter, ...updatedViewFilter }; } @@ -162,7 +163,7 @@ export class ViewFilterService { await this.viewFilterRepository.softDelete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return viewFilter; } @@ -182,8 +183,15 @@ export class ViewFilterService { await this.viewFilterRepository.delete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return true; } + + private async flushGraphQLCache(workspaceId: string): Promise { + await this.workspaceCacheStorageService.flushGraphQLOperation({ + operationName: FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION, + workspaceId, + }); + } } diff --git a/packages/twenty-server/src/engine/core-modules/view/types/view-filter-value.type.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/types/view-filter-value.type.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/types/view-filter-value.type.ts rename to packages/twenty-server/src/engine/metadata-modules/view-filter/types/view-filter-value.type.ts diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter/view-filter.module.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/view-filter.module.ts new file mode 100644 index 00000000000..b4c5954eedf --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/view-filter.module.ts @@ -0,0 +1,19 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { ViewFilterController } from 'src/engine/metadata-modules/view-filter/controllers/view-filter.controller'; +import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { ViewFilterResolver } from 'src/engine/metadata-modules/view-filter/resolvers/view-filter.resolver'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ViewFilterEntity]), + WorkspaceCacheStorageModule, + ], + controllers: [ViewFilterController], + providers: [ViewFilterService, ViewFilterResolver], + exports: [ViewFilterService], +}) +export class ViewFilterModule {} diff --git a/packages/twenty-server/src/engine/core-modules/view/controllers/view-group.controller.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/controllers/view-group.controller.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/controllers/view-group.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/controllers/view-group.controller.ts index d2779de7d2e..a5c23f250e3 100644 --- a/packages/twenty-server/src/engine/core-modules/view/controllers/view-group.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/controllers/view-group.controller.ts @@ -13,21 +13,21 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreateViewGroupInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-group.input'; -import { UpdateViewGroupInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-group.input'; -import { type ViewGroupDTO } from 'src/engine/core-modules/view/dtos/view-group.dto'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; +import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewGroupInput } from 'src/engine/metadata-modules/view-group/dtos/inputs/create-view-group.input'; +import { UpdateViewGroupInput } from 'src/engine/metadata-modules/view-group/dtos/inputs/update-view-group.input'; +import { type ViewGroupDTO } from 'src/engine/metadata-modules/view-group/dtos/view-group.dto'; import { generateViewGroupExceptionMessage, generateViewGroupUserFriendlyExceptionMessage, ViewGroupException, ViewGroupExceptionCode, ViewGroupExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; -import { ViewGroupRestApiExceptionFilter } from 'src/engine/core-modules/view/filters/view-group-rest-api-exception.filter'; -import { ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; +import { ViewGroupRestApiExceptionFilter } from 'src/engine/metadata-modules/view-group/filters/view-group-rest-api-exception.filter'; +import { ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; @Controller('rest/metadata/viewGroups') @UseGuards(WorkspaceAuthGuard) diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-group.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/dtos/inputs/create-view-group.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-group.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/dtos/inputs/create-view-group.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-group.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/dtos/inputs/update-view-group.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-group.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/dtos/inputs/update-view-group.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view-group.dto.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/dtos/view-group.dto.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/view-group.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/dtos/view-group.dto.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view-group.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/view/entities/view-group.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts index 502b8b031f0..2e8757faa5f 100644 --- a/packages/twenty-server/src/engine/core-modules/view/entities/view-group.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts @@ -13,9 +13,9 @@ import { import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Entity({ name: 'viewGroup', schema: 'core' }) @Index('IDX_VIEW_GROUP_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/view-group.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/exceptions/view-group.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/view-group.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/exceptions/view-group.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/filters/view-group-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/filters/view-group-rest-api-exception.filter.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/view/filters/view-group-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/filters/view-group-rest-api-exception.filter.ts index 6ba90a7e0af..1a4b4f145c8 100644 --- a/packages/twenty-server/src/engine/core-modules/view/filters/view-group-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/filters/view-group-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { ViewGroupException, ViewGroupExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; import { type CustomException } from 'src/utils/custom-exception'; @Catch(ViewGroupException) diff --git a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-group.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/resolvers/view-group.resolver.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/view/resolvers/view-group.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/resolvers/view-group.resolver.ts index 26c2c3eca26..2522a3d3e1f 100644 --- a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-group.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/resolvers/view-group.resolver.ts @@ -3,14 +3,14 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; -import { CreateViewGroupInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-group.input'; -import { UpdateViewGroupInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-group.input'; -import { ViewGroupDTO } from 'src/engine/core-modules/view/dtos/view-group.dto'; -import { ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { ViewGraphqlApiExceptionFilter } from 'src/engine/core-modules/view/utils/view-graphql-api-exception.filter'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewGroupInput } from 'src/engine/metadata-modules/view-group/dtos/inputs/create-view-group.input'; +import { UpdateViewGroupInput } from 'src/engine/metadata-modules/view-group/dtos/inputs/update-view-group.input'; +import { ViewGroupDTO } from 'src/engine/metadata-modules/view-group/dtos/view-group.dto'; +import { ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; +import { ViewGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter'; @Resolver(() => ViewGroupDTO) @UseFilters(ViewGraphqlApiExceptionFilter) diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-group.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/services/tests/view-group.service.spec.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/view/services/tests/view-group.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/services/tests/view-group.service.spec.ts index 385f5c49f14..ab884d1f77f 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-group.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/services/tests/view-group.service.spec.ts @@ -3,16 +3,16 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { type Repository } from 'typeorm'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; +import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; import { ViewGroupException, ViewGroupExceptionCode, ViewGroupExceptionMessageKey, generateViewGroupExceptionMessage, generateViewGroupUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; -import { ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; +import { ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; describe('ViewGroupService', () => { let viewGroupService: ViewGroupService; @@ -47,9 +47,9 @@ describe('ViewGroupService', () => { }, }, { - provide: ViewService, + provide: WorkspaceCacheStorageService, useValue: { - flushGraphQLCache: jest.fn(), + flushGraphQLOperation: jest.fn(), }, }, ], diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-group.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/view/services/view-group.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts index 4bbf71d603d..6d0e7f2c03d 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-group.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts @@ -4,22 +4,23 @@ import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; import { IsNull, Repository } from 'typeorm'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; +import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; import { ViewGroupException, ViewGroupExceptionCode, ViewGroupExceptionMessageKey, generateViewGroupExceptionMessage, generateViewGroupUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; +import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; @Injectable() export class ViewGroupService { constructor( @InjectRepository(ViewGroupEntity) private readonly viewGroupRepository: Repository, - private readonly viewService: ViewService, + private readonly workspaceCacheStorageService: WorkspaceCacheStorageService, ) {} async findByWorkspaceId(workspaceId: string): Promise { @@ -111,11 +112,11 @@ export class ViewGroupService { const viewGroup = this.viewGroupRepository.create(viewGroupData); - await this.viewService.flushGraphQLCache(viewGroupData.workspaceId); + await this.flushGraphQLCache(viewGroupData.workspaceId); const savedViewGroup = await this.viewGroupRepository.save(viewGroup); - await this.viewService.flushGraphQLCache(viewGroupData.workspaceId); + await this.flushGraphQLCache(viewGroupData.workspaceId); return savedViewGroup; } @@ -142,7 +143,7 @@ export class ViewGroupService { ...updateData, }); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return { ...existingViewGroup, ...updatedViewGroup }; } @@ -162,7 +163,7 @@ export class ViewGroupService { await this.viewGroupRepository.softDelete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return viewGroup; } @@ -182,8 +183,15 @@ export class ViewGroupService { await this.viewGroupRepository.delete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return true; } + + private async flushGraphQLCache(workspaceId: string): Promise { + await this.workspaceCacheStorageService.flushGraphQLOperation({ + operationName: FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION, + workspaceId, + }); + } } diff --git a/packages/twenty-server/src/engine/metadata-modules/view-group/view-group.module.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/view-group.module.ts new file mode 100644 index 00000000000..48c1f6bbf1e --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/view-group.module.ts @@ -0,0 +1,19 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { ViewGroupController } from 'src/engine/metadata-modules/view-group/controllers/view-group.controller'; +import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { ViewGroupResolver } from 'src/engine/metadata-modules/view-group/resolvers/view-group.resolver'; +import { ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; +import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ViewGroupEntity]), + WorkspaceCacheStorageModule, + ], + controllers: [ViewGroupController], + providers: [ViewGroupService, ViewGroupResolver], + exports: [ViewGroupService], +}) +export class ViewGroupModule {} diff --git a/packages/twenty-server/src/engine/core-modules/view/controllers/view-sort.controller.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/controllers/view-sort.controller.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/controllers/view-sort.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/controllers/view-sort.controller.ts index a908b41b6c5..ca43c46bb24 100644 --- a/packages/twenty-server/src/engine/core-modules/view/controllers/view-sort.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/controllers/view-sort.controller.ts @@ -13,21 +13,21 @@ import { import { isDefined } from 'twenty-shared/utils'; -import { CreateViewSortInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-sort.input'; -import { UpdateViewSortInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-sort.input'; -import { type ViewSortDTO } from 'src/engine/core-modules/view/dtos/view-sort.dto'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; +import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewSortInput } from 'src/engine/metadata-modules/view-sort/dtos/inputs/create-view-sort.input'; +import { UpdateViewSortInput } from 'src/engine/metadata-modules/view-sort/dtos/inputs/update-view-sort.input'; +import { type ViewSortDTO } from 'src/engine/metadata-modules/view-sort/dtos/view-sort.dto'; import { ViewSortException, ViewSortExceptionCode, ViewSortExceptionMessageKey, generateViewSortExceptionMessage, generateViewSortUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; -import { ViewSortRestApiExceptionFilter } from 'src/engine/core-modules/view/filters/view-sort-rest-api-exception.filter'; -import { ViewSortService } from 'src/engine/core-modules/view/services/view-sort.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; +import { ViewSortRestApiExceptionFilter } from 'src/engine/metadata-modules/view-sort/filters/view-sort-rest-api-exception.filter'; +import { ViewSortService } from 'src/engine/metadata-modules/view-sort/services/view-sort.service'; @Controller('rest/metadata/viewSorts') @UseGuards(WorkspaceAuthGuard) diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-sort.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/inputs/create-view-sort.input.ts similarity index 84% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-sort.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/inputs/create-view-sort.input.ts index c84560e8774..8a299cd3c78 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view-sort.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/inputs/create-view-sort.input.ts @@ -1,7 +1,7 @@ import { Field, InputType } from '@nestjs/graphql'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; @InputType() export class CreateViewSortInput { diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-sort.input.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/inputs/update-view-sort.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view-sort.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/inputs/update-view-sort.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view-sort.dto.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/view-sort.dto.ts similarity index 89% rename from packages/twenty-server/src/engine/core-modules/view/dtos/view-sort.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/view-sort.dto.ts index 1911ac25cce..385e5e22b90 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/view-sort.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/dtos/view-sort.dto.ts @@ -3,7 +3,7 @@ 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 { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; registerEnumType(ViewSortDirection, { name: 'ViewSortDirection' }); diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view-sort.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts similarity index 91% rename from packages/twenty-server/src/engine/core-modules/view/entities/view-sort.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts index 2f3bfb2462a..fc50a0101f4 100644 --- a/packages/twenty-server/src/engine/core-modules/view/entities/view-sort.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts @@ -13,10 +13,10 @@ import { import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; @Entity({ name: 'viewSort', schema: 'core' }) @Index('IDX_VIEW_SORT_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-sort-direction.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/enums/view-sort-direction.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/enums/view-sort-direction.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/enums/view-sort-direction.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/view-sort.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/exceptions/view-sort.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/view-sort.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/exceptions/view-sort.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/filters/view-sort-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/filters/view-sort-rest-api-exception.filter.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/view/filters/view-sort-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/filters/view-sort-rest-api-exception.filter.ts index fd6cbb089f6..a25f122ac18 100644 --- a/packages/twenty-server/src/engine/core-modules/view/filters/view-sort-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/filters/view-sort-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { ViewSortException, ViewSortExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; import { type CustomException } from 'src/utils/custom-exception'; @Catch(ViewSortException) diff --git a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-sort.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/resolvers/view-sort.resolver.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/view/resolvers/view-sort.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/resolvers/view-sort.resolver.ts index 8f5c44d2b7d..ae7c1fec2f9 100644 --- a/packages/twenty-server/src/engine/core-modules/view/resolvers/view-sort.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/resolvers/view-sort.resolver.ts @@ -3,14 +3,14 @@ import { Args, Mutation, Query, Resolver } from '@nestjs/graphql'; import { isDefined } from 'twenty-shared/utils'; -import { CreateViewSortInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-sort.input'; -import { UpdateViewSortInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-sort.input'; -import { ViewSortDTO } from 'src/engine/core-modules/view/dtos/view-sort.dto'; -import { ViewSortService } from 'src/engine/core-modules/view/services/view-sort.service'; -import { ViewGraphqlApiExceptionFilter } from 'src/engine/core-modules/view/utils/view-graphql-api-exception.filter'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { CreateViewSortInput } from 'src/engine/metadata-modules/view-sort/dtos/inputs/create-view-sort.input'; +import { UpdateViewSortInput } from 'src/engine/metadata-modules/view-sort/dtos/inputs/update-view-sort.input'; +import { ViewSortDTO } from 'src/engine/metadata-modules/view-sort/dtos/view-sort.dto'; +import { ViewSortService } from 'src/engine/metadata-modules/view-sort/services/view-sort.service'; +import { ViewGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter'; @Resolver(() => ViewSortDTO) @UseFilters(ViewGraphqlApiExceptionFilter) diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-sort.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/services/tests/view-sort.service.spec.ts similarity index 94% rename from packages/twenty-server/src/engine/core-modules/view/services/tests/view-sort.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/services/tests/view-sort.service.spec.ts index 99a6337302b..e6b2e40b3e6 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view-sort.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/services/tests/view-sort.service.spec.ts @@ -3,17 +3,17 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { type Repository } from 'typeorm'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; import { ViewSortException, ViewSortExceptionCode, ViewSortExceptionMessageKey, generateViewSortExceptionMessage, generateViewSortUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; -import { ViewSortService } from 'src/engine/core-modules/view/services/view-sort.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; +import { ViewSortService } from 'src/engine/metadata-modules/view-sort/services/view-sort.service'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; describe('ViewSortService', () => { let viewSortService: ViewSortService; @@ -46,9 +46,9 @@ describe('ViewSortService', () => { }, }, { - provide: ViewService, + provide: WorkspaceCacheStorageService, useValue: { - flushGraphQLCache: jest.fn(), + flushGraphQLOperation: jest.fn(), }, }, ], diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-sort.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/services/view-sort.service.ts similarity index 82% rename from packages/twenty-server/src/engine/core-modules/view/services/view-sort.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view-sort/services/view-sort.service.ts index aaa019b6293..d01520b6693 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-sort.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/services/view-sort.service.ts @@ -4,22 +4,23 @@ import { InjectRepository } from '@nestjs/typeorm'; import { isDefined } from 'twenty-shared/utils'; import { IsNull, Repository } from 'typeorm'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; import { ViewSortException, ViewSortExceptionCode, ViewSortExceptionMessageKey, generateViewSortExceptionMessage, generateViewSortUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; +import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant'; +import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; @Injectable() export class ViewSortService { constructor( @InjectRepository(ViewSortEntity) private readonly viewSortRepository: Repository, - private readonly viewService: ViewService, + private readonly workspaceCacheStorageService: WorkspaceCacheStorageService, ) {} async findByWorkspaceId(workspaceId: string): Promise { @@ -109,7 +110,7 @@ export class ViewSortService { const savedViewSort = await this.viewSortRepository.save(viewSort); - await this.viewService.flushGraphQLCache(viewSortData.workspaceId); + await this.flushGraphQLCache(viewSortData.workspaceId); return savedViewSort; } @@ -136,7 +137,7 @@ export class ViewSortService { ...updateData, }); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return { ...existingViewSort, ...updatedViewSort }; } @@ -156,7 +157,7 @@ export class ViewSortService { await this.viewSortRepository.softDelete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return viewSort; } @@ -176,8 +177,15 @@ export class ViewSortService { await this.viewSortRepository.delete(id); - await this.viewService.flushGraphQLCache(workspaceId); + await this.flushGraphQLCache(workspaceId); return true; } + + private async flushGraphQLCache(workspaceId: string): Promise { + await this.workspaceCacheStorageService.flushGraphQLOperation({ + operationName: FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION, + workspaceId, + }); + } } diff --git a/packages/twenty-server/src/engine/metadata-modules/view-sort/view-sort.module.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/view-sort.module.ts new file mode 100644 index 00000000000..28ae8a9a236 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/view-sort.module.ts @@ -0,0 +1,19 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { ViewSortController } from 'src/engine/metadata-modules/view-sort/controllers/view-sort.controller'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { ViewSortResolver } from 'src/engine/metadata-modules/view-sort/resolvers/view-sort.resolver'; +import { ViewSortService } from 'src/engine/metadata-modules/view-sort/services/view-sort.service'; +import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ViewSortEntity]), + WorkspaceCacheStorageModule, + ], + controllers: [ViewSortController], + providers: [ViewSortService, ViewSortResolver], + exports: [ViewSortService], +}) +export class ViewSortModule {} diff --git a/packages/twenty-server/src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant.ts b/packages/twenty-server/src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant.ts new file mode 100644 index 00000000000..e973815c180 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant.ts @@ -0,0 +1 @@ +export const FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION = 'FindAllCoreViews'; diff --git a/packages/twenty-server/src/engine/core-modules/view/controllers/view.controller.ts b/packages/twenty-server/src/engine/metadata-modules/view/controllers/view.controller.ts similarity index 91% rename from packages/twenty-server/src/engine/core-modules/view/controllers/view.controller.ts rename to packages/twenty-server/src/engine/metadata-modules/view/controllers/view.controller.ts index 59651176d24..edaac1a1adb 100644 --- a/packages/twenty-server/src/engine/core-modules/view/controllers/view.controller.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/controllers/view.controller.ts @@ -14,24 +14,24 @@ import { import { type APP_LOCALES } from 'twenty-shared/translations'; import { isDefined } from 'twenty-shared/utils'; -import { CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input'; -import { UpdateViewInput } from 'src/engine/core-modules/view/dtos/inputs/update-view.input'; -import { type ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto'; +import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; +import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; +import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; +import { RequestLocale } from 'src/engine/decorators/locale/request-locale.decorator'; +import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; +import { resolveObjectMetadataStandardOverride } from 'src/engine/metadata-modules/object-metadata/utils/resolve-object-metadata-standard-override.util'; +import { CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input'; +import { UpdateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/update-view.input'; +import { type ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; import { generateViewExceptionMessage, generateViewUserFriendlyExceptionMessage, ViewException, ViewExceptionCode, ViewExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view.exception'; -import { ViewRestApiExceptionFilter } from 'src/engine/core-modules/view/filters/view-rest-api-exception.filter'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; -import { RequestLocale } from 'src/engine/decorators/locale/request-locale.decorator'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; -import { resolveObjectMetadataStandardOverride } from 'src/engine/metadata-modules/object-metadata/utils/resolve-object-metadata-standard-override.util'; -import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; +import { ViewRestApiExceptionFilter } from 'src/engine/metadata-modules/view/filters/view-rest-api-exception.filter'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; @Controller('rest/metadata/views') diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view.input.ts b/packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/create-view.input.ts similarity index 85% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/create-view.input.ts index 0ea5f0b38b6..d68dc56e7d7 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/create-view.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/create-view.input.ts @@ -12,11 +12,11 @@ import { 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 { ViewCalendarLayout } from 'src/engine/core-modules/view/enums/view-calendar-layout.enum'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; import { IsValidMetadataName } from 'src/engine/decorators/metadata/is-valid-metadata-name.decorator'; +import { ViewCalendarLayout } from 'src/engine/metadata-modules/view/enums/view-calendar-layout.enum'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; @InputType() export class CreateViewInput { diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/delete-view.input.ts b/packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/delete-view.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/delete-view.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/delete-view.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/destroy-view.input.ts b/packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/destroy-view.input.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/destroy-view.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/destroy-view.input.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view.input.ts b/packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/update-view.input.ts similarity index 87% rename from packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view.input.ts rename to packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/update-view.input.ts index 8a5206303fd..6c19e8c96ea 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/inputs/update-view.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/dtos/inputs/update-view.input.ts @@ -11,10 +11,10 @@ import { 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 { ViewCalendarLayout } from 'src/engine/core-modules/view/enums/view-calendar-layout.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; import { IsValidMetadataName } from 'src/engine/decorators/metadata/is-valid-metadata-name.decorator'; +import { ViewCalendarLayout } from 'src/engine/metadata-modules/view/enums/view-calendar-layout.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; // TODO: this should be refactored like for view-field.input.ts // This is a temporary fix as we were extending the CreateViewInput class which was adding default values for the non filled fields diff --git a/packages/twenty-server/src/engine/core-modules/view/dtos/view.dto.ts b/packages/twenty-server/src/engine/metadata-modules/view/dtos/view.dto.ts similarity index 74% rename from packages/twenty-server/src/engine/core-modules/view/dtos/view.dto.ts rename to packages/twenty-server/src/engine/metadata-modules/view/dtos/view.dto.ts index ea377ad22d1..bf05698a8b2 100644 --- a/packages/twenty-server/src/engine/core-modules/view/dtos/view.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/dtos/view.dto.ts @@ -4,15 +4,15 @@ import { IDField } from '@ptc-org/nestjs-query-graphql'; 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 { ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto'; -import { ViewFilterGroupDTO } from 'src/engine/core-modules/view/dtos/view-filter-group.dto'; -import { ViewFilterDTO } from 'src/engine/core-modules/view/dtos/view-filter.dto'; -import { ViewGroupDTO } from 'src/engine/core-modules/view/dtos/view-group.dto'; -import { ViewSortDTO } from 'src/engine/core-modules/view/dtos/view-sort.dto'; -import { ViewCalendarLayout } from 'src/engine/core-modules/view/enums/view-calendar-layout.enum'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { ViewFieldDTO } from 'src/engine/metadata-modules/view-field/dtos/view-field.dto'; +import { ViewFilterGroupDTO } from 'src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto'; +import { ViewFilterDTO } from 'src/engine/metadata-modules/view-filter/dtos/view-filter.dto'; +import { ViewGroupDTO } from 'src/engine/metadata-modules/view-group/dtos/view-group.dto'; +import { ViewSortDTO } from 'src/engine/metadata-modules/view-sort/dtos/view-sort.dto'; +import { ViewCalendarLayout } from 'src/engine/metadata-modules/view/enums/view-calendar-layout.enum'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; registerEnumType(ViewOpenRecordIn, { name: 'ViewOpenRecordIn' }); registerEnumType(ViewType, { name: 'ViewType' }); diff --git a/packages/twenty-server/src/engine/core-modules/view/entities/view.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts similarity index 81% rename from packages/twenty-server/src/engine/core-modules/view/entities/view.entity.ts rename to packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts index ffd74fe2e28..6f165c3ee36 100644 --- a/packages/twenty-server/src/engine/core-modules/view/entities/view.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts @@ -16,17 +16,17 @@ import { import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/interfaces/syncable-entity.interface'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { ViewCalendarLayout } from 'src/engine/core-modules/view/enums/view-calendar-layout.enum'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.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'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { ViewCalendarLayout } from 'src/engine/metadata-modules/view/enums/view-calendar-layout.enum'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; // We could refactor this type to be dynamic to view type @Entity({ name: 'view', schema: 'core' }) diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-calendar-layout.enum.ts b/packages/twenty-server/src/engine/metadata-modules/view/enums/view-calendar-layout.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/enums/view-calendar-layout.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/view/enums/view-calendar-layout.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-key.enum.ts b/packages/twenty-server/src/engine/metadata-modules/view/enums/view-key.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/enums/view-key.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/view/enums/view-key.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-open-record-in.ts b/packages/twenty-server/src/engine/metadata-modules/view/enums/view-open-record-in.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/enums/view-open-record-in.ts rename to packages/twenty-server/src/engine/metadata-modules/view/enums/view-open-record-in.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/enums/view-type.enum.ts b/packages/twenty-server/src/engine/metadata-modules/view/enums/view-type.enum.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/enums/view-type.enum.ts rename to packages/twenty-server/src/engine/metadata-modules/view/enums/view-type.enum.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/flat-view.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view/exceptions/flat-view.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/flat-view.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view/exceptions/flat-view.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/exceptions/view.exception.ts b/packages/twenty-server/src/engine/metadata-modules/view/exceptions/view.exception.ts similarity index 100% rename from packages/twenty-server/src/engine/core-modules/view/exceptions/view.exception.ts rename to packages/twenty-server/src/engine/metadata-modules/view/exceptions/view.exception.ts diff --git a/packages/twenty-server/src/engine/core-modules/view/filters/view-rest-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view/filters/view-rest-api-exception.filter.ts similarity index 95% rename from packages/twenty-server/src/engine/core-modules/view/filters/view-rest-api-exception.filter.ts rename to packages/twenty-server/src/engine/metadata-modules/view/filters/view-rest-api-exception.filter.ts index df31c490cef..756675f8ba3 100644 --- a/packages/twenty-server/src/engine/core-modules/view/filters/view-rest-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/filters/view-rest-api-exception.filter.ts @@ -10,7 +10,7 @@ import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-h import { ViewException, ViewExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view.exception'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { type CustomException } from 'src/utils/custom-exception'; @Catch(ViewException) diff --git a/packages/twenty-server/src/engine/core-modules/view/resolvers/view.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/view/resolvers/view.resolver.ts similarity index 83% rename from packages/twenty-server/src/engine/core-modules/view/resolvers/view.resolver.ts rename to packages/twenty-server/src/engine/metadata-modules/view/resolvers/view.resolver.ts index fb40c1b420d..4c7ffd33d1a 100644 --- a/packages/twenty-server/src/engine/core-modules/view/resolvers/view.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/resolvers/view.resolver.ts @@ -16,27 +16,27 @@ import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/featu import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; import { type I18nContext } from 'src/engine/core-modules/i18n/types/i18n-context.type'; -import { CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input'; -import { UpdateViewInput } from 'src/engine/core-modules/view/dtos/inputs/update-view.input'; -import { ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto'; -import { ViewFilterGroupDTO } from 'src/engine/core-modules/view/dtos/view-filter-group.dto'; -import { ViewFilterDTO } from 'src/engine/core-modules/view/dtos/view-filter.dto'; -import { ViewGroupDTO } from 'src/engine/core-modules/view/dtos/view-group.dto'; -import { ViewSortDTO } from 'src/engine/core-modules/view/dtos/view-sort.dto'; -import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto'; -import { ViewFieldService } from 'src/engine/core-modules/view/services/view-field.service'; -import { ViewFilterGroupService } from 'src/engine/core-modules/view/services/view-filter-group.service'; -import { ViewFilterService } from 'src/engine/core-modules/view/services/view-filter.service'; -import { ViewGroupService } from 'src/engine/core-modules/view/services/view-group.service'; -import { ViewSortService } from 'src/engine/core-modules/view/services/view-sort.service'; -import { ViewV2Service } from 'src/engine/core-modules/view/services/view-v2.service'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; -import { ViewGraphqlApiExceptionFilter } from 'src/engine/core-modules/view/utils/view-graphql-api-exception.filter'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { type IDataloaders } from 'src/engine/dataloaders/dataloader.interface'; import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorator'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; import { resolveObjectMetadataStandardOverride } from 'src/engine/metadata-modules/object-metadata/utils/resolve-object-metadata-standard-override.util'; +import { ViewFieldDTO } from 'src/engine/metadata-modules/view-field/dtos/view-field.dto'; +import { ViewFieldService } from 'src/engine/metadata-modules/view-field/services/view-field.service'; +import { ViewFilterGroupDTO } from 'src/engine/metadata-modules/view-filter-group/dtos/view-filter-group.dto'; +import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; +import { ViewFilterDTO } from 'src/engine/metadata-modules/view-filter/dtos/view-filter.dto'; +import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/services/view-filter.service'; +import { ViewGroupDTO } from 'src/engine/metadata-modules/view-group/dtos/view-group.dto'; +import { ViewGroupService } from 'src/engine/metadata-modules/view-group/services/view-group.service'; +import { ViewSortDTO } from 'src/engine/metadata-modules/view-sort/dtos/view-sort.dto'; +import { ViewSortService } from 'src/engine/metadata-modules/view-sort/services/view-sort.service'; +import { CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input'; +import { UpdateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/update-view.input'; +import { ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; +import { ViewV2Service } from 'src/engine/metadata-modules/view/services/view-v2.service'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; +import { ViewGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter'; @Resolver(() => ViewDTO) @UseFilters(ViewGraphqlApiExceptionFilter) diff --git a/packages/twenty-server/src/engine/core-modules/view/services/tests/view.service.spec.ts b/packages/twenty-server/src/engine/metadata-modules/view/services/tests/view.service.spec.ts similarity index 96% rename from packages/twenty-server/src/engine/core-modules/view/services/tests/view.service.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/view/services/tests/view.service.spec.ts index 3452756ebf7..6da86e8662b 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/tests/view.service.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/services/tests/view.service.spec.ts @@ -4,17 +4,17 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { type Repository } from 'typeorm'; import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; import { ViewException, ViewExceptionCode, ViewExceptionMessageKey, generateViewExceptionMessage, generateViewUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view.exception'; -import { ViewService } from 'src/engine/core-modules/view/services/view.service'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; describe('ViewService', () => { diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/view/services/view-v2.service.ts similarity index 91% rename from packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view/services/view-v2.service.ts index ae23a2e7b8d..53068d75b2c 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/services/view-v2.service.ts @@ -8,15 +8,15 @@ import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modul import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { getSubFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/get-sub-flat-entity-maps-or-throw.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input'; -import { DeleteViewInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view.input'; -import { DestroyViewInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view.input'; -import { UpdateViewInput } from 'src/engine/core-modules/view/dtos/inputs/update-view.input'; -import { ViewDTO } from 'src/engine/core-modules/view/dtos/view.dto'; -import { fromCreateViewInputToFlatViewToCreate } from 'src/engine/core-modules/view/flat-view/utils/from-create-view-input-to-flat-view-to-create.util'; -import { fromDeleteViewInputToFlatViewOrThrow } from 'src/engine/core-modules/view/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util'; -import { fromDestroyViewInputToFlatViewOrThrow } from 'src/engine/core-modules/view/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util'; -import { fromUpdateViewInputToFlatViewToUpdateOrThrow } from 'src/engine/core-modules/view/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util'; +import { fromCreateViewInputToFlatViewToCreate } from 'src/engine/metadata-modules/flat-view/utils/from-create-view-input-to-flat-view-to-create.util'; +import { fromDeleteViewInputToFlatViewOrThrow } from 'src/engine/metadata-modules/flat-view/utils/from-delete-view-input-to-flat-view-or-throw.util'; +import { fromDestroyViewInputToFlatViewOrThrow } from 'src/engine/metadata-modules/flat-view/utils/from-destroy-view-input-to-flat-view-or-throw.util'; +import { fromUpdateViewInputToFlatViewToUpdateOrThrow } from 'src/engine/metadata-modules/flat-view/utils/from-update-view-input-to-flat-view-to-update-or-throw.util'; +import { CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input'; +import { DeleteViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/delete-view.input'; +import { DestroyViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/destroy-view.input'; +import { UpdateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/update-view.input'; +import { ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service'; diff --git a/packages/twenty-server/src/engine/core-modules/view/services/view.service.ts b/packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts similarity index 91% rename from packages/twenty-server/src/engine/core-modules/view/services/view.service.ts rename to packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts index 491c6f06037..97b38fd1421 100644 --- a/packages/twenty-server/src/engine/core-modules/view/services/view.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts @@ -7,14 +7,15 @@ import { IsNull, Repository } from 'typeorm'; import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; import { generateMessageId } from 'src/engine/core-modules/i18n/utils/generateMessageId'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modules/view/constants/find-all-core-views-graphql-operation.constant'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { ViewException, ViewExceptionCode, ViewExceptionMessageKey, generateViewExceptionMessage, generateViewUserFriendlyExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view.exception'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; @Injectable() @@ -86,22 +87,6 @@ export class ViewService { return view || null; } - async findByIdWithRelatedObjectMetadata( - id: string, - workspaceId: string, - ): Promise { - const view = await this.viewRepository.findOne({ - where: { - id, - workspaceId, - deletedAt: IsNull(), - }, - relations: ['workspace', 'objectMetadata', 'viewFields'], - }); - - return view || null; - } - async create(viewData: Partial): Promise { if (!isDefined(viewData.workspaceId)) { throw new ViewException( @@ -249,7 +234,7 @@ export class ViewService { async flushGraphQLCache(workspaceId: string): Promise { await this.workspaceCacheStorageService.flushGraphQLOperation({ - operationName: 'FindAllCoreViews', + operationName: FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION, workspaceId, }); } diff --git a/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception-handler.util.ts similarity index 88% rename from packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts rename to packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception-handler.util.ts index 86b99f69851..3e1ea6abd60 100644 --- a/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception-handler.util.ts @@ -7,27 +7,27 @@ import { import { ViewFieldException, ViewFieldExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; import { ViewFilterGroupException, ViewFilterGroupExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; import { ViewFilterException, ViewFilterExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-filter.exception'; +} from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; import { ViewGroupException, ViewGroupExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; import { ViewSortException, ViewSortExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; import { ViewException, ViewExceptionCode, -} from 'src/engine/core-modules/view/exceptions/view.exception'; +} from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; import { workspaceMigrationBuilderExceptionV2Formatter } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-exception-v2-formatter'; diff --git a/packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter.ts new file mode 100644 index 00000000000..a22f15264b5 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view/utils/view-graphql-api-exception.filter.ts @@ -0,0 +1,34 @@ +import { Catch, type ExceptionFilter } from '@nestjs/common'; + +import { ViewFieldException } from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; +import { ViewFilterGroupException } from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; +import { ViewFilterException } from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; +import { ViewGroupException } from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; +import { ViewSortException } from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; +import { ViewException } from 'src/engine/metadata-modules/view/exceptions/view.exception'; +import { viewGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/view/utils/view-graphql-api-exception-handler.util'; +import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; + +@Catch( + ViewException, + ViewFieldException, + ViewFilterException, + ViewFilterGroupException, + ViewGroupException, + ViewSortException, + WorkspaceMigrationBuilderExceptionV2, +) +export class ViewGraphqlApiExceptionFilter implements ExceptionFilter { + catch( + exception: + | ViewException + | ViewFieldException + | ViewFilterException + | ViewFilterGroupException + | ViewGroupException + | ViewSortException + | WorkspaceMigrationBuilderExceptionV2, + ) { + return viewGraphqlApiExceptionHandler(exception); + } +} diff --git a/packages/twenty-server/src/engine/metadata-modules/view/view.module.ts b/packages/twenty-server/src/engine/metadata-modules/view/view.module.ts new file mode 100644 index 00000000000..cbc8e0d1925 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/view/view.module.ts @@ -0,0 +1,42 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/core-modules/common/services/workspace-many-or-all-flat-entity-maps-cache.module'; +import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; +import { I18nModule } from 'src/engine/core-modules/i18n/i18n.module'; +import { FlatViewModule } from 'src/engine/metadata-modules/flat-view/flat-view.module'; +import { ViewFieldModule } from 'src/engine/metadata-modules/view-field/view-field.module'; +import { ViewFilterGroupModule } from 'src/engine/metadata-modules/view-filter-group/view-filter-group.module'; +import { ViewFilterModule } from 'src/engine/metadata-modules/view-filter/view-filter.module'; +import { ViewGroupModule } from 'src/engine/metadata-modules/view-group/view-group.module'; +import { ViewSortModule } from 'src/engine/metadata-modules/view-sort/view-sort.module'; +import { ViewController } from 'src/engine/metadata-modules/view/controllers/view.controller'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewResolver } from 'src/engine/metadata-modules/view/resolvers/view.resolver'; +import { ViewV2Service } from 'src/engine/metadata-modules/view/services/view-v2.service'; +import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; +import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.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([ViewEntity]), + ViewFieldModule, + ViewFilterModule, + ViewFilterGroupModule, + ViewGroupModule, + ViewSortModule, + I18nModule, + FeatureFlagModule, + WorkspaceMetadataCacheModule, + WorkspaceCacheStorageModule, + WorkspaceMigrationV2Module, + FlatViewModule, + WorkspaceManyOrAllFlatEntityMapsCacheModule, + ], + controllers: [ViewController], + providers: [ViewService, ViewResolver, ViewV2Service], + exports: [ViewService, ViewV2Service, TypeOrmModule.forFeature([ViewEntity])], +}) +export class ViewModule {} diff --git a/packages/twenty-server/src/engine/workspace-flat-map-cache/workspace-flat-map-cache.module.ts b/packages/twenty-server/src/engine/workspace-flat-map-cache/workspace-flat-map-cache.module.ts index 317fdcc688d..13c6f45d829 100644 --- a/packages/twenty-server/src/engine/workspace-flat-map-cache/workspace-flat-map-cache.module.ts +++ b/packages/twenty-server/src/engine/workspace-flat-map-cache/workspace-flat-map-cache.module.ts @@ -2,16 +2,16 @@ import { Module } from '@nestjs/common'; import { DiscoveryModule } from '@nestjs/core'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { WorkspaceFlatViewFieldMapCacheService } from 'src/engine/core-modules/view/flat-view/services/workspace-flat-view-field-map-cache.service'; -import { WorkspaceFlatViewMapCacheService } from 'src/engine/core-modules/view/flat-view/services/workspace-flat-view-map-cache.service'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; 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 { WorkspaceFlatViewFieldMapCacheService } from 'src/engine/metadata-modules/flat-view-field/services/workspace-flat-view-field-map-cache.service'; +import { WorkspaceFlatViewMapCacheService } from 'src/engine/metadata-modules/flat-view/services/workspace-flat-view-map-cache.service'; 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 { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { WorkspaceMetadataCacheModule } from 'src/engine/metadata-modules/workspace-metadata-cache/workspace-metadata-cache.module'; import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspacePermissionsCacheModule } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.module'; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts index 79d73dbf09e..8e878943951 100644 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts +++ b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts @@ -3,14 +3,14 @@ import { type DataSource, type QueryRunner } from 'typeorm'; import { v4 } from 'uuid'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.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'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; import { type WorkspaceEntityManager } from 'src/engine/twenty-orm/entity-manager/workspace-entity-manager'; import { shouldSeedWorkspaceFavorite } from 'src/engine/utils/should-seed-workspace-favorite'; import { prefillWorkspaceFavorites } from 'src/engine/workspace-manager/standard-objects-prefill-data/prefill-workspace-favorites'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/metadata-entities-relation-targets.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/metadata-entities-relation-targets.type.ts index f10de44e299..6845f52a1a2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/metadata-entities-relation-targets.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/metadata-entities-relation-targets.type.ts @@ -1,5 +1,4 @@ import { type ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; import { type DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; @@ -7,6 +6,7 @@ import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-meta import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { type FieldPermissionEntity } from 'src/engine/metadata-modules/object-permission/field-permission/field-permission.entity'; import { type ObjectPermissionEntity } from 'src/engine/metadata-modules/object-permission/object-permission.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; export type MetadataEntitiesRelationTarget = | ObjectMetadataEntity diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service.ts index 18b34df2c14..33ffcf13a28 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service.ts @@ -5,8 +5,8 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; -import { compareTwoFlatViewField } from 'src/engine/core-modules/view/flat-view/utils/compare-two-flat-view-field.util'; +import { FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { compareTwoFlatViewField } from 'src/engine/metadata-modules/flat-view-field/utils/compare-two-flat-view-field.util'; import { ViewFieldRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/view-field-related-flat-entity-maps.type'; import { FlatEntityUpdateValidationArgs, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service.ts index d8ca841451b..f0404ca642b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service.ts @@ -6,8 +6,8 @@ import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; -import { compareTwoFlatView } from 'src/engine/core-modules/view/flat-view/utils/compare-two-flat-view.util'; +import { FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { compareTwoFlatView } from 'src/engine/metadata-modules/flat-view/utils/compare-two-flat-view.util'; import { FlatEntityUpdateValidationArgs, FlatEntityValidationArgs, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-action-v2.type.ts index 3055286be7c..006915c7a9c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-action-v2.type.ts @@ -1,8 +1,8 @@ import { type FromTo } from 'twenty-shared/types'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { type FlatViewPropertiesToCompare } from 'src/engine/core-modules/view/flat-view/types/flat-view-properties-to-compare.type'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type FlatViewPropertiesToCompare } from 'src/engine/metadata-modules/flat-view/types/flat-view-properties-to-compare.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; export type FlatViewPropertyUpdate

= { property: P; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-action-v2.type.ts index 2b39773293b..a17912377e5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-action-v2.type.ts @@ -1,8 +1,8 @@ import { type FromTo } from 'twenty-shared/types'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type FlatViewFieldPropertiesToCompare } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-properties-to-compare.type'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type FlatViewFieldPropertiesToCompare } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-properties-to-compare.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export type FlatViewFieldPropertyUpdate< P extends FlatViewFieldPropertiesToCompare, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service.ts index 883fddced71..f9ddb451e61 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service.ts @@ -5,10 +5,10 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; -import { ViewExceptionCode } from 'src/engine/core-modules/view/exceptions/view.exception'; -import { FlatViewFieldMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-field-maps.type'; -import { FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; -import { isViewFieldInLowestPosition } from 'src/engine/core-modules/view/flat-view/utils/is-view-field-in-lowest-position.util'; +import { FlatViewFieldMaps } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field-maps.type'; +import { FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { isViewFieldInLowestPosition } from 'src/engine/metadata-modules/flat-view-field/utils/is-view-field-in-lowest-position.util'; +import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; import { ViewFieldRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/view-field-related-flat-entity-maps.type'; import { validateLabelIdentifierFieldMetadataIdFlatViewField } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service.ts index 7428d92a19f..c272e1ee7ab 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service.ts @@ -3,9 +3,9 @@ import { Injectable } from '@nestjs/common'; import { t } from '@lingui/core/macro'; import { isDefined } from 'twenty-shared/utils'; -import { ViewExceptionCode } from 'src/engine/core-modules/view/exceptions/view.exception'; -import { FlatViewMaps } from 'src/engine/core-modules/view/flat-view/types/flat-view-maps.type'; -import { FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { FlatViewMaps } from 'src/engine/metadata-modules/flat-view/types/flat-view-maps.type'; +import { FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; +import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; import { ViewRelatedFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts index 5848512c4be..45daf21b3c4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts @@ -1,9 +1,9 @@ import { t } from '@lingui/core/macro'; import { isDefined } from 'twenty-shared/utils'; -import { ViewExceptionCode } from 'src/engine/core-modules/view/exceptions/view.exception'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; -import { isViewFieldInLowestPosition } from 'src/engine/core-modules/view/flat-view/utils/is-view-field-in-lowest-position.util'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; +import { isViewFieldInLowestPosition } from 'src/engine/metadata-modules/flat-view-field/utils/is-view-field-in-lowest-position.util'; +import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception'; import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; type ValidateLabelIdentifierFieldMetadataIdFlatViewFieldArgs = { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/create-view-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/create-view-field-action-handler.service.ts index 03279fd7d7a..5f06c05e927 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/create-view-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/create-view-field-action-handler.service.ts @@ -7,7 +7,7 @@ import { import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { CreateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-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/view-field/services/delete-view-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/delete-view-field-action-handler.service.ts index 5c1905ae511..bdfdff48d18 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/delete-view-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/delete-view-field-action-handler.service.ts @@ -7,7 +7,7 @@ import { import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { DeleteViewFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-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/view-field/services/update-view-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/update-view-field-action-handler.service.ts index b229c6368ea..1f8496e642c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/update-view-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/update-view-field-action-handler.service.ts @@ -8,7 +8,7 @@ import { import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; import { UpdateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-field-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 { fromWorkspaceMigrationUpdateActionToPartialEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-workspace-migration-update-action-to-partial-field-or-object-entity.util'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/create-view-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/create-view-action-handler.service.ts index e635b7afd3a..cf1774ee312 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/create-view-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/create-view-action-handler.service.ts @@ -7,7 +7,7 @@ import { import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/add-flat-entity-to-flat-entity-maps-or-throw.util'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { CreateViewAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-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/view/services/delete-view-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/delete-view-action-handler.service.ts index c3d314d15f5..ae6303bac4f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/delete-view-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/delete-view-action-handler.service.ts @@ -7,7 +7,7 @@ import { import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { deleteFlatEntityFromFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/delete-flat-entity-from-flat-entity-maps-or-throw.util'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { DeleteViewAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-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/view/services/update-view-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/update-view-action-handler.service.ts index 226c1e2bda1..6e08fb31a4f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/update-view-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/update-view-action-handler.service.ts @@ -8,7 +8,7 @@ import { import { AllFlatEntityMaps } from 'src/engine/core-modules/common/types/all-flat-entity-maps.type'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { replaceFlatEntityInFlatEntityMapsOrThrow } from 'src/engine/core-modules/common/utils/replace-flat-entity-in-flat-entity-maps-or-throw.util'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { UpdateViewAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-view-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 { fromWorkspaceMigrationUpdateActionToPartialEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-workspace-migration-update-action-to-partial-field-or-object-entity.util'; diff --git a/packages/twenty-server/src/modules/modules.module.ts b/packages/twenty-server/src/modules/modules.module.ts index 10bde37efea..6186e7cb146 100644 --- a/packages/twenty-server/src/modules/modules.module.ts +++ b/packages/twenty-server/src/modules/modules.module.ts @@ -5,7 +5,7 @@ import { ConnectedAccountModule } from 'src/modules/connected-account/connected- import { FavoriteFolderModule } from 'src/modules/favorite-folder/favorite-folder.module'; import { FavoriteModule } from 'src/modules/favorite/favorite.module'; import { MessagingModule } from 'src/modules/messaging/messaging.module'; -import { ViewModule } from 'src/modules/view/view.module'; +import { StandardViewModule } from 'src/modules/view/standard-view.module'; import { WorkflowModule } from 'src/modules/workflow/workflow.module'; @Module({ @@ -13,7 +13,7 @@ import { WorkflowModule } from 'src/modules/workflow/workflow.module'; MessagingModule, CalendarModule, ConnectedAccountModule, - ViewModule, + StandardViewModule, WorkflowModule, FavoriteFolderModule, FavoriteModule, diff --git a/packages/twenty-server/src/modules/view/standard-view.module.ts b/packages/twenty-server/src/modules/view/standard-view.module.ts new file mode 100644 index 00000000000..9e32ab607da --- /dev/null +++ b/packages/twenty-server/src/modules/view/standard-view.module.ts @@ -0,0 +1,30 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; + +import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; +import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.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'; +import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([ + ViewEntity, + ViewFieldEntity, + ViewFilterEntity, + ViewFilterGroupEntity, + ViewGroupEntity, + ViewSortEntity, + ]), + TypeOrmModule.forFeature([ObjectMetadataEntity]), + FeatureFlagModule, + ], + + providers: [], + exports: [], +}) +export class StandardViewModule {} diff --git a/packages/twenty-server/src/modules/view/utils/convert-view-filter-workspace-value-to-core-value.ts b/packages/twenty-server/src/modules/view/utils/convert-view-filter-workspace-value-to-core-value.ts index 17bd33bac2e..44900e63e9a 100644 --- a/packages/twenty-server/src/modules/view/utils/convert-view-filter-workspace-value-to-core-value.ts +++ b/packages/twenty-server/src/modules/view/utils/convert-view-filter-workspace-value-to-core-value.ts @@ -1,4 +1,4 @@ -import { type ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type'; +import { type ViewFilterValue } from 'src/engine/metadata-modules/view-filter/types/view-filter-value.type'; export const convertViewFilterWorkspaceValueToCoreValue = ( value: string, diff --git a/packages/twenty-server/src/modules/view/view.module.ts b/packages/twenty-server/src/modules/view/view.module.ts deleted file mode 100644 index cad520d00cd..00000000000 --- a/packages/twenty-server/src/modules/view/view.module.ts +++ /dev/null @@ -1,30 +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 { ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; - -@Module({ - imports: [ - TypeOrmModule.forFeature([ - ViewEntity, - ViewFieldEntity, - ViewFilterEntity, - ViewFilterGroupEntity, - ViewGroupEntity, - ViewSortEntity, - ]), - TypeOrmModule.forFeature([ObjectMetadataEntity]), - FeatureFlagModule, - ], - - providers: [], - exports: [], -}) -export class ViewModule {} diff --git a/packages/twenty-server/test/integration/graphql/suites/view/create-view.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/create-view.integration-spec.ts index 4adb0dbb158..4f058446287 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/create-view.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/create-view.integration-spec.ts @@ -1,3 +1,4 @@ +import { createViewOperationFactory } from 'test/integration/graphql/utils/create-view-operation-factory.util'; import { assertGraphQLSuccessfulResponse } from 'test/integration/graphql/utils/graphql-test-assertions.util'; import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util'; import { createOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/create-one-object-metadata.util'; @@ -7,10 +8,9 @@ import { assertViewStructure, cleanupViewRecords, } from 'test/integration/utils/view-test.util'; -import { createViewOperationFactory } from 'test/integration/graphql/utils/create-view-operation-factory.util'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; describe('Create core view', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/update-view.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/update-view.integration-spec.ts index 33fbbeb9562..51a19178140 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/update-view.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/update-view.integration-spec.ts @@ -4,15 +4,15 @@ import { assertGraphQLSuccessfulResponse, } from 'test/integration/graphql/utils/graphql-test-assertions.util'; import { makeGraphqlAPIRequest } from 'test/integration/graphql/utils/make-graphql-api-request.util'; +import { updateViewOperationFactory } from 'test/integration/graphql/utils/update-view-operation-factory.util'; +import { updateViewData } from 'test/integration/graphql/utils/view-data-factory.util'; import { createOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/create-one-object-metadata.util'; import { deleteOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util'; import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util'; -import { cleanupViewRecords } from 'test/integration/utils/view-test.util'; -import { updateViewOperationFactory } from 'test/integration/graphql/utils/update-view-operation-factory.util'; -import { updateViewData } from 'test/integration/graphql/utils/view-data-factory.util'; import { createOneCoreView } from 'test/integration/metadata/suites/view/utils/create-one-core-view.util'; +import { cleanupViewRecords } from 'test/integration/utils/view-test.util'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; describe('Update core view', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-create-view-field-v2.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-create-view-field-v2.integration-spec.ts index 37dceb8a75c..297b13c9ebe 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-create-view-field-v2.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-create-view-field-v2.integration-spec.ts @@ -1,4 +1,9 @@ import { faker } from '@faker-js/faker'; +import { + cleanupViewFieldTestV2, + setupViewFieldTestV2, + type ViewFieldTestSetup, +} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; import { createOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/create-one-core-view-field.util'; import { deleteOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util'; import { destroyOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util'; @@ -8,13 +13,8 @@ import { eachTestingContextFilter, type EachTestingContext, } from 'twenty-shared/testing'; -import { - type ViewFieldTestSetup, - cleanupViewFieldTestV2, - setupViewFieldTestV2, -} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; -import { type CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; +import { type CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; describe('View Field Resolver - Failing Create Operation - v2', () => { let testSetup: ViewFieldTestSetup; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-delete-view-field-v2.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-delete-view-field-v2.integration-spec.ts index 443a5d538df..763c2d49050 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-delete-view-field-v2.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-delete-view-field-v2.integration-spec.ts @@ -1,17 +1,17 @@ import { TEST_NOT_EXISTING_VIEW_FIELD_ID } from 'test/integration/constants/test-view-ids.constants'; +import { + cleanupViewFieldTestV2, + setupViewFieldTestV2, + type ViewFieldTestSetup, +} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; import { deleteOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util'; import { extractRecordIdsAndDatesAsExpectAny } from 'test/utils/extract-record-ids-and-dates-as-expect-any'; import { eachTestingContextFilter, type EachTestingContext, } from 'twenty-shared/testing'; -import { - type ViewFieldTestSetup, - cleanupViewFieldTestV2, - setupViewFieldTestV2, -} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; -import { type DeleteViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view-field.input'; +import { type DeleteViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input'; describe('View Field Resolver - Failing Delete Operation - v2', () => { let testSetup: ViewFieldTestSetup; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-destroy-view-field-v2.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-destroy-view-field-v2.integration-spec.ts index 645ce18ecb8..67e1f0fcae6 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-destroy-view-field-v2.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-destroy-view-field-v2.integration-spec.ts @@ -1,17 +1,17 @@ import { TEST_NOT_EXISTING_VIEW_FIELD_ID } from 'test/integration/constants/test-view-ids.constants'; +import { + cleanupViewFieldTestV2, + setupViewFieldTestV2, + type ViewFieldTestSetup, +} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; import { destroyOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util'; import { extractRecordIdsAndDatesAsExpectAny } from 'test/utils/extract-record-ids-and-dates-as-expect-any'; import { eachTestingContextFilter, type EachTestingContext, } from 'twenty-shared/testing'; -import { - type ViewFieldTestSetup, - cleanupViewFieldTestV2, - setupViewFieldTestV2, -} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; -import { type DestroyViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view-field.input'; +import { type DestroyViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input'; describe('View Field Resolver - Failing Destroy Operation - v2', () => { let testSetup: ViewFieldTestSetup; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-update-view-field-v2.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-update-view-field-v2.integration-spec.ts index 065018d1949..3ae9325f7fe 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-update-view-field-v2.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/failing-update-view-field-v2.integration-spec.ts @@ -1,17 +1,17 @@ import { TEST_NOT_EXISTING_VIEW_FIELD_ID } from 'test/integration/constants/test-view-ids.constants'; +import { + cleanupViewFieldTestV2, + setupViewFieldTestV2, + type ViewFieldTestSetup, +} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; import { updateOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/update-one-core-view-field.util'; import { extractRecordIdsAndDatesAsExpectAny } from 'test/utils/extract-record-ids-and-dates-as-expect-any'; import { eachTestingContextFilter, type EachTestingContext, } from 'twenty-shared/testing'; -import { - type ViewFieldTestSetup, - cleanupViewFieldTestV2, - setupViewFieldTestV2, -} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; -import { type UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; +import { type UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; describe('View Field Resolver - Failing Update Operation - v2', () => { let testSetup: ViewFieldTestSetup; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/object-identifier-update-side-effect-on-view-field.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/object-identifier-update-side-effect-on-view-field.integration-spec.ts index e20e85d5b86..23b0c4a8ec4 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/object-identifier-update-side-effect-on-view-field.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/object-identifier-update-side-effect-on-view-field.integration-spec.ts @@ -13,7 +13,7 @@ import { findCoreViewFields } from 'test/integration/metadata/suites/view-field/ import { updateOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/update-one-core-view-field.util'; import { FieldMetadataType } from 'twenty-shared/types'; -import { type FlatViewField } from 'src/engine/core-modules/view/flat-view/types/flat-view-field.type'; +import { type FlatViewField } from 'src/engine/metadata-modules/flat-view-field/types/flat-view-field.type'; describe('View Field Resolver - Successful object metadata identifier update side effect on view field', () => { let testSetup: ViewFieldTestSetup & { diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/successful-create-view-field-v2.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/successful-create-view-field-v2.integration-spec.ts index 0ea6b6325fc..71cbadcd04a 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/successful-create-view-field-v2.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/successful-create-view-field-v2.integration-spec.ts @@ -1,3 +1,8 @@ +import { + type ViewFieldTestSetup, + cleanupViewFieldTestV2, + setupViewFieldTestV2, +} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; import { createOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/create-one-core-view-field.util'; import { deleteOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util'; import { destroyOneCoreViewField } from 'test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util'; @@ -7,14 +12,9 @@ import { eachTestingContextFilter, } from 'twenty-shared/testing'; import { isDefined } from 'twenty-shared/utils'; -import { - type ViewFieldTestSetup, - cleanupViewFieldTestV2, - setupViewFieldTestV2, -} from 'test/integration/graphql/suites/view/utils/setup-view-field-test-v2.util'; -import { type CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; -import { type ViewFieldDTO } from 'src/engine/core-modules/view/dtos/view-field.dto'; +import { type CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; +import { type ViewFieldDTO } from 'src/engine/metadata-modules/view-field/dtos/view-field.dto'; type TestContext = { viewFieldInput: (testSetup: ViewFieldTestSetup) => CreateViewFieldInput; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-field/view-field-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-field/view-field-resolver.integration-spec.ts index 57fb148fc6c..28db7c3a455 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-field/view-field-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-field/view-field-resolver.integration-spec.ts @@ -27,11 +27,11 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { type CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; +import { type CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; import { generateViewFieldExceptionMessage, ViewFieldExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; describe('View Field Resolver', () => { let testViewId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-filter-group-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-filter-group-resolver.integration-spec.ts index 53bf06bdb6a..c1875b8ab89 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-filter-group-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-filter-group-resolver.integration-spec.ts @@ -24,11 +24,11 @@ import { } from 'test/integration/utils/view-test.util'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; import { generateViewFilterGroupExceptionMessage, ViewFilterGroupExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; describe('View Filter Group Resolver', () => { let testViewId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts index 8d7342e823c..e5df161eaab 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-filter-resolver.integration-spec.ts @@ -23,9 +23,9 @@ import { FieldMetadataType, ViewFilterOperand } from 'twenty-shared/types'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; import { - ViewFilterExceptionMessageKey, generateViewFilterExceptionMessage, -} from 'src/engine/core-modules/view/exceptions/view-filter.exception'; + ViewFilterExceptionMessageKey, +} from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; describe('View Filter Resolver', () => { let testViewId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-group-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-group-resolver.integration-spec.ts index bb6f3e7865e..38c21179e1a 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-group-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-group-resolver.integration-spec.ts @@ -28,7 +28,7 @@ import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors. import { generateViewGroupExceptionMessage, ViewGroupExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; describe('View Group Resolver', () => { let testViewId: string; diff --git a/packages/twenty-server/test/integration/graphql/suites/view/view-sort-resolver.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/view/view-sort-resolver.integration-spec.ts index 695f9002da5..89a4ee59c50 100644 --- a/packages/twenty-server/test/integration/graphql/suites/view/view-sort-resolver.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/view/view-sort-resolver.integration-spec.ts @@ -25,11 +25,11 @@ import { import { FieldMetadataType } from 'twenty-shared/types'; import { ErrorCode } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; import { generateViewSortExceptionMessage, ViewSortExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; describe('View Sort Resolver', () => { let testViewId: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-view-filter-group-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-view-filter-group-operation-factory.util.ts index d3cb75584ea..e087e89930e 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-view-filter-group-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-view-filter-group-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { VIEW_FILTER_GROUP_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; -import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; +import { type ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; type CreateViewFilterGroupOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-view-filter-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-view-filter-operation-factory.util.ts index 22c6e427182..d76db26f401 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-view-filter-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-view-filter-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { VIEW_FILTER_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; -import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; +import { type ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; type CreateViewFilterOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-view-group-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-view-group-operation-factory.util.ts index e849e4895cc..e2eed615376 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-view-group-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-view-group-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { VIEW_GROUP_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; -import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; +import { type ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; type CreateViewGroupOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-view-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-view-operation-factory.util.ts index 16576f722fd..73806d0dda4 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-view-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-view-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { VIEW_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; type CreateViewOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/create-view-sort-operation-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/create-view-sort-operation-factory.util.ts index c4efb2801ab..2ac1bbd5641 100644 --- a/packages/twenty-server/test/integration/graphql/utils/create-view-sort-operation-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/create-view-sort-operation-factory.util.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { VIEW_SORT_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; -import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; +import { type ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; type CreateViewSortOperationFactoryParams = { gqlFields?: string; diff --git a/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts b/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts index c66ad91e45e..c1760a7400a 100644 --- a/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/view-data-factory.util.ts @@ -1,16 +1,16 @@ import { ViewFilterOperand } from 'twenty-shared/types'; -import { type UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { type UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { type ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; +import { type ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { type ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { type ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; export const createViewData = (overrides: Partial = {}) => ({ name: 'Test View', diff --git a/packages/twenty-server/test/integration/graphql/utils/view-graphql.util.ts b/packages/twenty-server/test/integration/graphql/utils/view-graphql.util.ts index 82ccad10414..5eb4c5ac400 100644 --- a/packages/twenty-server/test/integration/graphql/utils/view-graphql.util.ts +++ b/packages/twenty-server/test/integration/graphql/utils/view-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 ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { createViewOperationFactory } from './create-view-operation-factory.util'; import { createViewData } from './view-data-factory.util'; diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/delete-one-field-metadata.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/delete-one-field-metadata.integration-spec.ts index 6153bb8d142..7ece0cc02e8 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/delete-one-field-metadata.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/delete-one-field-metadata.integration-spec.ts @@ -4,6 +4,7 @@ import { updateOneFieldMetadata } from 'test/integration/metadata/suites/field-m import { createOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/create-one-object-metadata.util'; import { deleteOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/delete-one-object-metadata.util'; import { updateOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/update-one-object-metadata.util'; +import { updateFeatureFlag } from 'test/integration/metadata/suites/utils/update-feature-flag.util'; import { createTestViewWithRestApi, findViewByIdWithRestApi, @@ -11,11 +12,10 @@ import { import { generateRecordName } from 'test/integration/utils/generate-record-name'; import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { updateFeatureFlag } from 'test/integration/metadata/suites/utils/update-feature-flag.util'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; describe('deleteOne', () => { beforeAll(async () => { diff --git a/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts index 4c51314f807..527168dc6c7 100644 --- a/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/field-metadata/update-one-field-metadata-related-record.integration-spec.ts @@ -20,12 +20,12 @@ import { import { isDefined } from 'twenty-shared/utils'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; -import { type ViewFilterValue } from 'src/engine/core-modules/view/types/view-filter-value.type'; import { type FieldMetadataComplexOption, type FieldMetadataDefaultOption, } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; +import { type ViewFilterValue } from 'src/engine/metadata-modules/view-filter/types/view-filter-value.type'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; type Option = FieldMetadataDefaultOption | FieldMetadataComplexOption; diff --git a/packages/twenty-server/test/integration/metadata/suites/object-metadata/view-side-effect-on-object-metadata-creation.integration-spec.ts b/packages/twenty-server/test/integration/metadata/suites/object-metadata/view-side-effect-on-object-metadata-creation.integration-spec.ts index a6338c5c561..e43a4d5da61 100644 --- a/packages/twenty-server/test/integration/metadata/suites/object-metadata/view-side-effect-on-object-metadata-creation.integration-spec.ts +++ b/packages/twenty-server/test/integration/metadata/suites/object-metadata/view-side-effect-on-object-metadata-creation.integration-spec.ts @@ -7,7 +7,7 @@ import { findCoreViewFields } from 'test/integration/metadata/suites/view-field/ import { findCoreViews } from 'test/integration/metadata/suites/view/utils/find-core-views.util'; import { isDefined } from 'twenty-shared/utils'; -import { type FlatView } from 'src/engine/core-modules/view/flat-view/types/flat-view.type'; +import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; describe('View side effect on object creation', () => { let createdObjectMetadataId: string | undefined = undefined; diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-core-view-field-query-factory.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-core-view-field-query-factory.util.ts index 7b759d0e114..650a9ccaaff 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-core-view-field-query-factory.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-core-view-field-query-factory.util.ts @@ -1,8 +1,8 @@ import gql from 'graphql-tag'; -import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; import { VIEW_FIELD_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; +import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; -import { type CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; +import { type CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; export const createCoreViewFieldQueryFactory = ({ gqlFields = VIEW_FIELD_GQL_FIELDS, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-one-core-view-field.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-one-core-view-field.util.ts index ec880eed40f..e363bffa1ca 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-one-core-view-field.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/create-one-core-view-field.util.ts @@ -5,8 +5,8 @@ import { type PerformMetadataQueryParams } from 'test/integration/metadata/types import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type CreateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/create-view-field.input'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { type CreateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/create-view-field.input'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export const createOneCoreViewField = async ({ input, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-core-view-field-query-factory.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-core-view-field-query-factory.util.ts index b156a64a5d3..c50b32f8490 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-core-view-field-query-factory.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-core-view-field-query-factory.util.ts @@ -1,8 +1,8 @@ import gql from 'graphql-tag'; -import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; import { VIEW_FIELD_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; +import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; -import { type DeleteViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view-field.input'; +import { type DeleteViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input'; export const deleteCoreViewFieldQueryFactory = ({ gqlFields = VIEW_FIELD_GQL_FIELDS, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util.ts index 8c5d30589c6..05f758dc918 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/delete-one-core-view-field.util.ts @@ -5,8 +5,8 @@ import { type PerformMetadataQueryParams } from 'test/integration/metadata/types import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type DeleteViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/delete-view-field.input'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { type DeleteViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/delete-view-field.input'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export const deleteOneCoreViewField = async ({ input, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-core-view-field-query-factory.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-core-view-field-query-factory.util.ts index ac9a5fb7159..dbcbd742d64 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-core-view-field-query-factory.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-core-view-field-query-factory.util.ts @@ -1,8 +1,8 @@ import gql from 'graphql-tag'; -import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; import { VIEW_FIELD_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; +import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; -import { type DestroyViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view-field.input'; +import { type DestroyViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input'; export const destroyCoreViewFieldQueryFactory = ({ gqlFields = VIEW_FIELD_GQL_FIELDS, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util.ts index 894a40b304f..6b2d7b4ea55 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/destroy-one-core-view-field.util.ts @@ -5,8 +5,8 @@ import { type PerformMetadataQueryParams } from 'test/integration/metadata/types import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type DestroyViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/destroy-view-field.input'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { type DestroyViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/destroy-view-field.input'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export const destroyOneCoreViewField = async ({ input, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/find-core-view-fields.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/find-core-view-fields.util.ts index cac3d1088b9..6ec529762b6 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/find-core-view-fields.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/find-core-view-fields.util.ts @@ -4,7 +4,7 @@ import { type CommonResponseBody } from 'test/integration/metadata/types/common- import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export const findCoreViewFields = async ({ viewId, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-core-view-field-query-factory.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-core-view-field-query-factory.util.ts index d967e0205c6..b7e4164c66b 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-core-view-field-query-factory.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-core-view-field-query-factory.util.ts @@ -1,8 +1,8 @@ import gql from 'graphql-tag'; -import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; import { VIEW_FIELD_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; +import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; -import { type UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; +import { type UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; export const updateCoreViewFieldQueryFactory = ({ gqlFields = VIEW_FIELD_GQL_FIELDS, diff --git a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-one-core-view-field.util.ts b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-one-core-view-field.util.ts index 0883ba3be73..d448348a370 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-one-core-view-field.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view-field/utils/update-one-core-view-field.util.ts @@ -5,8 +5,8 @@ import { type PerformMetadataQueryParams } from 'test/integration/metadata/types import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type UpdateViewFieldInput } from 'src/engine/core-modules/view/dtos/inputs/update-view-field.input'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; +import { type UpdateViewFieldInput } from 'src/engine/metadata-modules/view-field/dtos/inputs/update-view-field.input'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; export const updateOneCoreViewField = async ({ input, diff --git a/packages/twenty-server/test/integration/metadata/suites/view/utils/create-core-view-query-factory.util.ts b/packages/twenty-server/test/integration/metadata/suites/view/utils/create-core-view-query-factory.util.ts index 2d258d530e3..0d70315a345 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view/utils/create-core-view-query-factory.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view/utils/create-core-view-query-factory.util.ts @@ -2,7 +2,7 @@ import gql from 'graphql-tag'; import { VIEW_GQL_FIELDS } from 'test/integration/constants/view-gql-fields.constants'; import { type PerformMetadataQueryParams } from 'test/integration/metadata/types/perform-metadata-query.type'; -import { type CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input'; +import { type CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input'; export const createCoreViewQueryFactory = ({ gqlFields = VIEW_GQL_FIELDS, diff --git a/packages/twenty-server/test/integration/metadata/suites/view/utils/create-one-core-view.util.ts b/packages/twenty-server/test/integration/metadata/suites/view/utils/create-one-core-view.util.ts index 42a89ebbe5e..26a7664bc28 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view/utils/create-one-core-view.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view/utils/create-one-core-view.util.ts @@ -4,8 +4,8 @@ import { type PerformMetadataQueryParams } from 'test/integration/metadata/types import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type CreateViewInput } from 'src/engine/core-modules/view/dtos/inputs/create-view.input'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { type CreateViewInput } from 'src/engine/metadata-modules/view/dtos/inputs/create-view.input'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { createCoreViewQueryFactory } from './create-core-view-query-factory.util'; diff --git a/packages/twenty-server/test/integration/metadata/suites/view/utils/find-core-views.util.ts b/packages/twenty-server/test/integration/metadata/suites/view/utils/find-core-views.util.ts index a0df11d4bcf..8c357c5d590 100644 --- a/packages/twenty-server/test/integration/metadata/suites/view/utils/find-core-views.util.ts +++ b/packages/twenty-server/test/integration/metadata/suites/view/utils/find-core-views.util.ts @@ -4,7 +4,7 @@ import { type CommonResponseBody } from 'test/integration/metadata/types/common- import { warnIfErrorButNotExpectedToFail } from 'test/integration/metadata/utils/warn-if-error-but-not-expected-to-fail.util'; import { warnIfNoErrorButExpectedToFail } from 'test/integration/metadata/utils/warn-if-no-error-but-expected-to-fail.util'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; export const findCoreViews = async ({ objectMetadataId, diff --git a/packages/twenty-server/test/integration/rest/suites/view-field.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/view-field.integration-spec.ts index 3f5a4d0bd60..4663c3f73df 100644 --- a/packages/twenty-server/test/integration/rest/suites/view-field.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/view-field.integration-spec.ts @@ -26,7 +26,7 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { generateViewFieldExceptionMessage, ViewFieldExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-field.exception'; +} from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; describe('View Field REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/suites/view-filter-group.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/view-filter-group.integration-spec.ts index 8d9c1574f1b..3de41fad0a5 100644 --- a/packages/twenty-server/test/integration/rest/suites/view-filter-group.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/view-filter-group.integration-spec.ts @@ -22,11 +22,11 @@ import { cleanupViewRecords, } from 'test/integration/utils/view-test.util'; -import { ViewFilterGroupLogicalOperator } from 'src/engine/core-modules/view/enums/view-filter-group-logical-operator'; +import { ViewFilterGroupLogicalOperator } from 'src/engine/metadata-modules/view-filter-group/enums/view-filter-group-logical-operator'; import { generateViewFilterGroupExceptionMessage, ViewFilterGroupExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-filter-group.exception'; +} from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; describe('View Filter Group REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/suites/view-group.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/view-group.integration-spec.ts index d630342d9d5..b04f4e24b74 100644 --- a/packages/twenty-server/test/integration/rest/suites/view-group.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/view-group.integration-spec.ts @@ -24,11 +24,11 @@ import { } from 'test/integration/utils/view-test.util'; import { FieldMetadataType } from 'twenty-shared/types'; -import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; +import { type ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; import { generateViewGroupExceptionMessage, ViewGroupExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-group.exception'; +} from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; describe('View Group REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/suites/view-sort.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/view-sort.integration-spec.ts index 0597ddd80c2..d02bf9e4755 100644 --- a/packages/twenty-server/test/integration/rest/suites/view-sort.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/view-sort.integration-spec.ts @@ -23,11 +23,11 @@ import { } from 'test/integration/utils/view-test.util'; import { FieldMetadataType } from 'twenty-shared/types'; -import { ViewSortDirection } from 'src/engine/core-modules/view/enums/view-sort-direction'; +import { ViewSortDirection } from 'src/engine/metadata-modules/view-sort/enums/view-sort-direction'; import { generateViewSortExceptionMessage, ViewSortExceptionMessageKey, -} from 'src/engine/core-modules/view/exceptions/view-sort.exception'; +} from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; describe('View Sort REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/suites/view.integration-spec.ts b/packages/twenty-server/test/integration/rest/suites/view.integration-spec.ts index 9d872ccb95d..e3ad554769e 100644 --- a/packages/twenty-server/test/integration/rest/suites/view.integration-spec.ts +++ b/packages/twenty-server/test/integration/rest/suites/view.integration-spec.ts @@ -17,9 +17,9 @@ import { cleanupViewRecords, } from 'test/integration/utils/view-test.util'; -import { ViewKey } from 'src/engine/core-modules/view/enums/view-key.enum'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { ViewKey } from 'src/engine/metadata-modules/view/enums/view-key.enum'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; describe('View REST API', () => { let testObjectMetadataId: string; diff --git a/packages/twenty-server/test/integration/rest/utils/view-rest-api.util.ts b/packages/twenty-server/test/integration/rest/utils/view-rest-api.util.ts index 6e465a6473c..fda87f50f89 100644 --- a/packages/twenty-server/test/integration/rest/utils/view-rest-api.util.ts +++ b/packages/twenty-server/test/integration/rest/utils/view-rest-api.util.ts @@ -6,14 +6,14 @@ import { import { makeRestAPIRequest } from 'test/integration/rest/utils/make-rest-api-request.util'; import { generateRecordName } from 'test/integration/utils/generate-record-name'; -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; -import { ViewOpenRecordIn } from 'src/engine/core-modules/view/enums/view-open-record-in'; -import { ViewType } from 'src/engine/core-modules/view/enums/view-type.enum'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { type ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { type ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { type ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { type ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { ViewOpenRecordIn } from 'src/engine/metadata-modules/view/enums/view-open-record-in'; +import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; export const findViewByIdWithRestApi = async ( viewId: string, diff --git a/packages/twenty-server/test/integration/utils/view-test.util.ts b/packages/twenty-server/test/integration/utils/view-test.util.ts index 7b96cfb78fc..b6d7b7a7568 100644 --- a/packages/twenty-server/test/integration/utils/view-test.util.ts +++ b/packages/twenty-server/test/integration/utils/view-test.util.ts @@ -1,9 +1,9 @@ -import { type ViewFieldEntity } from 'src/engine/core-modules/view/entities/view-field.entity'; -import { type ViewFilterGroupEntity } from 'src/engine/core-modules/view/entities/view-filter-group.entity'; -import { type ViewFilterEntity } from 'src/engine/core-modules/view/entities/view-filter.entity'; -import { type ViewGroupEntity } from 'src/engine/core-modules/view/entities/view-group.entity'; -import { type ViewSortEntity } from 'src/engine/core-modules/view/entities/view-sort.entity'; -import { type ViewEntity } from 'src/engine/core-modules/view/entities/view.entity'; +import { type ViewFieldEntity } from 'src/engine/metadata-modules/view-field/entities/view-field.entity'; +import { type ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; +import { type ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; +import { type ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; +import { type ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/view-sort.entity'; +import { type ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { ViewFilterGroupLogicalOperator } from 'src/modules/view/standard-objects/view-filter-group.workspace-entity'; export const cleanupViewRecords = async (): Promise => {