diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts index 83f7fc2e7b5..95e42c58250 100644 --- a/packages/twenty-front/src/generated-metadata/graphql.ts +++ b/packages/twenty-front/src/generated-metadata/graphql.ts @@ -1345,8 +1345,7 @@ export enum FeatureFlagKey { IS_RECORD_PAGE_LAYOUT_ENABLED = 'IS_RECORD_PAGE_LAYOUT_ENABLED', IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED = 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED', IS_TIMELINE_ACTIVITY_MIGRATED = 'IS_TIMELINE_ACTIVITY_MIGRATED', - IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED', - IS_WORKSPACE_CREATION_V2_ENABLED = 'IS_WORKSPACE_CREATION_V2_ENABLED' + IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED' } export type Field = { diff --git a/packages/twenty-front/src/generated/graphql.ts b/packages/twenty-front/src/generated/graphql.ts index b631bc9e216..64ac7b0efcc 100644 --- a/packages/twenty-front/src/generated/graphql.ts +++ b/packages/twenty-front/src/generated/graphql.ts @@ -1328,8 +1328,7 @@ export enum FeatureFlagKey { IS_RECORD_PAGE_LAYOUT_ENABLED = 'IS_RECORD_PAGE_LAYOUT_ENABLED', IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED = 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED', IS_TIMELINE_ACTIVITY_MIGRATED = 'IS_TIMELINE_ACTIVITY_MIGRATED', - IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED', - IS_WORKSPACE_CREATION_V2_ENABLED = 'IS_WORKSPACE_CREATION_V2_ENABLED' + IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED' } export type Field = { diff --git a/packages/twenty-front/src/modules/people/types/Person.ts b/packages/twenty-front/src/modules/people/types/Person.ts index 9d9cee051f9..a53c95d799d 100644 --- a/packages/twenty-front/src/modules/people/types/Person.ts +++ b/packages/twenty-front/src/modules/people/types/Person.ts @@ -23,6 +23,7 @@ export type Person = { }; city: string; email: string; + /** @deprecated */ phone: string; companyId?: string; position?: number; diff --git a/packages/twenty-server/src/command/command.module.ts b/packages/twenty-server/src/command/command.module.ts index acb3c2084d7..7c2208f167b 100644 --- a/packages/twenty-server/src/command/command.module.ts +++ b/packages/twenty-server/src/command/command.module.ts @@ -5,17 +5,13 @@ import { DatabaseCommandModule } from 'src/database/commands/database-command.mo import { FieldMetadataModule } from 'src/engine/metadata-modules/field-metadata/field-metadata.module'; import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module'; import { WorkspaceCleanerModule } from 'src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module'; -import { WorkspaceMigrationRunnerCommandsModule } from 'src/engine/workspace-manager/workspace-migration-runner/commands/workspace-migration-runner-commands.module'; -import { WorkspaceSyncMetadataCommandsModule } from 'src/engine/workspace-manager/workspace-sync-metadata/commands/workspace-sync-metadata-commands.module'; import { MessagingMessageCleanerModule } from 'src/modules/messaging/message-cleaner/messaging-message-cleaner.module'; @Module({ imports: [ AppModule, - WorkspaceSyncMetadataCommandsModule, DatabaseCommandModule, MessagingMessageCleanerModule, - WorkspaceMigrationRunnerCommandsModule, ObjectMetadataModule, FieldMetadataModule, WorkspaceCleanerModule, diff --git a/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts b/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts index 50b4f562cb4..284341069c8 100644 --- a/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts +++ b/packages/twenty-server/src/database/commands/compute-twenty-standard-workspace-migration.command.ts @@ -8,8 +8,8 @@ import { WorkspaceMigrationV2ExceptionCode } from 'twenty-shared/metadata'; import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; import { AdditionalCacheDataMaps } from 'src/engine/workspace-cache/types/workspace-cache-key.type'; import { computeTwentyStandardApplicationAllFlatEntityMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant'; -import { WorkspaceMigrationBuildOrchestratorService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service'; import { WorkspaceMigrationV2Exception } from 'src/engine/workspace-manager/workspace-migration.exception'; +import { WorkspaceMigrationBuildOrchestratorService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-build-orchestrator.service'; @Command({ name: 'workspace:compute-twenty-standard-migration', diff --git a/packages/twenty-server/src/database/commands/database-command.module.ts b/packages/twenty-server/src/database/commands/database-command.module.ts index 59366c5e441..f8e9ff79bff 100644 --- a/packages/twenty-server/src/database/commands/database-command.module.ts +++ b/packages/twenty-server/src/database/commands/database-command.module.ts @@ -24,7 +24,7 @@ import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/ import { DevSeederModule } from 'src/engine/workspace-manager/dev-seeder/dev-seeder.module'; import { WorkspaceCleanerModule } from 'src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module'; import { WorkspaceManagerModule } from 'src/engine/workspace-manager/workspace-manager.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { CalendarEventImportManagerModule } from 'src/modules/calendar/calendar-event-import-manager/calendar-event-import-manager.module'; import { MessagingImportManagerModule } from 'src/modules/messaging/message-import-manager/messaging-import-manager.module'; import { WorkflowRunQueueModule } from 'src/modules/workflow/workflow-runner/workflow-run-queue/workflow-run-queue.module'; @@ -54,7 +54,7 @@ import { AutomatedTriggerModule } from 'src/modules/workflow/workflow-trigger/au CronTriggerModule, DatabaseEventTriggerModule, WorkspaceCleanerModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, TrashCleanupModule, PublicDomainModule, ], diff --git a/packages/twenty-server/src/database/commands/list-and-delete-orphaned-workspace-entities.command.ts b/packages/twenty-server/src/database/commands/list-and-delete-orphaned-workspace-entities.command.ts index a57f4f60bd7..cb7bd008d41 100644 --- a/packages/twenty-server/src/database/commands/list-and-delete-orphaned-workspace-entities.command.ts +++ b/packages/twenty-server/src/database/commands/list-and-delete-orphaned-workspace-entities.command.ts @@ -51,7 +51,6 @@ import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entiti 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'; -import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; type DeletionResult = { entityName: string; @@ -113,7 +112,6 @@ const WORKSPACE_RELATED_ENTITIES: EntityTarget[] = [ PostgresCredentialsEntity, PublicDomainEntity, WebhookEntity, - WorkspaceMigrationEntity, WorkspaceSSOIdentityProviderEntity, ]; diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-standard-invalid-entities.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-standard-invalid-entities.command.ts index 8c35e60c2bf..6a7274bb19d 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-standard-invalid-entities.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-standard-invalid-entities.command.ts @@ -30,7 +30,7 @@ import { MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS, MESSAGE_STANDARD_FIELD_IDS, WORKSPACE_MEMBER_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; +} from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids'; const findStandardFlatObjectMetadataOrThrow = ({ flatObjectMetadataMaps, diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-timeline-activity-to-morph-relations.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-timeline-activity-to-morph-relations.command.ts index df579e6e31f..2a35c411c58 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-timeline-activity-to-morph-relations.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-13/1-13-migrate-timeline-activity-to-morph-relations.command.ts @@ -17,7 +17,7 @@ import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspac import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; -import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; +import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids'; import { buildTimelineActivityRelatedMorphFieldMetadataName } from 'src/modules/timeline/utils/timeline-activity-related-morph-field-metadata-name-builder.util'; @Command({ diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-14/1-14-update-created-by-enum.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-14/1-14-update-created-by-enum.command.ts index be2b0ed0200..7d15346f311 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-14/1-14-update-created-by-enum.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-14/1-14-update-created-by-enum.command.ts @@ -2,19 +2,19 @@ import { Logger } from '@nestjs/common'; import { InjectDataSource, InjectRepository } from '@nestjs/typeorm'; import { Command } from 'nest-commander'; +import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { DataSource, Repository } from 'typeorm'; -import { FieldMetadataType } from 'twenty-shared/types'; import { ActiveOrSuspendedWorkspacesMigrationCommandRunner } from 'src/database/commands/command-runners/active-or-suspended-workspaces-migration.command-runner'; import { RunOnWorkspaceArgs } from 'src/database/commands/command-runners/workspaces-migration.command-runner'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; -import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; -import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; import { computeTableName } from 'src/engine/utils/compute-table-name.util'; -import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util'; +import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; +import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util'; @Command({ name: 'upgrade:1-14:udpate-created-by-enum', diff --git a/packages/twenty-server/src/database/commands/upgrade-version-command/1-15/1-15-backfill-updated-by-field.command.ts b/packages/twenty-server/src/database/commands/upgrade-version-command/1-15/1-15-backfill-updated-by-field.command.ts index 45b24850d0b..5874354b79b 100644 --- a/packages/twenty-server/src/database/commands/upgrade-version-command/1-15/1-15-backfill-updated-by-field.command.ts +++ b/packages/twenty-server/src/database/commands/upgrade-version-command/1-15/1-15-backfill-updated-by-field.command.ts @@ -30,7 +30,7 @@ import { TASK_STANDARD_FIELD_IDS, WORKFLOW_RUN_STANDARD_FIELD_IDS, WORKFLOW_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; +} from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids'; @Command({ name: 'upgrade:1-15:backfill-updated-by-field', diff --git a/packages/twenty-server/src/database/typeorm/core/migrations/common/1767876112877-removeWorkspaceMigration.ts b/packages/twenty-server/src/database/typeorm/core/migrations/common/1767876112877-removeWorkspaceMigration.ts new file mode 100644 index 00000000000..69dee5b1e04 --- /dev/null +++ b/packages/twenty-server/src/database/typeorm/core/migrations/common/1767876112877-removeWorkspaceMigration.ts @@ -0,0 +1,17 @@ +import { type MigrationInterface, type QueryRunner } from 'typeorm'; + +export class RemoveWorkspaceMigration1767876112877 + implements MigrationInterface +{ + name = 'RemoveWorkspaceMigration1767876112877'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP TABLE "core"."workspaceMigration"`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "core"."workspaceMigration" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "migrations" jsonb, "name" character varying NOT NULL, "isCustom" boolean NOT NULL DEFAULT false, "appliedAt" TIMESTAMP WITH TIME ZONE, "workspaceId" uuid NOT NULL, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), CONSTRAINT "PK_33f481ae58d08030a3a007efde1" PRIMARY KEY ("id"))`, + ); + } +} diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts index a468fa71f7e..0ebc406bc7f 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-filter/graphql-query-filter-field.parser.ts @@ -8,12 +8,12 @@ import { GraphqlQueryRunnerExceptionCode, } from 'src/engine/api/graphql/graphql-query-runner/errors/graphql-query-runner.exception'; import { computeWhereConditionParts } from 'src/engine/api/graphql/graphql-query-runner/utils/compute-where-condition-parts'; +import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { buildFieldMapsFromFlatObjectMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/build-field-maps-from-flat-object-metadata.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; const ARRAY_OPERATORS = ['in', 'contains', 'notContains']; diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts index be7def8deff..0baef38a1fe 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/parse-composite-field-for-order.util.ts @@ -6,8 +6,8 @@ import { capitalize } from 'twenty-shared/utils'; import { type OrderByCondition } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/graphql-query-order.parser'; import { convertOrderByToFindOptionsOrder } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-order/utils/convert-order-by-to-find-options-order'; +import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; export const parseCompositeFieldForOrder = ( fieldMetadata: FlatFieldMetadata, diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts index 68832525e78..db6a783f3dc 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields.parser.ts @@ -6,13 +6,13 @@ import { capitalize, isDefined } from 'twenty-shared/utils'; import { GraphqlQuerySelectedFieldsAggregateParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields-aggregate.parser'; import { GraphqlQuerySelectedFieldsRelationParser } from 'src/engine/api/graphql/graphql-query-runner/graphql-query-parsers/graphql-query-selected-fields/graphql-selected-fields-relation.parser'; +import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; export type GraphqlQuerySelectedFieldsResult = { // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts index 6dc7641effb..34556c9b8a6 100644 --- a/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts +++ b/packages/twenty-server/src/engine/api/graphql/graphql-query-runner/helpers/object-records-to-graphql-connection.helper.ts @@ -17,13 +17,13 @@ import { import { encodeCursor } from 'src/engine/api/graphql/graphql-query-runner/utils/cursors.util'; import { getTargetObjectMetadataOrThrow } from 'src/engine/api/graphql/graphql-query-runner/utils/get-target-object-metadata.util'; import { type AggregationField } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-available-aggregations-from-object-fields.util'; +import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; import { isPlainObject } from 'src/utils/is-plain-object'; // TODO: Refacto-common - Rename CommonRecordsToGraphqlConnectionHelper diff --git a/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts b/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts index d8d487cc054..dbecd9faf74 100644 --- a/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts +++ b/packages/twenty-server/src/engine/api/graphql/metadata-graphql-api.module.ts @@ -15,8 +15,6 @@ import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twent import { DataloaderModule } from 'src/engine/dataloaders/dataloader.module'; import { DataloaderService } from 'src/engine/dataloaders/dataloader.service'; import { MetadataEngineModule } from 'src/engine/metadata-modules/metadata-engine.module'; -import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; -import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module'; @Module({ imports: [ @@ -39,8 +37,6 @@ import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/wor ], }), MetadataEngineModule, - WorkspaceMigrationRunnerModule, - WorkspaceMigrationModule, ], }) export class MetadataGraphQLApiModule {} diff --git a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-base.handler.ts b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-base.handler.ts index e9c4e96b601..bca8e084308 100644 --- a/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-base.handler.ts +++ b/packages/twenty-server/src/engine/api/rest/core/handlers/rest-api-base.handler.ts @@ -35,8 +35,6 @@ import { import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { shouldExcludeFromWorkspaceApi } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/should-exclude-from-workspace-api.util'; export interface PageInfo { hasNextPage?: boolean; @@ -254,22 +252,6 @@ export abstract class RestApiBaseHandler { ); } - const workspaceFeatureFlagsMap = - await this.featureFlagService.getWorkspaceFeatureFlagsMap(workspace.id); - - // Check if this entity is workspace-gated and should be blocked from workspace API - if ( - shouldExcludeFromWorkspaceApi( - flatObjectMetadataItem, - standardObjectMetadataDefinitions, - workspaceFeatureFlagsMap, - ) - ) { - throw new BadRequestException( - `object '${parsedObject}' not found. ${parsedObject} is not available via REST API.`, - ); - } - return { flatObjectMetadata: flatObjectMetadataItem, flatObjectMetadataMaps, diff --git a/packages/twenty-server/src/engine/core-modules/api-key/api-key.entity.ts b/packages/twenty-server/src/engine/core-modules/api-key/api-key.entity.ts index d8746beb7cc..7801989f517 100644 --- a/packages/twenty-server/src/engine/core-modules/api-key/api-key.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/api-key/api-key.entity.ts @@ -11,7 +11,7 @@ import { } from 'typeorm'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Index('IDX_API_KEY_WORKSPACE_ID', ['workspaceId']) @Entity({ name: 'apiKey', schema: 'core' }) diff --git a/packages/twenty-server/src/engine/core-modules/application/application-sync.module.ts b/packages/twenty-server/src/engine/core-modules/application/application-sync.module.ts index 1036618336a..70a25a4bd12 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-sync.module.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-sync.module.ts @@ -10,15 +10,15 @@ import { DatabaseEventTriggerModule } from 'src/engine/metadata-modules/database import { FieldMetadataModule } from 'src/engine/metadata-modules/field-metadata/field-metadata.module'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module'; +import { ObjectPermissionModule } from 'src/engine/metadata-modules/object-permission/object-permission.module'; +import { PermissionFlagModule } from 'src/engine/metadata-modules/permission-flag/permission-flag.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; +import { RoleModule } from 'src/engine/metadata-modules/role/role.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'; import { ServerlessFunctionModule } from 'src/engine/metadata-modules/serverless-function/serverless-function.module'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; -import { ObjectPermissionModule } from 'src/engine/metadata-modules/object-permission/object-permission.module'; -import { PermissionFlagModule } from 'src/engine/metadata-modules/permission-flag/permission-flag.module'; -import { RoleModule } from 'src/engine/metadata-modules/role/role.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-common.module'; @Module({ @@ -34,7 +34,7 @@ import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-commo DatabaseEventTriggerModule, CronTriggerModule, RouteTriggerModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, PermissionsModule, RoleModule, ObjectPermissionModule, diff --git a/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts index 99de7c898db..bee24bc02f7 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application-sync.service.ts @@ -43,7 +43,7 @@ import { ServerlessFunctionLayerService } from 'src/engine/metadata-modules/serv import { ServerlessFunctionV2Service } from 'src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service'; import { FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type'; import { computeMetadataNameFromLabelOrThrow } from 'src/engine/metadata-modules/utils/compute-metadata-name-from-label-or-throw.util'; -import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ApplicationSyncService { diff --git a/packages/twenty-server/src/engine/core-modules/application/application.entity.ts b/packages/twenty-server/src/engine/core-modules/application/application.entity.ts index f18a895e103..10793aeab8c 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application.entity.ts @@ -17,7 +17,7 @@ import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/ag import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { RoleDTO } from 'src/engine/metadata-modules/role/dtos/role.dto'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'application', schema: 'core' }) @ObjectType('Application') diff --git a/packages/twenty-server/src/engine/core-modules/application/application.resolver.ts b/packages/twenty-server/src/engine/core-modules/application/application.resolver.ts index ae6b2659fa0..4fe6c0f0610 100644 --- a/packages/twenty-server/src/engine/core-modules/application/application.resolver.ts +++ b/packages/twenty-server/src/engine/core-modules/application/application.resolver.ts @@ -16,7 +16,7 @@ import { AuthWorkspace } from 'src/engine/decorators/auth/auth-workspace.decorat import { RequireFeatureFlag } from 'src/engine/guards/feature-flag.guard'; import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; @UseGuards( WorkspaceAuthGuard, diff --git a/packages/twenty-server/src/engine/core-modules/applicationVariable/application-variable.entity.ts b/packages/twenty-server/src/engine/core-modules/applicationVariable/application-variable.entity.ts index 1842b07e425..28c09cc3393 100644 --- a/packages/twenty-server/src/engine/core-modules/applicationVariable/application-variable.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/applicationVariable/application-variable.entity.ts @@ -1,5 +1,6 @@ import { ObjectType } from '@nestjs/graphql'; +import { IDField } from '@ptc-org/nestjs-query-graphql'; import { Column, CreateDateColumn, @@ -10,12 +11,10 @@ import { Unique, UpdateDateColumn, } from 'typeorm'; -import { IDField } from '@ptc-org/nestjs-query-graphql'; - -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; +import { EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; @Entity({ name: 'applicationVariable', @@ -55,7 +54,7 @@ export class ApplicationVariableEntity { }, ) @JoinColumn({ name: 'applicationId' }) - application: Relation | null; + application: EntityRelation | null; @CreateDateColumn({ type: 'timestamptz' }) createdAt: Date; diff --git a/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain.entity.ts b/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain.entity.ts index 237944f4905..095476881a4 100644 --- a/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/approved-access-domain/approved-access-domain.entity.ts @@ -9,7 +9,7 @@ import { UpdateDateColumn, } from 'typeorm'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'approvedAccessDomain', schema: 'core' }) @ObjectType('ApprovedAccessDomain') diff --git a/packages/twenty-server/src/engine/core-modules/billing/entities/billing-customer.entity.ts b/packages/twenty-server/src/engine/core-modules/billing/entities/billing-customer.entity.ts index 76840eb2fa5..71da4bd93fd 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/entities/billing-customer.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/entities/billing-customer.entity.ts @@ -17,7 +17,7 @@ import { import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { BillingEntitlementEntity } from 'src/engine/core-modules/billing/entities/billing-entitlement.entity'; import { BillingSubscriptionEntity } from 'src/engine/core-modules/billing/entities/billing-subscription.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'billingCustomer', schema: 'core' }) @ObjectType('BillingCustomer') diff --git a/packages/twenty-server/src/engine/core-modules/billing/entities/billing-entitlement.entity.ts b/packages/twenty-server/src/engine/core-modules/billing/entities/billing-entitlement.entity.ts index 7339292baaf..89a78098b57 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/entities/billing-entitlement.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/entities/billing-entitlement.entity.ts @@ -18,7 +18,7 @@ import { import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { BillingCustomerEntity } from 'src/engine/core-modules/billing/entities/billing-customer.entity'; import { BillingEntitlementKey } from 'src/engine/core-modules/billing/enums/billing-entitlement-key.enum'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'billingEntitlement', schema: 'core' }) @ObjectType('BillingEntitlement') diff --git a/packages/twenty-server/src/engine/core-modules/billing/entities/billing-subscription.entity.ts b/packages/twenty-server/src/engine/core-modules/billing/entities/billing-subscription.entity.ts index 830c54881ca..786979585b6 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/entities/billing-subscription.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/entities/billing-subscription.entity.ts @@ -44,7 +44,7 @@ import { BillingSubscriptionItemEntity } from 'src/engine/core-modules/billing/e import { BillingSubscriptionCollectionMethod } from 'src/engine/core-modules/billing/enums/billing-subscription-collection-method.enum'; import { SubscriptionInterval } from 'src/engine/core-modules/billing/enums/billing-subscription-interval.enum'; import { SubscriptionStatus } from 'src/engine/core-modules/billing/enums/billing-subscription-status.enum'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; registerEnumType(SubscriptionStatus, { name: 'SubscriptionStatus' }); registerEnumType(SubscriptionInterval, { name: 'SubscriptionInterval' }); diff --git a/packages/twenty-server/src/engine/core-modules/emailing-domain/emailing-domain.entity.ts b/packages/twenty-server/src/engine/core-modules/emailing-domain/emailing-domain.entity.ts index 872c6ff4dca..eab202e11dd 100644 --- a/packages/twenty-server/src/engine/core-modules/emailing-domain/emailing-domain.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/emailing-domain/emailing-domain.entity.ts @@ -14,7 +14,7 @@ import { EmailingDomainStatus, } from 'src/engine/core-modules/emailing-domain/drivers/types/emailing-domain'; import { VerificationRecord } from 'src/engine/core-modules/emailing-domain/drivers/types/verifications-record'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'emailingDomain', schema: 'core' }) @ObjectType('EmailingDomain') diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts index b4451f16582..3b660738fef 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts @@ -10,6 +10,5 @@ export enum FeatureFlagKey { IS_DASHBOARD_V2_ENABLED = 'IS_DASHBOARD_V2_ENABLED', IS_TIMELINE_ACTIVITY_MIGRATED = 'IS_TIMELINE_ACTIVITY_MIGRATED', IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED = 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED', - IS_WORKSPACE_CREATION_V2_ENABLED = 'IS_WORKSPACE_CREATION_V2_ENABLED', IS_IF_ELSE_ENABLED = 'IS_IF_ELSE_ENABLED', } diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/feature-flag.entity.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/feature-flag.entity.ts index d10cdf6522e..b32fb39034d 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/feature-flag.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/feature-flag.entity.ts @@ -12,7 +12,7 @@ import { import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'featureFlag', schema: 'core' }) @ObjectType('FeatureFlag') diff --git a/packages/twenty-server/src/engine/core-modules/file/entities/file.entity.ts b/packages/twenty-server/src/engine/core-modules/file/entities/file.entity.ts index 0f39f603931..56447b85bec 100644 --- a/packages/twenty-server/src/engine/core-modules/file/entities/file.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/file/entities/file.entity.ts @@ -8,7 +8,7 @@ import { PrimaryGeneratedColumn, } from 'typeorm'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity('file') @ObjectType('File') diff --git a/packages/twenty-server/src/engine/core-modules/health/health.module.ts b/packages/twenty-server/src/engine/core-modules/health/health.module.ts index 6dc53094bff..a1f498e8901 100644 --- a/packages/twenty-server/src/engine/core-modules/health/health.module.ts +++ b/packages/twenty-server/src/engine/core-modules/health/health.module.ts @@ -7,7 +7,6 @@ import { AppHealthIndicator } from 'src/engine/core-modules/health/indicators/ap import { MetricsModule } from 'src/engine/core-modules/metrics/metrics.module'; import { RedisClientModule } from 'src/engine/core-modules/redis-client/redis-client.module'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; import { ConnectedAccountHealth } from './indicators/connected-account.health'; import { DatabaseHealthIndicator } from './indicators/database.health'; @@ -17,7 +16,6 @@ import { WorkerHealthIndicator } from './indicators/worker.health'; imports: [ TerminusModule, RedisClientModule, - WorkspaceMigrationModule, TypeOrmModule.forFeature([WorkspaceEntity]), MetricsModule, ], diff --git a/packages/twenty-server/src/engine/core-modules/health/indicators/__tests__/app.health.spec.ts b/packages/twenty-server/src/engine/core-modules/health/indicators/__tests__/app.health.spec.ts index 34e98805a53..d17817656df 100644 --- a/packages/twenty-server/src/engine/core-modules/health/indicators/__tests__/app.health.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/health/indicators/__tests__/app.health.spec.ts @@ -6,12 +6,10 @@ import { type Repository } from 'typeorm'; import { AppHealthIndicator } from 'src/engine/core-modules/health/indicators/app.health'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; describe('AppHealthIndicator', () => { let service: AppHealthIndicator; let workspaceRepository: jest.Mocked>; - let workspaceMigrationService: jest.Mocked; let healthIndicatorService: jest.Mocked; beforeEach(async () => { @@ -19,11 +17,6 @@ describe('AppHealthIndicator', () => { count: jest.fn(), } as any; - workspaceMigrationService = { - getWorkspacesWithPendingMigrations: jest.fn(), - countWorkspacesWithPendingMigrations: jest.fn(), - } as any; - healthIndicatorService = { check: jest.fn().mockReturnValue({ up: jest.fn().mockImplementation((data) => ({ @@ -42,10 +35,6 @@ describe('AppHealthIndicator', () => { provide: getRepositoryToken(WorkspaceEntity), useValue: workspaceRepository, }, - { - provide: WorkspaceMigrationService, - useValue: workspaceMigrationService, - }, { provide: HealthIndicatorService, useValue: healthIndicatorService, @@ -68,104 +57,18 @@ describe('AppHealthIndicator', () => { it('should return up status when no issues and no pending migrations', async () => { workspaceRepository.count.mockResolvedValue(2); - workspaceMigrationService.countWorkspacesWithPendingMigrations.mockResolvedValue( - 0, - ); - workspaceMigrationService.getWorkspacesWithPendingMigrations.mockResolvedValue( - [], - ); - const result = await service.isHealthy(); expect(result.app.status).toBe('up'); expect(result.app.details.overview.totalWorkspacesCount).toBe(2); expect(result.app.details.overview.erroredWorkspaceCount).toBe(0); - expect(result.app.details.erroredWorkspace).toBe(null); expect(result.app.details.system.nodeVersion).toBeDefined(); expect(result.app.details.system.timestamp).toBeDefined(); }); - it('should return down status when there are pending migrations', async () => { - workspaceRepository.count.mockResolvedValue(5); - - // Mock a total count that's higher than the sample - workspaceMigrationService.countWorkspacesWithPendingMigrations.mockResolvedValue( - 10, - ); - - workspaceMigrationService.getWorkspacesWithPendingMigrations.mockResolvedValue( - [ - { - workspaceId: 'workspace1', - pendingMigrations: 1, - }, - { - workspaceId: 'workspace2', - pendingMigrations: 3, - }, - { - workspaceId: 'workspace3', - pendingMigrations: 2, - }, - ], - ); - - const result = await service.isHealthy(); - - expect(result.app.status).toBe('down'); - expect(result.app.message).toBe( - 'Found 10 workspaces with pending migrations', - ); - - expect(result.app.details).toEqual({ - system: { - nodeVersion: process.version, - timestamp: expect.any(String), - }, - overview: { - totalWorkspacesCount: 5, - erroredWorkspaceCount: 10, - }, - erroredWorkspace: [ - { - workspaceId: 'workspace1', - pendingMigrations: 1, - }, - { - workspaceId: 'workspace2', - pendingMigrations: 3, - }, - { - workspaceId: 'workspace3', - pendingMigrations: 2, - }, - ], - }); - }); - - it('should handle errors gracefully and maintain state history', async () => { - workspaceRepository.count.mockRejectedValue( - new Error('Database connection failed'), - ); - - const result = await service.isHealthy(); - - expect(result.app.status).toBe('down'); - expect(result.app.message).toBe('Database connection failed'); - expect(result.app.details.system.nodeVersion).toBeDefined(); - expect(result.app.details.system.timestamp).toBeDefined(); - expect(result.app.details.stateHistory).toBeDefined(); - }); - it('should maintain state history across health checks', async () => { // First check - healthy state workspaceRepository.count.mockResolvedValue(2); - workspaceMigrationService.countWorkspacesWithPendingMigrations.mockResolvedValue( - 0, - ); - workspaceMigrationService.getWorkspacesWithPendingMigrations.mockResolvedValue( - [], - ); await service.isHealthy(); @@ -181,34 +84,4 @@ describe('AppHealthIndicator', () => { expect(result.app.details.stateHistory.timestamp).toBeDefined(); expect(result.app.details.stateHistory.details).toBeDefined(); }); - - it('should sample workspaces with pending migrations up to limit', async () => { - workspaceRepository.count.mockResolvedValue(1000); - - // Mock a total count higher than the sample - workspaceMigrationService.countWorkspacesWithPendingMigrations.mockResolvedValue( - 500, - ); - - const sampleWorkspaces = Array(300) - .fill(0) - .map((_, i) => ({ - workspaceId: `workspace${i}`, - pendingMigrations: (i % 3) + 1, - })); - - workspaceMigrationService.getWorkspacesWithPendingMigrations.mockResolvedValue( - sampleWorkspaces, - ); - - const result = await service.isHealthy(); - - expect(result.app.status).toBe('down'); - expect(result.app.message).toBe( - 'Found 500 workspaces with pending migrations', - ); - expect(result.app.details.overview.totalWorkspacesCount).toBe(1000); - expect(result.app.details.overview.erroredWorkspaceCount).toBe(500); - expect(result.app.details.erroredWorkspace.length).toBe(300); - }); }); diff --git a/packages/twenty-server/src/engine/core-modules/health/indicators/app.health.ts b/packages/twenty-server/src/engine/core-modules/health/indicators/app.health.ts index 611e5052888..c58b46cda08 100644 --- a/packages/twenty-server/src/engine/core-modules/health/indicators/app.health.ts +++ b/packages/twenty-server/src/engine/core-modules/health/indicators/app.health.ts @@ -9,7 +9,6 @@ import { Repository } from 'typeorm'; import { HealthStateManager } from 'src/engine/core-modules/health/utils/health-state-manager.util'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; @Injectable() export class AppHealthIndicator { @@ -19,21 +18,13 @@ export class AppHealthIndicator { private readonly healthIndicatorService: HealthIndicatorService, @InjectRepository(WorkspaceEntity) private readonly workspaceRepository: Repository, - private readonly workspaceMigrationService: WorkspaceMigrationService, ) {} + // TODO refactor, a workspace health should be based on its app versioning async isHealthy(): Promise { const indicator = this.healthIndicatorService.check('app'); try { - const totalErroredWorkspacesCount = - await this.workspaceMigrationService.countWorkspacesWithPendingMigrations(); - - const sampledErroredWorkspaces = - await this.workspaceMigrationService.getWorkspacesWithPendingMigrations( - 500, - ); - const totalWorkspaceCount = await this.workspaceRepository.count(); const details = { @@ -43,29 +34,14 @@ export class AppHealthIndicator { }, overview: { totalWorkspacesCount: totalWorkspaceCount, - erroredWorkspaceCount: totalErroredWorkspacesCount, + erroredWorkspaceCount: 0, }, - erroredWorkspace: - totalErroredWorkspacesCount > 0 - ? sampledErroredWorkspaces.map((workspace) => ({ - workspaceId: workspace.workspaceId, - pendingMigrations: workspace.pendingMigrations, - })) - : null, + erroredWorkspace: 0, }; - if (totalErroredWorkspacesCount === 0) { - this.stateManager.updateState(details); - - return indicator.up({ details }); - } - this.stateManager.updateState(details); - return indicator.down({ - message: `Found ${totalErroredWorkspacesCount} workspaces with pending migrations`, - details, - }); + return indicator.up({ details }); } catch (error) { const stateWithAge = this.stateManager.getStateWithAge(); diff --git a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts index 6721ce36ee1..7e906117a27 100644 --- a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts +++ b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts @@ -48,8 +48,6 @@ import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twent import { WorkspaceNotFoundDefaultError } from 'src/engine/core-modules/workspace/workspace.exception'; import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { shouldExcludeFromWorkspaceApi } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/should-exclude-from-workspace-api.util'; import { getServerUrl } from 'src/utils/get-server-url'; @Injectable() @@ -127,20 +125,7 @@ export class OpenApiService { return schema; } - const workspaceFeatureFlagsMap = - await this.featureFlagService.getWorkspaceFeatureFlagsMap(workspace.id); - - const filteredObjectMetadataItems = flatObjectMetadataArray.filter( - (item) => { - return !shouldExcludeFromWorkspaceApi( - item, - standardObjectMetadataDefinitions, - workspaceFeatureFlagsMap, - ); - }, - ); - - schema.paths = filteredObjectMetadataItems.reduce((paths, item) => { + schema.paths = flatObjectMetadataArray.reduce((paths, item) => { paths[`/${item.namePlural}`] = computeManyResultPath( item, flatObjectMetadataMaps, @@ -204,7 +189,7 @@ export class OpenApiService { }, } as OpenAPIV3_1.PathItemObject; - schema.webhooks = filteredObjectMetadataItems.reduce( + schema.webhooks = flatObjectMetadataArray.reduce( (paths, item) => { paths[ this.createWebhookEventName( @@ -251,7 +236,7 @@ export class OpenApiService { schema.components = { ...schema.components, // components.securitySchemes is defined in base Schema schemas: computeSchemaComponents( - filteredObjectMetadataItems, + flatObjectMetadataArray, flatObjectMetadataMaps, flatFieldMetadataMaps, ), @@ -262,7 +247,7 @@ export class OpenApiService { }, }; - schema.tags = computeSchemaTags(filteredObjectMetadataItems); + schema.tags = computeSchemaTags(flatObjectMetadataArray); return schema; } diff --git a/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.entity.ts b/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.entity.ts index f3eafafa438..99129b19cf1 100644 --- a/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/postgres-credentials/postgres-credentials.entity.ts @@ -8,7 +8,7 @@ import { UpdateDateColumn, } from 'typeorm'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'postgresCredentials', schema: 'core' }) @ObjectType('PostgresCredentials') diff --git a/packages/twenty-server/src/engine/core-modules/public-domain/public-domain.entity.ts b/packages/twenty-server/src/engine/core-modules/public-domain/public-domain.entity.ts index 7eaa01f9783..b1c9bf02554 100644 --- a/packages/twenty-server/src/engine/core-modules/public-domain/public-domain.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/public-domain/public-domain.entity.ts @@ -8,7 +8,7 @@ import { UpdateDateColumn, } from 'typeorm'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity({ name: 'publicDomain', schema: 'core' }) @ObjectType('PublicDomain') diff --git a/packages/twenty-server/src/engine/core-modules/sso/workspace-sso-identity-provider.entity.ts b/packages/twenty-server/src/engine/core-modules/sso/workspace-sso-identity-provider.entity.ts index 33bcab2a7d0..3910d03e6cf 100644 --- a/packages/twenty-server/src/engine/core-modules/sso/workspace-sso-identity-provider.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/sso/workspace-sso-identity-provider.entity.ts @@ -12,7 +12,7 @@ import { } from 'typeorm'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; export enum IdentityProviderType { OIDC = 'OIDC', diff --git a/packages/twenty-server/src/engine/core-modules/tool-provider/utils/format-validation-errors.util.ts b/packages/twenty-server/src/engine/core-modules/tool-provider/utils/format-validation-errors.util.ts index 3739c37a1da..097259664d5 100644 --- a/packages/twenty-server/src/engine/core-modules/tool-provider/utils/format-validation-errors.util.ts +++ b/packages/twenty-server/src/engine/core-modules/tool-provider/utils/format-validation-errors.util.ts @@ -1,7 +1,7 @@ -import type { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; +import type { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; export const formatValidationErrors = ( - error: WorkspaceMigrationBuilderExceptionV2, + error: WorkspaceMigrationBuilderException, ): string => { const report = error.failedWorkspaceMigrationBuildResult.report; const errorMessages: string[] = []; diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts index becb237a228..95ec9147489 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/config-variables.ts @@ -1393,16 +1393,6 @@ export class ConfigVariables { @IsOptional() IS_MAPS_AND_ADDRESS_AUTOCOMPLETE_ENABLED = false; - @ConfigVariablesMetadata({ - group: ConfigVariablesGroup.OTHER, - description: - 'Enable or disable workspace creation through v2 workspaceMigration', - type: ConfigVariableType.BOOLEAN, - isEnvOnly: true, - }) - @IsOptional() - IS_WORKSPACE_CREATION_V2_ENABLED = false; - @ConfigVariablesMetadata({ group: ConfigVariablesGroup.OTHER, isSensitive: true, diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.entity.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.entity.ts index f910cfa59ad..3dc63f55e83 100644 --- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.entity.ts @@ -25,7 +25,7 @@ import { TwoFactorAuthenticationMethodSummaryDto } from 'src/engine/core-modules import { TwoFactorAuthenticationMethodEntity } from 'src/engine/core-modules/two-factor-authentication/entities/two-factor-authentication-method.entity'; import { UserEntity } from 'src/engine/core-modules/user/user.entity'; import { ObjectPermissionDTO } from 'src/engine/metadata-modules/object-permission/dtos/object-permission.dto'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; registerEnumType(PermissionFlagType, { name: 'PermissionFlagType', diff --git a/packages/twenty-server/src/engine/core-modules/webhook/webhook.entity.ts b/packages/twenty-server/src/engine/core-modules/webhook/webhook.entity.ts index c0fe91837e6..a4744671218 100644 --- a/packages/twenty-server/src/engine/core-modules/webhook/webhook.entity.ts +++ b/packages/twenty-server/src/engine/core-modules/webhook/webhook.entity.ts @@ -12,7 +12,7 @@ import { } from 'typeorm'; import { UUIDScalarType } from 'src/engine/api/graphql/workspace-schema-builder/graphql-types/scalars'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Index('IDX_WEBHOOK_WORKSPACE_ID', ['workspaceId']) @Entity({ name: 'webhook', schema: 'core' }) diff --git a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts index 011ce90a24f..33fc6b71b3e 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/services/workspace.service.ts @@ -17,7 +17,6 @@ import { DnsManagerService } from 'src/engine/core-modules/dns-manager/services/ import { CustomDomainManagerService } from 'src/engine/core-modules/domain/custom-domain-manager/services/custom-domain-manager.service'; import { SubdomainManagerService } from 'src/engine/core-modules/domain/subdomain-manager/services/subdomain-manager.service'; import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service'; -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 { FileWorkspaceFolderDeletionJob, @@ -47,7 +46,7 @@ import { PermissionsService } from 'src/engine/metadata-modules/permissions/perm import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service'; -import { DEFAULT_FEATURE_FLAGS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/default-feature-flags'; +import { DEFAULT_FEATURE_FLAGS } from 'src/engine/workspace-manager/workspace-migration/constant/default-feature-flags'; import { extractVersionMajorMinorPatch } from 'src/utils/version/extract-version-major-minor-patch'; @Injectable() @@ -245,17 +244,8 @@ export class WorkspaceService extends TypeOrmQueryService { activationStatus: WorkspaceActivationStatus.ONGOING_CREATION, }); - const isV2SyncEnabled = this.twentyConfigService.get( - 'IS_WORKSPACE_CREATION_V2_ENABLED', - ); - await this.featureFlagService.enableFeatureFlags( - [ - ...DEFAULT_FEATURE_FLAGS, - ...(isV2SyncEnabled - ? [FeatureFlagKey.IS_WORKSPACE_CREATION_V2_ENABLED] - : []), - ], + DEFAULT_FEATURE_FLAGS, workspace.id, ); diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.resolver.ts index e73930dcb52..4b5ec56ada5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.resolver.ts @@ -13,7 +13,7 @@ import { import { SettingsPermissionGuard } from 'src/engine/guards/settings-permission.guard'; import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; import { fromFlatAgentWithRoleIdToAgentDto } from 'src/engine/metadata-modules/flat-agent/utils/from-agent-entity-to-agent-dto.util'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; import { AgentService } from './agent.service'; diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.service.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.service.ts index 0b0b375210e..27545964738 100644 --- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/agent.service.ts @@ -13,8 +13,8 @@ import { FlatAgentWithRoleId } from 'src/engine/metadata-modules/flat-agent/type import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; import { AgentException, AgentExceptionCode } from './agent.exception'; @@ -146,7 +146,7 @@ export class AgentService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating agent', ); @@ -219,7 +219,7 @@ export class AgentService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating agent', ); @@ -325,7 +325,7 @@ export class AgentService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, `Multiple validation errors occurred while deleting agent${ids.length > 1 ? 's' : ''}`, ); diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/ai-agent.module.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/ai-agent.module.ts index d1da9886e05..74fb409ad1e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/ai-agent.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/ai-agent.module.ts @@ -17,8 +17,8 @@ import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-t import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { AgentResolver } from './agent.resolver'; import { AgentService } from './agent.service'; @@ -38,7 +38,7 @@ import { AgentEntity } from './entities/agent.entity'; ObjectMetadataModule, PermissionsModule, WorkspaceCacheStorageModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ApplicationModule, FlatAgentModule, WorkspaceCacheModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/entities/agent.entity.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/entities/agent.entity.ts index 0f8744a2b95..3b4255cc298 100644 --- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/entities/agent.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-agent/entities/agent.entity.ts @@ -8,13 +8,13 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { AgentResponseFormat } from 'src/engine/metadata-modules/ai/ai-agent/types/agent-response-format.type'; import { ModelConfiguration } from 'src/engine/metadata-modules/ai/ai-agent/types/modelConfiguration'; import { DEFAULT_SMART_MODEL, ModelId, } from 'src/engine/metadata-modules/ai/ai-models/constants/ai-models.const'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity('agent') @Index('IDX_AGENT_ID_DELETED_AT', ['id', 'deletedAt']) diff --git a/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/entities/agent-chat-thread.entity.ts b/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/entities/agent-chat-thread.entity.ts index b5d62201148..a6ec041813e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/entities/agent-chat-thread.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/ai/ai-chat/entities/agent-chat-thread.entity.ts @@ -10,11 +10,10 @@ import { UpdateDateColumn, } from 'typeorm'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { AgentMessageEntity } from 'src/engine/metadata-modules/ai/ai-agent-execution/entities/agent-message.entity'; import { AgentTurnEntity } from 'src/engine/metadata-modules/ai/ai-agent-execution/entities/agent-turn.entity'; +import { EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; @Entity('agentChatThread') export class AgentChatThreadEntity { @@ -29,7 +28,7 @@ export class AgentChatThreadEntity { onDelete: 'CASCADE', }) @JoinColumn({ name: 'userWorkspaceId' }) - userWorkspace: Relation; + userWorkspace: EntityRelation; @Column({ nullable: true, type: 'varchar' }) title: string; @@ -50,10 +49,10 @@ export class AgentChatThreadEntity { totalOutputCredits: number; @OneToMany(() => AgentTurnEntity, (turn) => turn.thread) - turns: Relation; + turns: EntityRelation; @OneToMany(() => AgentMessageEntity, (message) => message.thread) - messages: Relation; + messages: EntityRelation; @CreateDateColumn() createdAt: Date; diff --git a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/cron-trigger.module.ts b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/cron-trigger.module.ts index 915badb1316..ebc7d180c14 100644 --- a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/cron-trigger.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/cron-trigger.module.ts @@ -11,7 +11,7 @@ import { CronTriggerV2Service } from 'src/engine/metadata-modules/cron-trigger/s import { WorkspaceFlatCronTriggerMapCacheService } from 'src/engine/metadata-modules/cron-trigger/services/workspace-flat-cron-trigger-map-cache.service'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -19,7 +19,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa ApplicationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ], providers: [ CronTriggerCronJob, diff --git a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity.ts b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity.ts index b57ae409a68..16fe7b3fb4b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity.ts @@ -11,7 +11,7 @@ import { } from 'typeorm'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; export type CronTriggerSettings = { pattern: string; diff --git a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts index 81b96c3dc0e..440d82ac21d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/cron-trigger-v2.service.ts @@ -15,8 +15,8 @@ import { fromCreateCronTriggerInputToFlatCronTrigger } from 'src/engine/metadata import { fromUpdateCronTriggerInputToFlatCronTriggerToUpdateOrThrow } from 'src/engine/metadata-modules/cron-trigger/utils/from-update-cron-trigger-input-to-flat-cron-trigger-to-update-or-throw.util'; import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class CronTriggerV2Service { @@ -67,7 +67,7 @@ export class CronTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating cron trigger', ); @@ -121,7 +121,7 @@ export class CronTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating cron trigger', ); @@ -182,7 +182,7 @@ export class CronTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying cron trigger', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/workspace-flat-cron-trigger-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/workspace-flat-cron-trigger-map-cache.service.ts index 62ea587fdfb..44090d9890a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/workspace-flat-cron-trigger-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/cron-trigger/services/workspace-flat-cron-trigger-map-cache.service.ts @@ -12,7 +12,7 @@ import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-enti import { FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { getMetadataEntityRelationProperties } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-entity-relation-properties.util'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatCronTriggerMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.entity.ts b/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.entity.ts index c737f97b5cb..d7a87b57da2 100644 --- a/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/data-source/data-source.entity.ts @@ -10,7 +10,7 @@ import { } from 'typeorm'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; export type DataSourceType = DataSourceOptions['type']; diff --git a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/database-event-trigger.module.ts b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/database-event-trigger.module.ts index be891e6d911..b6b864d5ed9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/database-event-trigger.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/database-event-trigger.module.ts @@ -10,7 +10,7 @@ import { DatabaseEventTriggerV2Service } from 'src/engine/metadata-modules/datab import { WorkspaceFlatDatabaseEventTriggerMapCacheService } from 'src/engine/metadata-modules/database-event-trigger/services/workspace-flat-database-event-trigger-map-cache.service'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -18,7 +18,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa ApplicationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ], providers: [ CallDatabaseEventTriggerJobsJob, diff --git a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity.ts b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity.ts index 3a3d6ad80f9..1dc24b847c6 100644 --- a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity.ts @@ -11,7 +11,7 @@ import { } from 'typeorm'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; export type DatabaseEventTriggerSettings = { eventName: string; diff --git a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts index 5e56571ebca..4be493b08ae 100644 --- a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/database-event-trigger-v2.service.ts @@ -15,8 +15,8 @@ import { fromCreateDatabaseEventTriggerInputToFlatDatabaseEventTrigger } from 's import { fromUpdateDatabaseEventTriggerInputToFlatDatabaseEventTriggerToUpdateOrThrow } from 'src/engine/metadata-modules/database-event-trigger/utils/from-update-database-event-trigger-input-to-flat-database-event-trigger-to-update-or-throw.util'; import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class DatabaseEventTriggerV2Service { @@ -66,7 +66,7 @@ export class DatabaseEventTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating database event trigger', ); @@ -127,7 +127,7 @@ export class DatabaseEventTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating database event trigger', ); @@ -191,7 +191,7 @@ export class DatabaseEventTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying database event trigger', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/workspace-flat-database-event-trigger-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/workspace-flat-database-event-trigger-map-cache.service.ts index 2c4fbf57ca9..c910d447b52 100644 --- a/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/workspace-flat-database-event-trigger-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/database-event-trigger/services/workspace-flat-database-event-trigger-map-cache.service.ts @@ -12,7 +12,7 @@ import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-enti import { FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { getMetadataEntityRelationProperties } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-entity-relation-properties.util'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatDatabaseEventTriggerMaps') 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 5ed63d78cb1..f39808e62ce 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 @@ -30,7 +30,7 @@ import { FieldPermissionEntity } from 'src/engine/metadata-modules/object-permis 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 { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @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 cf114e93c24..ab8945d8dff 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 @@ -15,7 +15,9 @@ 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'; import { FieldMetadataResolver } from 'src/engine/metadata-modules/field-metadata/field-metadata.resolver'; +import { FieldMetadataGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/field-metadata/interceptors/field-metadata-graphql-api-exception.interceptor'; import { FieldMetadataService } from 'src/engine/metadata-modules/field-metadata/services/field-metadata.service'; +import { FieldMetadataToolsFactory } from 'src/engine/metadata-modules/field-metadata/tools/field-metadata-tools.factory'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { FlatFieldMetadataModule } from 'src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module'; import { IndexMetadataModule } from 'src/engine/metadata-modules/index-metadata/index-metadata.module'; @@ -27,12 +29,8 @@ import { ViewFilterModule } from 'src/engine/metadata-modules/view-filter/view-f import { ViewGroupModule } from 'src/engine/metadata-modules/view-group/view-group.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 { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; -import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; -import { FieldMetadataGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/field-metadata/interceptors/field-metadata-graphql-api-exception.interceptor'; -import { FieldMetadataToolsFactory } from 'src/engine/metadata-modules/field-metadata/tools/field-metadata-tools.factory'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { FieldMetadataEntity } from './field-metadata.entity'; @@ -47,8 +45,6 @@ import { UpdateFieldInput } from './dtos/update-field.input'; FieldMetadataEntity, ObjectMetadataEntity, ]), - WorkspaceMigrationModule, - WorkspaceMigrationRunnerModule, WorkspaceMetadataVersionModule, WorkspaceCacheStorageModule, ObjectMetadataModule, @@ -62,7 +58,7 @@ import { UpdateFieldInput } from './dtos/update-field.input'; ViewFilterModule, ViewGroupModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, FlatFieldMetadataModule, IndexMetadataModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts index e9478580caf..03b26660c13 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/services/field-metadata.service.ts @@ -22,9 +22,9 @@ import { fromCreateFieldInputToFlatFieldMetadatasToCreate } from 'src/engine/met import { fromDeleteFieldInputToFlatFieldMetadatasToDelete } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-delete-field-input-to-flat-field-metadatas-to-delete.util'; import { fromUpdateFieldInputToFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/from-update-field-input-to-flat-field-metadata.util'; import { throwOnFieldInputTranspilationsError } from 'src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util'; -import { EMPTY_ORCHESTRATOR_FAILURE_REPORT } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-failure-report.constant'; -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'; +import { EMPTY_ORCHESTRATOR_FAILURE_REPORT } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-failure-report.constant'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class FieldMetadataService extends TypeOrmQueryService { @@ -123,7 +123,7 @@ export class FieldMetadataService extends TypeOrmQueryService { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { - workspaceMigrationBuilderExceptionV2Formatter(error, i18n); + if (error instanceof WorkspaceMigrationBuilderException) { + workspaceMigrationBuilderExceptionFormatter(error, i18n); } if (error instanceof InvalidMetadataException) { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-agent/services/workspace-flat-agent-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-agent/services/workspace-flat-agent-map-cache.service.ts index 8950c12f1c1..e991367c597 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-agent/services/workspace-flat-agent-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-agent/services/workspace-flat-agent-map-cache.service.ts @@ -10,7 +10,7 @@ import { type FlatAgentMaps } from 'src/engine/metadata-modules/flat-agent/types import { transformAgentEntityToFlatAgent } from 'src/engine/metadata-modules/flat-agent/utils/transform-agent-entity-to-flat-agent.util'; import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatAgentMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-agent/utils/transform-standard-agent-definition-to-flat-agent.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-agent/utils/transform-standard-agent-definition-to-flat-agent.util.ts deleted file mode 100644 index 0238bf7631d..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/flat-agent/utils/transform-standard-agent-definition-to-flat-agent.util.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { v4 } from 'uuid'; - -import { type AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; -import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; -import { type StandardAgentDefinition } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-agents/types/standard-agent-definition.interface'; - -export const transformStandardAgentDefinitionToFlatAgent = ({ - standardAgentDefinition, - workspaceId, - existingAgentEntity, -}: { - standardAgentDefinition: StandardAgentDefinition; - workspaceId: string; - existingAgentEntity?: Pick< - AgentEntity, - 'createdAt' | 'deletedAt' | 'updatedAt' | 'id' - >; -}): FlatAgent => { - const { - standardRoleId: _standardRoleId, - outputStrategy: _outputStrategy, - ...agentData - } = standardAgentDefinition; - const createdAt = new Date().toISOString(); - - return { - id: existingAgentEntity?.id ?? v4(), - createdAt: existingAgentEntity?.createdAt?.toISOString() ?? createdAt, - updatedAt: existingAgentEntity?.updatedAt?.toISOString() ?? createdAt, - deletedAt: existingAgentEntity?.deletedAt?.toISOString() ?? null, - ...agentData, - workspaceId, - universalIdentifier: standardAgentDefinition.standardId, - }; -}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-relations.constant.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-relations.constant.ts index a9eccb54fe1..4a71495f287 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-relations.constant.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/constant/all-metadata-relations.constant.ts @@ -11,7 +11,7 @@ import { type ExtractEntityOneToManyEntityRelationProperties } from 'src/engine/ import { type FromMetadataEntityToMetadataName } from 'src/engine/metadata-modules/flat-entity/types/from-metadata-entity-to-metadata-name.type'; import { type MetadataEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-entity.type'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; -import { type SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { type SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; type ManyToOneRelationValue< TSourceMetadataName extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-by-metadata-engine-name-test.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-by-metadata-engine-name-test.type.ts index a39ac6ed81e..c4d9bdcace1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-by-metadata-engine-name-test.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-by-metadata-engine-name-test.type.ts @@ -4,13 +4,13 @@ import { type Expect } from 'twenty-shared/testing'; import { type AllFlatEntityTypesByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name'; import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; import { type WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; -import { type WorkspaceMigrationActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2'; +import { type WorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common'; type ExpectedGenericFlatEntityInformation = { actions: { [P in WorkspaceMigrationActionType]: - | WorkspaceMigrationActionV2 - | WorkspaceMigrationActionV2[]; + | WorkspaceMigrationAction + | WorkspaceMigrationAction[]; }; flatEntity: SyncableFlatEntity; }; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts index f1e837a6f05..3d2711d4c6f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name.ts @@ -44,107 +44,107 @@ import { type CreateAgentAction, type DeleteAgentAction, type UpdateAgentAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service'; import { type CreateCronTriggerAction, type DeleteCronTriggerAction, type UpdateCronTriggerAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type'; import { type CreateDatabaseEventTriggerAction, type DeleteDatabaseEventTriggerAction, type UpdateDatabaseEventTriggerAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type'; import { type CreateFieldAction, type DeleteFieldAction, type UpdateFieldAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; import { type CreateIndexAction, type DeleteIndexAction, type UpdateIndexAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action'; import { type CreateObjectAction, type DeleteObjectAction, type UpdateObjectAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; import { type CreatePageLayoutTabAction, type DeletePageLayoutTabAction, type UpdatePageLayoutTabAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type'; import { type CreatePageLayoutWidgetAction, type DeletePageLayoutWidgetAction, type UpdatePageLayoutWidgetAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type'; import { type CreatePageLayoutAction, type DeletePageLayoutAction, type UpdatePageLayoutAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type'; import { type CreateRoleTargetAction, type DeleteRoleTargetAction, type UpdateRoleTargetAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type'; import { type CreateRoleAction, type DeleteRoleAction, type UpdateRoleAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type'; import { type CreateRouteTriggerAction, type DeleteRouteTriggerAction, type UpdateRouteTriggerAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type'; import { type CreateRowLevelPermissionPredicateGroupAction, type DeleteRowLevelPermissionPredicateGroupAction, type UpdateRowLevelPermissionPredicateGroupAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type'; import { type CreateRowLevelPermissionPredicateAction, type DeleteRowLevelPermissionPredicateAction, type UpdateRowLevelPermissionPredicateAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type'; import { type CreateServerlessFunctionAction, type DeleteServerlessFunctionAction, type UpdateServerlessFunctionAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type'; import { type CreateSkillAction, type DeleteSkillAction, type UpdateSkillAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type'; import { type CreateViewFieldAction, type DeleteViewFieldAction, type UpdateViewFieldAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/workspace-migration-view-field-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type'; import { type CreateViewFilterGroupAction, type DeleteViewFilterGroupAction, type UpdateViewFilterGroupAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type'; import { type CreateViewFilterAction, type DeleteViewFilterAction, type UpdateViewFilterAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type'; import { type CreateViewGroupAction, type DeleteViewGroupAction, type UpdateViewGroupAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type'; import { type CreateViewAction, type DeleteViewAction, type UpdateViewAction, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/types/workspace-migration-view-action-v2.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type'; export type AllFlatEntityTypesByMetadataName = { fieldMetadata: { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-many-to-one-entity-relation-properties.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-many-to-one-entity-relation-properties.type.ts index 2b321eb309a..3b739ef8ca3 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-many-to-one-entity-relation-properties.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-many-to-one-entity-relation-properties.type.ts @@ -1,7 +1,7 @@ import { type Relation } from 'typeorm'; -import { type AllNonWorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/all-non-workspace-related-entity.type'; -import { type WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { type AllNonWorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/all-non-workspace-related-entity.type'; +import { type WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; export type ExtractEntityManyToOneEntityRelationProperties< T, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-one-to-many-entity-relation-properties.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-one-to-many-entity-relation-properties.type.ts index 30b60050dbb..16c0b5a2bce 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-one-to-many-entity-relation-properties.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-one-to-many-entity-relation-properties.type.ts @@ -1,7 +1,7 @@ import { type Relation } from 'typeorm'; -import { type AllNonWorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/all-non-workspace-related-entity.type'; -import { type WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { type AllNonWorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/all-non-workspace-related-entity.type'; +import { type WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; export type ExtractEntityOneToManyEntityRelationProperties< T, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-related-entity-properties.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-related-entity-properties.type.ts index dd8e610dd6d..cc5b9c88059 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-related-entity-properties.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/extract-entity-related-entity-properties.type.ts @@ -1,7 +1,7 @@ import { type ExtractEntityManyToOneEntityRelationProperties } from 'src/engine/metadata-modules/flat-entity/types/extract-entity-many-to-one-entity-relation-properties.type'; import { type ExtractEntityOneToManyEntityRelationProperties } from 'src/engine/metadata-modules/flat-entity/types/extract-entity-one-to-many-entity-relation-properties.type'; -import { type AllNonWorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/all-non-workspace-related-entity.type'; -import { type WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { type AllNonWorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/all-non-workspace-related-entity.type'; +import { type WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; export type ExtractEntityRelatedEntityProperties< T, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity-property-update.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity-property-update.type.ts index f247cdb4af3..cb2c54202d9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity-property-update.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity-property-update.type.ts @@ -2,7 +2,7 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type FlatEntityPropertiesToCompare } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-to-compare.type'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; -import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type'; +import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/types/property-update.type'; export type FlatEntityPropertyUpdate< T extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts index c845333c49c..a0e7570fd9c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/flat-entity.type.ts @@ -1,8 +1,8 @@ import { type CastRecordTypeOrmDatePropertiesToString } from 'src/engine/metadata-modules/flat-entity/types/cast-record-typeorm-date-properties-to-string.type'; import { type ExtractEntityOneToManyEntityRelationProperties } from 'src/engine/metadata-modules/flat-entity/types/extract-entity-one-to-many-entity-relation-properties.type'; import { type ExtractEntityRelatedEntityProperties } from 'src/engine/metadata-modules/flat-entity/types/extract-entity-related-entity-properties.type'; -import { type RemoveSuffix } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/remove-suffix.type'; -import { type SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { type SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; +import { type RemoveSuffix } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/remove-suffix.type'; import { type NonNullableProperties } from 'src/types/non-nullable-properties.type'; export type SyncableFlatEntity = NonNullableProperties< diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/from-metadata-entity-to-metadata-name.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/from-metadata-entity-to-metadata-name.type.ts index 3e287eed4bc..c5fe3f8ac6d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/from-metadata-entity-to-metadata-name.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/from-metadata-entity-to-metadata-name.type.ts @@ -1,7 +1,7 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type AllFlatEntityTypesByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name'; -import { type SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { type SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; export type FromMetadataEntityToMetadataName = { [P in AllMetadataName]: AllFlatEntityTypesByMetadataName[P] extends { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type.ts index f956bae1a16..b0a71a9c959 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type.ts @@ -1,9 +1,9 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type AllFlatEntityTypesByMetadataName } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-types-by-metadata-name'; -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type WorkspaceMigrationActionType = | BaseCreateWorkspaceMigrationAction['type'] diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/order-object-properties.util.spec.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/__tests__/order-object-properties.util.spec.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/order-object-properties.util.spec.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/__tests__/order-object-properties.util.spec.ts index c0e2e230f1c..f926ce1b125 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/order-object-properties.util.spec.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/__tests__/order-object-properties.util.spec.ts @@ -1,4 +1,4 @@ -import { orderObjectProperties } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/order-object-properties.util'; +import { orderObjectProperties } from 'src/engine/metadata-modules/flat-entity/utils/order-object-properties.util'; describe('orderObjectProperties', () => { it('orders simple object properties', () => { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts index 22a1ebc0daa..ab18c9363bf 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/add-flat-entity-to-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts @@ -12,8 +12,8 @@ import { type MetadataRelatedFlatEntityMapsKeys } from 'src/engine/metadata-modu import { type MetadataFlatEntityAndRelatedFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-related-types.type'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { getMetadataFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-flat-entity-maps-key.util'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; -import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; type AddFlatEntityToFlatEntityAndRelatedEntityMapsThroughMutationOrThrowArgs< T extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts index 48dfb383961..a2c92bb0023 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util.ts @@ -12,8 +12,8 @@ import { type MetadataRelatedFlatEntityMapsKeys } from 'src/engine/metadata-modu import { type MetadataFlatEntityAndRelatedFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-related-types.type'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { getMetadataFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-flat-entity-maps-key.util'; -import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; -import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; +import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; +import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; type DeleteFlatEntityFromFlatEntityAndRelatedEntityMapsThroughMutationOrThrowArgs< T extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/order-object-properties.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/order-object-properties.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/order-object-properties.util.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/order-object-properties.util.ts diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/transform-flat-entity-for-comparison.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/transform-flat-entity-for-comparison.util.ts index 368f5064572..f99840e5e29 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/transform-flat-entity-for-comparison.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-entity/utils/transform-flat-entity-for-comparison.util.ts @@ -1,5 +1,5 @@ import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; -import { orderObjectProperties } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/order-object-properties.util'; +import { orderObjectProperties } from 'src/engine/metadata-modules/flat-entity/utils/order-object-properties.util'; export function transformFlatEntityForComparison< TFlatEntity extends SyncableFlatEntity, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts index 5a759756a47..f33b7965498 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/flat-field-metadata.module.ts @@ -2,7 +2,7 @@ import { Module } from '@nestjs/common'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service'; -import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service'; +import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service'; @Module({ imports: [FeatureFlagModule], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts index b1bf20bcd04..819478d6c3a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service.ts @@ -11,7 +11,7 @@ import { FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/fl import { validateEnumSelectFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-enum-flat-field-metadata.util'; import { validateMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util'; import { validateMorphRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-relation-flat-field-metadata.util'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; const DEFAULT_NO_VALIDATION = (): FlatFieldMetadataValidationError[] => []; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts index cdf44c2d26e..7004c04ce59 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/services/workspace-flat-field-metadata-map-cache.service.ts @@ -16,7 +16,7 @@ import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatFieldMetadataMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-enum-flat-field-metadata-update-side-effects.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-enum-flat-field-metadata-update-side-effects.util.ts index feebe902b23..763f7f601b7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-enum-flat-field-metadata-update-side-effects.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-enum-flat-field-metadata-update-side-effects.util.ts @@ -11,7 +11,7 @@ import { type FlatViewGroupsToDeleteUpdateAndCreate, recomputeViewGroupsOnFlatFieldMetadataOptionsUpdate, } from 'src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-groups-on-flat-field-metadata-options-update.util'; -import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type'; +import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/types/property-update.type'; type HandleEnumFlatFieldMetadataOptionsUpdateSideEffectsArgs = FromTo< FlatFieldMetadata, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-label-identifier-changes-during-field-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-label-identifier-changes-during-field-update.util.ts index e3af15d3fcf..0158d415ebd 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-label-identifier-changes-during-field-update.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/handle-label-identifier-changes-during-field-update.util.ts @@ -10,8 +10,8 @@ import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metada import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { type SearchableFieldType } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type SearchableFieldType } from 'src/engine/workspace-manager/utils/is-searchable-field.util'; type HandleLabelIdentifierChangesDuringFieldUpdateArgs = { flatObjectMetadata: FlatObjectMetadata; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-filters-on-flat-field-metadata-options-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-filters-on-flat-field-metadata-options-update.util.ts index 888a947b458..ba28f939777 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-filters-on-flat-field-metadata-options-update.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-filters-on-flat-field-metadata-options-update.util.ts @@ -11,7 +11,7 @@ import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metada import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { compareTwoFlatFieldMetadataEnumOptions } from 'src/engine/metadata-modules/flat-field-metadata/utils/compare-two-flat-field-metadata-enum-options.util'; import { type FlatViewFilter } from 'src/engine/metadata-modules/flat-view-filter/types/flat-view-filter.type'; -import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type'; +import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/types/property-update.type'; type RecomputeViewFiltersOnFlatFieldMetadataOptionsUpdateArgs = { fromFlatFieldMetadata: FlatFieldMetadata; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-groups-on-flat-field-metadata-options-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-groups-on-flat-field-metadata-options-update.util.ts index cb204167dc9..693c9ce00fe 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-groups-on-flat-field-metadata-options-update.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/recompute-view-groups-on-flat-field-metadata-options-update.util.ts @@ -13,7 +13,7 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-m import { compareTwoFlatFieldMetadataEnumOptions } from 'src/engine/metadata-modules/flat-field-metadata/utils/compare-two-flat-field-metadata-enum-options.util'; import { type FlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/types/flat-view-group.type'; import { reduceFlatViewGroupsByViewId } from 'src/engine/metadata-modules/flat-view-group/utils/reduce-flat-view-groups-by-view-id.util'; -import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type'; +import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/types/property-update.type'; type RecomputeViewGroupsOnFlatFieldMetadataOptionsUpdateArgs = { fromFlatFieldMetadata: FlatFieldMetadata; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts index 13e8ea553bd..f5d5e3ea800 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/utils/throw-on-field-input-transpilations-error.util.ts @@ -2,8 +2,8 @@ import { type FieldInputTranspilationResult, type SuccessfulFieldInputTranspilation, } from 'src/engine/metadata-modules/flat-field-metadata/types/field-input-transpilation-result.type'; -import { EMPTY_ORCHESTRATOR_FAILURE_REPORT } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-failure-report.constant'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; +import { EMPTY_ORCHESTRATOR_FAILURE_REPORT } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-failure-report.constant'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; // This could be improved by still running the build and validate with available valid inputs type ThrowOnFieldInputTranspilationsErrorArgs = ( @@ -21,8 +21,8 @@ export const throwOnFieldInputTranspilationsError: ThrowOnFieldInputTranspilatio ); if (failedInputTranspilationErrors.length > 0) { - // We should create a dedicated exceptions instead of hacking through the WorkspaceMigrationBuilderExceptionV2 - throw new WorkspaceMigrationBuilderExceptionV2( + // We should create a dedicated exceptions instead of hacking through the WorkspaceMigrationBuilderException + throw new WorkspaceMigrationBuilderException( { report: { ...EMPTY_ORCHESTRATOR_FAILURE_REPORT(), diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts index 7458455059a..d8268694414 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util.ts @@ -11,7 +11,7 @@ import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modul import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { getObjectFieldNamesAndJoinColumnNames } from 'src/engine/metadata-modules/flat-field-metadata/utils/get-object-field-names-and-join-column-names.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; const getReservedCompositeFieldNames = ( objectFlatFieldMetadatas: FlatFieldMetadata[], diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name.util.ts index d6618275ac9..ba016193ec8 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name.util.ts @@ -6,7 +6,7 @@ import { FieldMetadataExceptionCode } from 'src/engine/metadata-modules/field-me import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type'; import { IDENTIFIER_MAX_CHAR_LENGTH } from 'src/engine/metadata-modules/utils/constants/identifier-max-char-length.constants'; import { IDENTIFIER_MIN_CHAR_LENGTH } from 'src/engine/metadata-modules/utils/constants/identifier-min-char-length.constants'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; const STARTS_WITH_LOWER_CASE_AND_CONTAINS_ONLY_CAPS_AND_LOWER_LETTERS_AND_NUMBER_STRING_REGEX = /^[a-z][a-zA-Z0-9]*$/; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-join-column-name.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-join-column-name.util.ts index 59a9ce69690..b4e0d3fd20c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-join-column-name.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-join-column-name.util.ts @@ -9,7 +9,7 @@ import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/ import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { validateFlatFieldMetadataNameAvailability } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; export const validateMorphOrRelationFlatFieldJoinColumName = ({ flatFieldMetadata, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts index adc7546b6b2..64490fca7ca 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-metadata.util.ts @@ -8,7 +8,7 @@ import { type FlatFieldMetadataTypeValidationArgs } from 'src/engine/metadata-mo import { type FlatFieldMetadataValidationError } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata-validation-error.type'; import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util'; import { validateMorphOrRelationFlatFieldJoinColumName } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-morph-or-relation-flat-field-join-column-name.util'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; export const validateMorphOrRelationFlatFieldMetadata = ({ flatEntityToValidate: flatFieldMetadataToValidate, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-index-metadata/services/workspace-flat-index-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-index-metadata/services/workspace-flat-index-map-cache.service.ts index 69def243c91..3090d8dd507 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-index-metadata/services/workspace-flat-index-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-index-metadata/services/workspace-flat-index-map-cache.service.ts @@ -11,7 +11,7 @@ import { FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metada import { fromIndexMetadataEntityToFlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/utils/from-index-metadata-entity-to-flat-index-metadata.util'; import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatIndexMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts index 057658ce578..3ad49bc5f5e 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/services/workspace-flat-object-metadata-map-cache.service.ts @@ -15,7 +15,7 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatObjectMetadataMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-search-vector-field-after-label-identifier-update.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-search-vector-field-after-label-identifier-update.util.ts index 9fa89f87543..e23da5bf68d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-search-vector-field-after-label-identifier-update.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/utils/recompute-search-vector-field-after-label-identifier-update.util.ts @@ -11,8 +11,8 @@ import { ObjectMetadataExceptionCode, } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { type SearchableFieldType } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type SearchableFieldType } from 'src/engine/workspace-manager/utils/is-searchable-field.util'; type RecomputeSearchVectorFieldAfterLabelIdentifierUpdateArgs = { existingFlatObjectMetadata: FlatObjectMetadata; 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 a8c3f442298..44b676dfb2d 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 @@ -4,8 +4,8 @@ import { v4 } from 'uuid'; import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; +import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/metadata-modules/flat-view-field/constants/default-view-field-size.constant'; 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 = { existingFlatObjectMetadata: FlatObjectMetadata; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts index 09486a787f4..b183f355e11 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-identifiers.util.ts @@ -1,9 +1,9 @@ import { msg } from '@lingui/core/macro'; +import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined, isLabelIdentifierFieldMetadataTypes, } from 'twenty-shared/utils'; -import { FieldMetadataType } from 'twenty-shared/types'; import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; @@ -12,7 +12,7 @@ import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-fiel import { type FlatObjectMetadataValidationError } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata-validation-error.type'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; export const validateFlatObjectMetadataIdentifiers = ({ flatObjectMetadata, diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name-and-labels.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name-and-labels.util.ts index ff6097a9138..bce80c72470 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name-and-labels.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name-and-labels.util.ts @@ -8,7 +8,7 @@ import { areFlatObjectMetadataNamesSyncedWithLabels } from 'src/engine/metadata- import { validateFlatObjectMetadataLabel } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-label.util'; import { validateFlatObjectMetadataNames } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name.util'; import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; type ValidateNoOtherObjectWithSameNameExistsOrThrowsParams = { objectMetadataNameSingular: string; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts index 359b93aeccf..d8dacdc50e9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-tab/services/workspace-flat-page-layout-tab-map-cache.service.ts @@ -12,7 +12,7 @@ import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatPageLayoutTabMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service.ts index e7af3da97bd..896e65bb1e7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service.ts @@ -18,7 +18,7 @@ import { validateStandaloneRichTextFlatPageLayoutWidgetForCreation } from 'src/e import { validateStandaloneRichTextFlatPageLayoutWidgetForUpdate } from 'src/engine/metadata-modules/flat-page-layout-widget/validators/utils/validate-standalone-rich-text-flat-page-layout-widget-for-update.util'; import { WidgetType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-type.enum'; import { PageLayoutWidgetExceptionCode } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; export type GenericValidateFlatPageLayoutWidgetTypeSpecificitiesArgs = FlatEntityValidationArgs<'pageLayoutWidget'> & { diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts index c950020538c..d7323af313d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout-widget/services/workspace-flat-page-layout-widget-map-cache.service.ts @@ -10,7 +10,7 @@ import { FlatPageLayoutWidgetMaps } from 'src/engine/metadata-modules/flat-page- import { fromPageLayoutWidgetEntityToFlatPageLayoutWidget } from 'src/engine/metadata-modules/flat-page-layout-widget/utils/from-page-layout-widget-entity-to-flat-page-layout-widget.util'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatPageLayoutWidgetMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts index ea535ea3fad..a436461d0d9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-page-layout/services/workspace-flat-page-layout-map-cache.service.ts @@ -12,7 +12,7 @@ import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatPageLayoutMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-role-target/services/workspace-flat-role-target-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-role-target/services/workspace-flat-role-target-map-cache.service.ts index 341680842a5..56cf71f936a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-role-target/services/workspace-flat-role-target-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-role-target/services/workspace-flat-role-target-map-cache.service.ts @@ -10,7 +10,7 @@ import { type FlatRoleTargetMaps } from 'src/engine/metadata-modules/flat-role-t import { fromRoleTargetsEntityToFlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/utils/from-role-target-entity-to-flat-role-target.util'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatRoleTargetMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-role/utils/from-standard-role-definition-to-flat-role.util.ts b/packages/twenty-server/src/engine/metadata-modules/flat-role/utils/from-standard-role-definition-to-flat-role.util.ts deleted file mode 100644 index 7c88e821685..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/flat-role/utils/from-standard-role-definition-to-flat-role.util.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { removePropertiesFromRecord } from 'twenty-shared/utils'; -import { v4 } from 'uuid'; - -import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; -import { type StandardRoleDefinition } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/types/standard-role-definition.interface'; - -export const fromStandardRoleDefinitionToFlatRole = ( - standardRoleDefinition: StandardRoleDefinition, - workspaceId: string, -): FlatRole => { - const createdAt = new Date().toISOString(); - - return { - ...removePropertiesFromRecord(standardRoleDefinition, ['permissionFlags']), - id: v4(), - workspaceId, - universalIdentifier: standardRoleDefinition.standardId || v4(), - createdAt, - updatedAt: createdAt, - permissionFlagIds: [], - fieldPermissionIds: [], - objectPermissionIds: [], - roleTargetIds: [], - }; -}; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-group-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-group-map-cache.service.ts index 3636f9e3fd1..09abb555191 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-group-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-group-map-cache.service.ts @@ -12,7 +12,7 @@ import { fromRowLevelPermissionPredicateGroupEntityToFlatRowLevelPermissionPredi import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity'; import { type FlatRowLevelPermissionPredicateGroupMaps } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-group-maps.type'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatRowLevelPermissionPredicateGroupMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-map-cache.service.ts index a66e0392ff7..8ae68932858 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-row-level-permission-predicate/services/workspace-flat-row-level-permission-predicate-map-cache.service.ts @@ -12,7 +12,7 @@ import { fromRowLevelPermissionPredicateEntityToFlatRowLevelPermissionPredicate import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity'; import { type FlatRowLevelPermissionPredicateMaps } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-maps.type'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatRowLevelPermissionPredicateMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-skill/services/workspace-flat-skill-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-skill/services/workspace-flat-skill-map-cache.service.ts index 5a71f03c667..ffb4fdcdffe 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-skill/services/workspace-flat-skill-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-skill/services/workspace-flat-skill-map-cache.service.ts @@ -10,7 +10,7 @@ import { type FlatSkillMaps } from 'src/engine/metadata-modules/flat-skill/types import { fromSkillEntityToFlatSkill } from 'src/engine/metadata-modules/flat-skill/utils/from-skill-entity-to-flat-skill.util'; import { SkillEntity } from 'src/engine/metadata-modules/skill/entities/skill.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatSkillMaps') diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/default-view-field-size.constant.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE.ts rename to packages/twenty-server/src/engine/metadata-modules/flat-view-field/constants/default-view-field-size.constant.ts diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-view-field/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 index 95e98721fd0..d80e2c2aac4 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-view-field/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 @@ -10,7 +10,7 @@ import { FlatViewFieldMaps } from 'src/engine/metadata-modules/flat-view-field/t 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 { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatViewFieldMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-view-field/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 index 3e245227594..fde05ca3cff 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-view-field/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,9 +1,9 @@ import { trimAndRemoveDuplicatedWhitespacesFromObjectStringProperties } from 'twenty-shared/utils'; import { v4 } from 'uuid'; +import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/metadata-modules/flat-view-field/constants/default-view-field-size.constant'; 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 type FromCreateViewFieldInputToFlatViewFieldToCreateArgs = { createViewFieldInput: CreateViewFieldInput; diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-view-filter-group/services/workspace-flat-view-filter-group-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-filter-group/services/workspace-flat-view-filter-group-map-cache.service.ts index 6c0ccda72e7..2bb00fa5a3b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-view-filter-group/services/workspace-flat-view-filter-group-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-filter-group/services/workspace-flat-view-filter-group-map-cache.service.ts @@ -12,7 +12,7 @@ import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-g import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatViewFilterGroupMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-view-filter/services/workspace-flat-view-filter-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-filter/services/workspace-flat-view-filter-map-cache.service.ts index 83c8421d5ec..7aacbb4ba38 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-view-filter/services/workspace-flat-view-filter-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-filter/services/workspace-flat-view-filter-map-cache.service.ts @@ -10,7 +10,7 @@ import { type FlatViewFilterMaps } from 'src/engine/metadata-modules/flat-view-f import { fromViewFilterEntityToFlatViewFilter } from 'src/engine/metadata-modules/flat-view-filter/utils/from-view-filter-entity-to-flat-view-filter.util'; import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatViewFilterMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/flat-view-group/services/workspace-flat-view-group-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/flat-view-group/services/workspace-flat-view-group-map-cache.service.ts index fc6c40cbfa8..96190ce4910 100644 --- a/packages/twenty-server/src/engine/metadata-modules/flat-view-group/services/workspace-flat-view-group-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/flat-view-group/services/workspace-flat-view-group-map-cache.service.ts @@ -10,7 +10,7 @@ import { FlatViewGroupMaps } from 'src/engine/metadata-modules/flat-view-group/t import { fromViewGroupEntityToFlatViewGroup } from 'src/engine/metadata-modules/flat-view-group/utils/from-view-group-entity-to-flat-view-group.util'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatViewGroupMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/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 index 5ee854ffaf4..3081da09bce 100644 --- a/packages/twenty-server/src/engine/metadata-modules/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 @@ -15,7 +15,7 @@ import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatViewMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.entity.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.entity.ts index 49d2813aaa7..17e2a38e653 100644 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.entity.ts @@ -15,7 +15,7 @@ import { import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Unique('IDX_INDEX_METADATA_NAME_WORKSPACE_ID_OBJECT_METADATA_ID_UNIQUE', [ 'name', diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.module.ts index 25143df4594..11264848330 100644 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.module.ts @@ -10,9 +10,7 @@ import { IndexMetadataDTO } from 'src/engine/metadata-modules/index-metadata/dto import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { IndexMetadataResolver } from 'src/engine/metadata-modules/index-metadata/index-metadata.resolver'; -import { IndexMetadataService } from 'src/engine/metadata-modules/index-metadata/index-metadata.service'; import { ObjectMetadataGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/object-metadata/interceptors/object-metadata-graphql-api-exception.interceptor'; -import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -23,9 +21,7 @@ import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace- IndexMetadataEntity, IndexFieldMetadataEntity, ]), - WorkspaceMigrationModule, ], - services: [IndexMetadataService], resolvers: [ { EntityClass: IndexMetadataEntity, @@ -47,7 +43,7 @@ import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace- ], }), ], - providers: [IndexMetadataService, IndexMetadataResolver], - exports: [IndexMetadataService], + providers: [IndexMetadataResolver], + exports: [], }) export class IndexMetadataModule {} diff --git a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts deleted file mode 100644 index 359f2c8030a..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/index-metadata/index-metadata.service.ts +++ /dev/null @@ -1,515 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; - -import isEmpty from 'lodash.isempty'; -import { - type CompositeType, - compositeTypeDefinitions, - type FieldMetadataType, -} from 'twenty-shared/types'; -import { isDefined } from 'twenty-shared/utils'; -import { In, type QueryRunner, Repository } from 'typeorm'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; -import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; -import { - IndexMetadataException, - IndexMetadataExceptionCode, -} from 'src/engine/metadata-modules/index-metadata/index-field-metadata.exception'; -import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { type IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { generateDeterministicIndexName } from 'src/engine/metadata-modules/index-metadata/utils/generate-deterministic-index-name'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util'; -import { - type WorkspaceMigrationIndexAction, - WorkspaceMigrationIndexActionType, - type WorkspaceMigrationTableAction, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; -import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; - -@Injectable() -export class IndexMetadataService { - constructor( - @InjectRepository(IndexMetadataEntity) - private readonly indexMetadataRepository: Repository, - private readonly workspaceMigrationService: WorkspaceMigrationService, - ) {} - - async createIndexMetadata({ - workspaceId, - objectMetadata, - fieldMetadataToIndex, - isUnique, - isCustom, - indexType, - indexWhereClause, - queryRunner, - }: { - workspaceId: string; - objectMetadata: ObjectMetadataEntity; - fieldMetadataToIndex: Partial[]; - isUnique: boolean; - isCustom: boolean; - indexType?: IndexType; - indexWhereClause?: string; - queryRunner?: QueryRunner; - }) { - const tableName = computeObjectTargetTable(objectMetadata); - - const columnNames: string[] = fieldMetadataToIndex.map( - (fieldMetadata) => fieldMetadata.name as string, - ); - - if (isEmpty(columnNames)) { - throw new Error('Column names must not be empty'); - } - - const indexName = `IDX_${generateDeterministicIndexName([tableName, ...columnNames])}`; - - let result: IndexMetadataEntity; - - const indexMetadataRepository = queryRunner - ? queryRunner.manager.getRepository(IndexMetadataEntity) - : this.indexMetadataRepository; - - const existingIndex = await indexMetadataRepository.findOne({ - where: { - name: indexName, - workspaceId, - objectMetadataId: objectMetadata.id, - }, - }); - - if (isDefined(existingIndex)) { - throw new Error( - `Index ${indexName} on object metadata ${objectMetadata.nameSingular} already exists`, - ); - } - - try { - result = await indexMetadataRepository.save({ - name: indexName, - indexFieldMetadatas: fieldMetadataToIndex.map( - (fieldMetadata, index) => ({ - fieldMetadataId: fieldMetadata.id, - order: index, - }), - ), - workspaceId, - objectMetadataId: objectMetadata.id, - ...(isDefined(indexType) ? { indexType } : {}), - ...(isDefined(indexWhereClause) ? { indexWhereClause } : {}), - ...(isDefined(isUnique) ? { isUnique } : {}), - isCustom, - }); - } catch { - throw new Error( - `Failed to create index ${indexName} on object metadata ${objectMetadata.nameSingular}`, - ); - } - - if (!result) { - throw new Error( - `Failed to return saved index ${indexName} on object metadata ${objectMetadata.nameSingular}`, - ); - } - } - - async createIndex({ - workspaceId, - objectMetadata, - fieldMetadataToIndex, - isUnique, - isCustom, - indexType, - indexWhereClause, - queryRunner, - }: { - workspaceId: string; - objectMetadata: ObjectMetadataEntity; - fieldMetadataToIndex: FieldMetadataEntity[]; - isUnique: boolean; - isCustom: boolean; - indexType?: IndexType; - indexWhereClause?: string; - queryRunner?: QueryRunner; - }) { - await this.createIndexMetadata({ - workspaceId, - objectMetadata, - fieldMetadataToIndex, - indexType, - indexWhereClause, - isUnique, - isCustom, - queryRunner, - }); - - await this.createIndexCreationMigration({ - workspaceId, - objectMetadata, - fieldMetadataToIndex, - isUnique, - indexType, - indexWhereClause, - queryRunner, - }); - } - - async recomputeUniqueCustomIndexMetadataForField({ - workspaceId, - objectMetadata, - updatedFieldMetadata, - queryRunner, - }: { - workspaceId: string; - objectMetadata: ObjectMetadataEntity; - updatedFieldMetadata: FieldMetadataEntity; - queryRunner?: QueryRunner; - }) { - const indexMetadataRepository = queryRunner - ? queryRunner.manager.getRepository(IndexMetadataEntity) - : this.indexMetadataRepository; - - const [index] = await indexMetadataRepository.find({ - where: { - objectMetadataId: objectMetadata.id, - workspaceId, - indexFieldMetadatas: { - fieldMetadataId: In([updatedFieldMetadata.id]), - }, - isUnique: true, - isCustom: true, - }, - relations: ['indexFieldMetadatas.fieldMetadata'], - }); - - if (!isDefined(index)) return; - - const updatedIndex = await indexMetadataRepository.save({ - ...index, - name: `IDX_${generateDeterministicIndexName([ - computeObjectTargetTable(objectMetadata), - updatedFieldMetadata.name, - ])}`, - }); - - return { - updatedIndex, - previousName: index.name, - }; - } - - async recomputeIndexMetadataForObject( - workspaceId: string, - updatedObjectMetadata: Pick< - ObjectMetadataEntity, - 'nameSingular' | 'isCustom' | 'id' - >, - queryRunner?: QueryRunner, - ) { - const indexMetadataRepository = queryRunner - ? queryRunner.manager.getRepository(IndexMetadataEntity) - : this.indexMetadataRepository; - - const indexesToRecompute = await indexMetadataRepository.find({ - where: { - objectMetadataId: updatedObjectMetadata.id, - workspaceId, - }, - relations: ['indexFieldMetadatas.fieldMetadata'], - }); - - const recomputedIndexes: { - indexMetadata: IndexMetadataEntity; - previousName: string; - newName: string; - }[] = []; - - for (const index of indexesToRecompute) { - const previousIndexName = index.name; - const tableName = computeObjectTargetTable(updatedObjectMetadata); - - const indexFieldsMetadataOrdered = index.indexFieldMetadatas.sort( - (a, b) => a.order - b.order, - ); - - const columnNames = indexFieldsMetadataOrdered.map( - (indexFieldMetadata) => indexFieldMetadata.fieldMetadata.name, - ); - - const newIndexName = `IDX_${generateDeterministicIndexName([ - tableName, - ...columnNames, - ])}`; - - await indexMetadataRepository.update(index.id, { - name: newIndexName, - }); - - recomputedIndexes.push({ - indexMetadata: index, - previousName: previousIndexName, - newName: newIndexName, - }); - } - - return recomputedIndexes; - } - - async deleteIndexMetadata({ - workspaceId, - objectMetadata, - fieldMetadataToIndex, - queryRunner, - }: { - workspaceId: string; - objectMetadata: Pick< - ObjectMetadataEntity, - 'nameSingular' | 'isCustom' | 'id' - >; - fieldMetadataToIndex: Partial[]; - queryRunner?: QueryRunner; - }) { - const tableName = computeObjectTargetTable(objectMetadata); - - const columnNames: string[] = fieldMetadataToIndex.map( - (fieldMetadata) => fieldMetadata.name as string, - ); - - if (isEmpty(columnNames)) { - throw new Error('Column names must not be empty'); - } - - const indexName = `IDX_${generateDeterministicIndexName([tableName, ...columnNames])}`; - - const indexMetadataRepository = queryRunner - ? queryRunner.manager.getRepository(IndexMetadataEntity) - : this.indexMetadataRepository; - - const indexMetadata = await indexMetadataRepository.findOne({ - where: { - name: indexName, - objectMetadataId: objectMetadata.id, - workspaceId, - }, - }); - - if (!indexMetadata) { - throw new Error(`Index metadata with name ${indexName} not found`); - } - - try { - await indexMetadataRepository.delete(indexMetadata.id); - } catch (error) { - throw new Error( - `Failed to delete index metadata with name ${indexName} (error: ${error.message})`, - ); - } - } - - computeIndexDeletionMigration({ - objectMetadata, - fieldMetadataToIndex, - isUnique, - }: { - objectMetadata: ObjectMetadataEntity; - fieldMetadataToIndex: Partial[]; - isUnique: boolean; - }) { - const tableName = computeObjectTargetTable(objectMetadata); - - const columnNames: string[] = fieldMetadataToIndex.map( - (fieldMetadata) => fieldMetadata.name as string, - ); - - const indexName = `IDX_${generateDeterministicIndexName([tableName, ...columnNames])}`; - - return { - name: tableName, - action: WorkspaceMigrationTableActionType.ALTER_INDEXES, - indexes: [ - { - action: WorkspaceMigrationIndexActionType.DROP, - name: indexName, - columns: [], - isUnique, - } satisfies WorkspaceMigrationIndexAction, - ], - } satisfies WorkspaceMigrationTableAction; - } - - computeIndexCreationMigration({ - objectMetadata, - fieldMetadataToIndex, - isUnique, - indexType, - indexWhereClause, - }: { - objectMetadata: ObjectMetadataEntity; - fieldMetadataToIndex: (Partial & { - type: FieldMetadataType; - name: string; - })[]; - isUnique: boolean; - indexType?: IndexType; - indexWhereClause?: string; - }) { - const tableName = computeObjectTargetTable(objectMetadata); - - const fieldNames: string[] = fieldMetadataToIndex.map( - (fieldMetadata) => fieldMetadata.name as string, - ); - - const indexName = `IDX_${generateDeterministicIndexName([tableName, ...fieldNames])}`; - - const columnNames = fieldMetadataToIndex.flatMap((field) => { - if (isCompositeFieldMetadataType(field.type)) { - if (!isUnique) - throw new IndexMetadataException( - `Non unique index cannot be created for composite field ${field.name}`, - IndexMetadataExceptionCode.INDEX_NOT_SUPPORTED_FOR_COMPOSITE_FIELD, - ); - - const compositeType = compositeTypeDefinitions.get( - field.type, - ) as CompositeType; - - const uniqueCompositeProperties = compositeType.properties.filter( - (property) => property.isIncludedInUniqueConstraint, - ); - - return uniqueCompositeProperties.map((subField) => - computeCompositeColumnName(field.name, subField), - ); - } - - return [field.name]; - }); - - return { - name: tableName, - action: WorkspaceMigrationTableActionType.ALTER_INDEXES, - indexes: [ - { - action: WorkspaceMigrationIndexActionType.CREATE, - columns: columnNames, - name: indexName, - isUnique, - where: indexWhereClause, - type: indexType, - }, - ], - } satisfies WorkspaceMigrationTableAction; - } - - async createIndexCreationMigration({ - workspaceId, - objectMetadata, - fieldMetadataToIndex, - isUnique, - indexType, - indexWhereClause, - queryRunner, - }: { - workspaceId: string; - objectMetadata: ObjectMetadataEntity; - fieldMetadataToIndex: FieldMetadataEntity[]; - isUnique: boolean; - indexType?: IndexType; - indexWhereClause?: string; - queryRunner?: QueryRunner; - }) { - const migration = this.computeIndexCreationMigration({ - objectMetadata, - fieldMetadataToIndex, - isUnique, - indexType, - indexWhereClause, - }); - - await this.workspaceMigrationService.createCustomMigration( - generateMigrationName(`create-${objectMetadata.nameSingular}-index`), - workspaceId, - [migration], - queryRunner, - ); - } - - createIndexRecomputeMigrationActions( - objectMetadata: Pick< - ObjectMetadataEntity, - 'nameSingular' | 'isCustom' | 'id' - >, - recomputedIndex: { - indexMetadata: IndexMetadataEntity; - previousName: string; - newName: string; - }, - ) { - const { previousName, newName, indexMetadata } = recomputedIndex; - - const tableName = computeObjectTargetTable(objectMetadata); - - const indexFieldsMetadataOrdered = indexMetadata.indexFieldMetadatas.sort( - (a, b) => a.order - b.order, - ); - - const columnNames = indexFieldsMetadataOrdered.map( - (indexFieldMetadata) => indexFieldMetadata.fieldMetadata.name, - ); - - return { - name: tableName, - action: WorkspaceMigrationTableActionType.ALTER_INDEXES, - indexes: [ - { - action: WorkspaceMigrationIndexActionType.DROP, - name: previousName, - columns: [], - isUnique: indexMetadata.isUnique, - } satisfies WorkspaceMigrationIndexAction, - { - action: WorkspaceMigrationIndexActionType.CREATE, - columns: columnNames, - name: newName, - isUnique: indexMetadata.isUnique, - where: indexMetadata.indexWhereClause, - type: indexMetadata.indexType, - } satisfies WorkspaceMigrationIndexAction, - ], - } satisfies WorkspaceMigrationTableAction; - } - - async createIndexRecomputeMigrations( - workspaceId: string, - objectMetadata: Pick< - ObjectMetadataEntity, - 'nameSingular' | 'isCustom' | 'id' - >, - recomputedIndexes: { - indexMetadata: IndexMetadataEntity; - previousName: string; - newName: string; - }[], - queryRunner?: QueryRunner, - ) { - for (const recomputedIndex of recomputedIndexes) { - const migration = this.createIndexRecomputeMigrationActions( - objectMetadata, - recomputedIndex, - ); - - await this.workspaceMigrationService.createCustomMigration( - generateMigrationName(`update-${objectMetadata.nameSingular}-index`), - workspaceId, - [migration], - queryRunner, - ); - } - } -} 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 fd31ece0a1b..5238f2d8bd3 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 @@ -17,7 +17,6 @@ import { ServerlessFunctionModule } from 'src/engine/metadata-modules/serverless import { SkillModule } from 'src/engine/metadata-modules/skill/skill.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'; @Module({ imports: [ @@ -33,7 +32,6 @@ import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace- AiChatModule, ViewModule, WorkspaceMetadataVersionModule, - WorkspaceMigrationModule, RoleModule, PermissionsModule, RouteTriggerModule, 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 fd392a46f17..b9b5b696024 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 @@ -18,7 +18,7 @@ import { type ObjectStandardOverridesDTO } from 'src/engine/metadata-modules/obj 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'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @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 767bae7af4a..d6370a96d17 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 @@ -32,13 +32,11 @@ import { ViewFieldModule } from 'src/engine/metadata-modules/view-field/view-fie import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; 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 { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module'; -import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -52,15 +50,13 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa TypeOrmModule.forFeature([FeatureFlagEntity, ViewEntity]), ApplicationModule, DataSourceModule, - WorkspaceMigrationModule, - WorkspaceMigrationRunnerModule, WorkspaceMetadataVersionModule, IndexMetadataModule, PermissionsModule, WorkspaceCacheStorageModule, WorkspaceDataSourceModule, FeatureFlagModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ViewModule, ViewFieldModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts index 05d764cd5c1..0f902368701 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.service.ts @@ -18,6 +18,7 @@ import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-meta 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 { fromUpdateObjectInputToFlatObjectMetadataAndRelatedFlatEntities } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-update-object-input-to-flat-object-metadata-and-related-flat-entities.util'; +import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/metadata-modules/flat-view-field/constants/default-view-field-size.constant'; 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'; @@ -34,9 +35,8 @@ import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum' import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; @Injectable() @@ -129,7 +129,7 @@ export class ObjectMetadataService extends TypeOrmQueryService 1 ? 's' : ''}`, ); @@ -416,7 +416,7 @@ export class ObjectMetadataService extends TypeOrmQueryService { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { - workspaceMigrationBuilderExceptionV2Formatter(error, i18n); + if (error instanceof WorkspaceMigrationBuilderException) { + workspaceMigrationBuilderExceptionFormatter(error, i18n); } if (error instanceof InvalidMetadataException) { diff --git a/packages/twenty-server/src/engine/metadata-modules/object-permission/field-permission/field-permission.entity.ts b/packages/twenty-server/src/engine/metadata-modules/object-permission/field-permission/field-permission.entity.ts index f484503a265..de4456837e9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-permission/field-permission/field-permission.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-permission/field-permission/field-permission.entity.ts @@ -15,7 +15,7 @@ import { 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 { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity('fieldPermission') @Unique('IDX_FIELD_PERMISSION_FIELD_METADATA_ID_ROLE_ID_UNIQUE', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/object-permission/object-permission.entity.ts b/packages/twenty-server/src/engine/metadata-modules/object-permission/object-permission.entity.ts index c01db5f4bbc..4bb43d25284 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-permission/object-permission.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-permission/object-permission.entity.ts @@ -13,7 +13,7 @@ import { import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity('objectPermission') @Unique('IDX_OBJECT_PERMISSION_OBJECT_METADATA_ID_ROLE_ID_UNIQUE', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity.ts index d85806731a0..8ac3c0f41c5 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity.ts @@ -14,9 +14,9 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity'; import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'pageLayoutTab', schema: 'core' }) @ObjectType('PageLayoutTab') diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/page-layout-tab.module.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/page-layout-tab.module.ts index 6473206c02d..9d359db9aed 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/page-layout-tab.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/page-layout-tab.module.ts @@ -14,8 +14,8 @@ import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout-ta import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { DashboardSyncModule } from 'src/modules/dashboard-sync/dashboard-sync.module'; @Module({ @@ -25,7 +25,7 @@ import { DashboardSyncModule } from 'src/modules/dashboard-sync/dashboard-sync.m PermissionsModule, FeatureFlagModule, WorkspaceCacheStorageModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, FlatPageLayoutTabModule, FlatPageLayoutWidgetModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/resolvers/page-layout-tab.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/resolvers/page-layout-tab.resolver.ts index c087e0ea0e6..7c29694d4af 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/resolvers/page-layout-tab.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/resolvers/page-layout-tab.resolver.ts @@ -20,7 +20,7 @@ import { UpdatePageLayoutTabInput } from 'src/engine/metadata-modules/page-layou import { PageLayoutTabDTO } from 'src/engine/metadata-modules/page-layout-tab/dtos/page-layout-tab.dto'; import { PageLayoutTabService } from 'src/engine/metadata-modules/page-layout-tab/services/page-layout-tab.service'; import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; @Resolver(() => PageLayoutTabDTO) @UseInterceptors(WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor) diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/services/page-layout-tab.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/services/page-layout-tab.service.ts index 92cf5fb15cb..b0a80a5613d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/services/page-layout-tab.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-tab/services/page-layout-tab.service.ts @@ -27,8 +27,8 @@ import { } from 'src/engine/metadata-modules/page-layout-tab/exceptions/page-layout-tab.exception'; import { fromFlatPageLayoutTabToPageLayoutTabDto } from 'src/engine/metadata-modules/page-layout-tab/utils/from-flat-page-layout-tab-to-page-layout-tab-dto.util'; import { fromFlatPageLayoutTabWithWidgetsToPageLayoutTabDto } from 'src/engine/metadata-modules/page-layout-tab/utils/from-flat-page-layout-tab-with-widgets-to-page-layout-tab-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; import { DashboardSyncService } from 'src/modules/dashboard-sync/services/dashboard-sync.service'; @Injectable() @@ -152,7 +152,7 @@ export class PageLayoutTabService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating page layout tab', ); @@ -220,7 +220,7 @@ export class PageLayoutTabService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating page layout tab', ); @@ -282,7 +282,7 @@ export class PageLayoutTabService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting page layout tab', ); @@ -341,7 +341,7 @@ export class PageLayoutTabService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying page layout tab', ); @@ -390,7 +390,7 @@ export class PageLayoutTabService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while restoring page layout tab', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity.ts index c9f4190bb31..acdc9c11b83 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity.ts @@ -13,12 +13,12 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity'; import { WidgetType } from 'src/engine/metadata-modules/page-layout-widget/enums/widget-type.enum'; import { type AllPageLayoutWidgetConfiguration } from 'src/engine/metadata-modules/page-layout-widget/types/all-page-layout-widget-configuration.type'; import { type GridPosition } from 'src/engine/metadata-modules/page-layout-widget/types/grid-position.type'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'pageLayoutWidget', schema: 'core' }) @ObjectType('PageLayoutWidget') diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/page-layout-widget.module.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/page-layout-widget.module.ts index 824a07c858b..3632f5de342 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/page-layout-widget.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/page-layout-widget.module.ts @@ -13,8 +13,8 @@ import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { DashboardSyncModule } from 'src/modules/dashboard-sync/dashboard-sync.module'; @Module({ @@ -24,7 +24,7 @@ import { DashboardSyncModule } from 'src/modules/dashboard-sync/dashboard-sync.m PermissionsModule, FeatureFlagModule, WorkspaceCacheStorageModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, FlatPageLayoutWidgetModule, ApplicationModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/resolvers/page-layout-widget.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/resolvers/page-layout-widget.resolver.ts index 11c611052ba..54d50a3df96 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/resolvers/page-layout-widget.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/resolvers/page-layout-widget.resolver.ts @@ -27,7 +27,7 @@ import { PageLayoutWidgetDTO } from 'src/engine/metadata-modules/page-layout-wid import { WidgetConfiguration } from 'src/engine/metadata-modules/page-layout-widget/dtos/widget-configuration.interface'; import { PageLayoutWidgetService } from 'src/engine/metadata-modules/page-layout-widget/services/page-layout-widget.service'; import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; @Resolver(() => PageLayoutWidgetDTO) @UseInterceptors(WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor) diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/services/page-layout-widget.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/services/page-layout-widget.service.ts index b7c28e4f40e..5569136b48c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/services/page-layout-widget.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/services/page-layout-widget.service.ts @@ -26,8 +26,8 @@ import { } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception'; import { fromFlatPageLayoutWidgetToPageLayoutWidgetDto } from 'src/engine/metadata-modules/page-layout-widget/utils/from-flat-page-layout-widget-to-page-layout-widget-dto.util'; import { validateWidgetGridPosition } from 'src/engine/metadata-modules/page-layout-widget/utils/validate-widget-grid-position.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; import { DashboardSyncService } from 'src/modules/dashboard-sync/services/dashboard-sync.service'; type WidgetMigrationOperations = { @@ -80,7 +80,7 @@ export class PageLayoutWidgetService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, errorMessage, ); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/utils/validate-widget-grid-position.util.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/utils/validate-widget-grid-position.util.ts index c223ef739bf..47b5d65937b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/utils/validate-widget-grid-position.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout-widget/utils/validate-widget-grid-position.util.ts @@ -7,7 +7,7 @@ import { PageLayoutWidgetExceptionMessageKey, generatePageLayoutWidgetExceptionMessage, } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; type GridPosition = { row: number; diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts index 5a6a3308854..a82eae73aae 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/entities/page-layout.entity.ts @@ -14,10 +14,10 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity'; import { PageLayoutType } from 'src/engine/metadata-modules/page-layout/enums/page-layout-type.enum'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'pageLayout', schema: 'core' }) @ObjectType('PageLayout') diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts index b516b044cf2..01ea2ba1cd1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/page-layout.module.ts @@ -20,8 +20,8 @@ import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/servi import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { DashboardSyncModule } from 'src/modules/dashboard-sync/dashboard-sync.module'; @Module({ @@ -32,7 +32,7 @@ import { DashboardSyncModule } from 'src/modules/dashboard-sync/dashboard-sync.m FeatureFlagModule, I18nModule, WorkspaceCacheStorageModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, FlatPageLayoutModule, FlatPageLayoutTabModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts index 4da8e8aa785..a9ea8c073e2 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/resolvers/page-layout.resolver.ts @@ -22,7 +22,7 @@ import { PageLayoutDTO } from 'src/engine/metadata-modules/page-layout/dtos/page import { PageLayoutUpdateService } from 'src/engine/metadata-modules/page-layout/services/page-layout-update.service'; import { PageLayoutService } from 'src/engine/metadata-modules/page-layout/services/page-layout.service'; import { PageLayoutGraphqlApiExceptionFilter } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; @Resolver(() => PageLayoutDTO) @UseInterceptors(WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor) diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-duplication.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-duplication.service.ts index 901c479f75f..cc8967757af 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-duplication.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-duplication.service.ts @@ -23,8 +23,8 @@ import { generatePageLayoutExceptionMessage, } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; import { fromFlatPageLayoutWithTabsAndWidgetsToPageLayoutDto } from 'src/engine/metadata-modules/page-layout/utils/from-flat-page-layout-with-tabs-and-widgets-to-page-layout-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class PageLayoutDuplicationService { @@ -116,7 +116,7 @@ export class PageLayoutDuplicationService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while duplicating page layout', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts index c5fa0b50463..689df7d662d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout-update.service.ts @@ -25,8 +25,8 @@ import { generatePageLayoutExceptionMessage, } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; import { fromFlatPageLayoutWithTabsAndWidgetsToPageLayoutDto } from 'src/engine/metadata-modules/page-layout/utils/from-flat-page-layout-with-tabs-and-widgets-to-page-layout-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; import { DashboardSyncService } from 'src/modules/dashboard-sync/services/dashboard-sync.service'; type UpdatePageLayoutWithTabsParams = { @@ -140,7 +140,7 @@ export class PageLayoutUpdateService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating page layout with tabs', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts index fbd6a4f79b6..b9265023866 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/services/page-layout.service.ts @@ -32,8 +32,8 @@ import { fromFlatPageLayoutToPageLayoutDto } from 'src/engine/metadata-modules/p import { fromFlatPageLayoutWithTabsAndWidgetsToPageLayoutDto } from 'src/engine/metadata-modules/page-layout/utils/from-flat-page-layout-with-tabs-and-widgets-to-page-layout-dto.util'; import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; import { DashboardSyncService } from 'src/modules/dashboard-sync/services/dashboard-sync.service'; @Injectable() @@ -188,7 +188,7 @@ export class PageLayoutService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating page layout', ); @@ -250,7 +250,7 @@ export class PageLayoutService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating page layout', ); @@ -314,7 +314,7 @@ export class PageLayoutService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting page layout', ); @@ -378,7 +378,7 @@ export class PageLayoutService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying page layout', ); @@ -460,7 +460,7 @@ export class PageLayoutService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while restoring page layout', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts index 8c395c30712..34896c1bfac 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util.ts @@ -17,15 +17,15 @@ import { PageLayoutException, PageLayoutExceptionCode, } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { workspaceMigrationBuilderExceptionFormatter } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-exception-formatter'; export const pageLayoutGraphqlApiExceptionHandler = ( error: Error, i18n: I18n, ) => { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { - return workspaceMigrationBuilderExceptionV2Formatter(error, i18n); + if (error instanceof WorkspaceMigrationBuilderException) { + return workspaceMigrationBuilderExceptionFormatter(error, i18n); } if (error instanceof PageLayoutException) { diff --git a/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts index ef8700d0b09..f302c75843c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception.filter.ts @@ -13,13 +13,13 @@ import { PageLayoutTabException } from 'src/engine/metadata-modules/page-layout- import { PageLayoutWidgetException } from 'src/engine/metadata-modules/page-layout-widget/exceptions/page-layout-widget.exception'; import { PageLayoutException } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; import { pageLayoutGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/page-layout/utils/page-layout-graphql-api-exception-handler.util'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; @Catch( PageLayoutException, PageLayoutTabException, PageLayoutWidgetException, - WorkspaceMigrationBuilderExceptionV2, + WorkspaceMigrationBuilderException, ) @Injectable() export class PageLayoutGraphqlApiExceptionFilter implements ExceptionFilter { @@ -30,7 +30,7 @@ export class PageLayoutGraphqlApiExceptionFilter implements ExceptionFilter { | PageLayoutException | PageLayoutTabException | PageLayoutWidgetException - | WorkspaceMigrationBuilderExceptionV2, + | WorkspaceMigrationBuilderException, host: ExecutionContext, ) { const gqlContext = GqlExecutionContext.create(host); diff --git a/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.entity.ts b/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.entity.ts index 1ef799cb9d3..7e6571d5df7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.entity.ts @@ -12,7 +12,7 @@ import { } from 'typeorm'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity('permissionFlag') @Unique('IDX_PERMISSION_FLAG_FLAG_ROLE_ID_UNIQUE', ['flag', 'roleId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.entity.ts b/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.entity.ts index ca883ea35f8..d5025f7288a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.entity.ts @@ -14,7 +14,7 @@ import { import { ApiKeyEntity } from 'src/engine/core-modules/api-key/api-key.entity'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity('roleTarget') @Unique('IDX_ROLE_TARGET_UNIQUE_USER_WORKSPACE', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.module.ts b/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.module.ts index 4af6880022d..11f972ef82c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role-target/role-target.module.ts @@ -6,14 +6,14 @@ import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; import { WorkspaceApiKeyRoleMapCacheService } from 'src/engine/metadata-modules/role-target/services/workspace-api-key-role-map-cache.service'; import { WorkspaceUserWorkspaceRoleMapCacheService } from 'src/engine/metadata-modules/role-target/services/workspace-user-workspace-role-map-cache.service'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { RoleTargetService } from './services/role-target.service'; @Module({ imports: [ WorkspaceManyOrAllFlatEntityMapsCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ApplicationModule, TypeOrmModule.forFeature([RoleTargetEntity]), ], diff --git a/packages/twenty-server/src/engine/metadata-modules/role-target/services/role-target.service.ts b/packages/twenty-server/src/engine/metadata-modules/role-target/services/role-target.service.ts index 36b473faac9..5382a602901 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role-target/services/role-target.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role-target/services/role-target.service.ts @@ -8,8 +8,8 @@ import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-m import { FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type'; import { CreateRoleTargetInput } from 'src/engine/metadata-modules/role-target/types/create-role-target.input'; import { fromCreateRoleTargetInputToFlatRoleTargetToCreate } from 'src/engine/metadata-modules/role-target/utils/from-create-role-target-input-to-flat-role-target-to-create.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; export type DeleteRoleTargetInput = { id: string; @@ -106,7 +106,7 @@ export class RoleTargetService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating role targets', ); @@ -158,7 +158,7 @@ export class RoleTargetService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting role target', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/role/constants/admin-role.ts b/packages/twenty-server/src/engine/metadata-modules/role/constants/admin-role.ts new file mode 100644 index 00000000000..b58d95d60a9 --- /dev/null +++ b/packages/twenty-server/src/engine/metadata-modules/role/constants/admin-role.ts @@ -0,0 +1,36 @@ +import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; + +export const ADMIN_ROLE = { + standardId: '20202020-0001-0001-0001-000000000001', + label: 'Admin', + description: 'Admin role', + icon: 'IconUserCog', + isEditable: false, + canUpdateAllSettings: true, + canAccessAllTools: true, + canReadAllObjectRecords: true, + canUpdateAllObjectRecords: true, + canSoftDeleteAllObjectRecords: true, + canDestroyAllObjectRecords: true, + canBeAssignedToUsers: true, + canBeAssignedToAgents: false, + canBeAssignedToApiKeys: true, + applicationId: null, // TODO: Replace with Twenty application ID +} as const satisfies Pick< + FlatRole, + | 'standardId' + | 'label' + | 'description' + | 'icon' + | 'isEditable' + | 'canUpdateAllSettings' + | 'canAccessAllTools' + | 'canReadAllObjectRecords' + | 'canUpdateAllObjectRecords' + | 'canSoftDeleteAllObjectRecords' + | 'canDestroyAllObjectRecords' + | 'canBeAssignedToUsers' + | 'canBeAssignedToAgents' + | 'canBeAssignedToApiKeys' + | 'applicationId' +>; diff --git a/packages/twenty-server/src/engine/metadata-modules/role/role.entity.ts b/packages/twenty-server/src/engine/metadata-modules/role/role.entity.ts index 4c23775ee2c..7152b12dc71 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/role.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/role.entity.ts @@ -13,7 +13,7 @@ import { FieldPermissionEntity } from 'src/engine/metadata-modules/object-permis import { ObjectPermissionEntity } from 'src/engine/metadata-modules/object-permission/object-permission.entity'; import { PermissionFlagEntity } from 'src/engine/metadata-modules/permission-flag/permission-flag.entity'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity('role') @Unique('IDX_ROLE_LABEL_WORKSPACE_ID_UNIQUE', ['label', 'workspaceId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/role/role.module.ts b/packages/twenty-server/src/engine/metadata-modules/role/role.module.ts index daa64c843de..ab9ae5a2ef1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/role.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/role.module.ts @@ -25,8 +25,8 @@ import { WorkspaceFlatRoleMapCacheService } from 'src/engine/metadata-modules/ro import { WorkspaceRolesPermissionsCacheService } from 'src/engine/metadata-modules/role/services/workspace-roles-permissions-cache.service'; import { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -47,7 +47,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa ObjectPermissionModule, PermissionFlagModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, UserWorkspaceModule, FileModule, ApplicationModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/role/role.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/role/role.resolver.ts index cf7d185b571..548506579ae 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/role.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/role.resolver.ts @@ -58,7 +58,7 @@ import { UpdateRoleInput } from 'src/engine/metadata-modules/role/dtos/update-ro import { RoleService } from 'src/engine/metadata-modules/role/role.service'; import { fromRoleEntitiesToRoleDtos } from 'src/engine/metadata-modules/role/utils/fromRoleEntityToRoleDto.util'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; @Resolver(() => RoleDTO) diff --git a/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts b/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts index 6c3fa3aa7c0..148bbe84e2c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts @@ -24,8 +24,8 @@ import { type UpdateRoleInput } from 'src/engine/metadata-modules/role/dtos/upda import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { fromFlatRoleToRoleDto } from 'src/engine/metadata-modules/role/utils/fromFlatRoleToRoleDto.util'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class RoleService { @@ -127,7 +127,7 @@ export class RoleService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating role', ); @@ -185,7 +185,7 @@ export class RoleService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating role', ); @@ -307,7 +307,7 @@ export class RoleService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, `Multiple validation errors occurred while deleting role${ids.length > 1 ? 's' : ''}`, ); diff --git a/packages/twenty-server/src/engine/metadata-modules/role/services/workspace-flat-role-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/role/services/workspace-flat-role-map-cache.service.ts index b4826777878..4dbf04ec776 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/services/workspace-flat-role-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/services/workspace-flat-role-map-cache.service.ts @@ -16,7 +16,7 @@ import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-t import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatRoleMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.entity.ts b/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.entity.ts index 4f8359a7b87..77efe17f001 100644 --- a/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.entity.ts @@ -11,8 +11,8 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'routeTrigger', schema: 'core' }) @Unique('IDX_ROUTE_TRIGGER_PATH_HTTP_METHOD_WORKSPACE_ID_UNIQUE', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.module.ts b/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.module.ts index 30821fe0fb3..b6a3efd29ec 100644 --- a/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/route-trigger/route-trigger.module.ts @@ -13,7 +13,7 @@ import { RouteTriggerService } from 'src/engine/metadata-modules/route-trigger/r import { RouteTriggerV2Service } from 'src/engine/metadata-modules/route-trigger/services/route-trigger-v2.service'; import { WorkspaceFlatRouteTriggerMapCacheService } from 'src/engine/metadata-modules/route-trigger/services/workspace-flat-route-trigger-map-cache.service'; import { ServerlessFunctionModule } from 'src/engine/metadata-modules/serverless-function/serverless-function.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -24,7 +24,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa ServerlessFunctionModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ], controllers: [RouteTriggerController], providers: [ diff --git a/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/route-trigger-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/route-trigger-v2.service.ts index 4697e125a59..c4b9852ba5f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/route-trigger-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/route-trigger-v2.service.ts @@ -15,8 +15,8 @@ import { import { FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type'; import { fromCreateRouteTriggerInputToFlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/utils/from-create-route-trigger-input-to-flat-route-trigger.util'; import { fromUpdateRouteTriggerInputToFlatRouteTriggerToUpdateOrThrow } from 'src/engine/metadata-modules/route-trigger/utils/from-update-route-trigger-input-to-flat-route-trigger-to-update-or-throw.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class RouteTriggerV2Service { @@ -66,7 +66,7 @@ export class RouteTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating route', ); @@ -120,7 +120,7 @@ export class RouteTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating route', ); @@ -181,7 +181,7 @@ export class RouteTriggerV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying route', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/workspace-flat-route-trigger-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/workspace-flat-route-trigger-map-cache.service.ts index 8a09965e615..5eac83d31a0 100644 --- a/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/workspace-flat-route-trigger-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/route-trigger/services/workspace-flat-route-trigger-map-cache.service.ts @@ -12,7 +12,7 @@ import { getMetadataEntityRelationProperties } from 'src/engine/metadata-modules import { RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity'; import { FlatRouteTrigger } from 'src/engine/metadata-modules/route-trigger/types/flat-route-trigger.type'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatRouteTriggerMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity.ts b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity.ts index 07225e5079c..69ed494d0a1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity.ts @@ -17,7 +17,7 @@ import { import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity'; import { RowLevelPermissionPredicateGroupLogicalOperator } from 'src/engine/metadata-modules/row-level-permission-predicate/enums/row-level-permission-predicate-group-logical-operator.enum'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'rowLevelPermissionPredicateGroup', schema: 'core' }) @Index('IDX_RLPPG_WORKSPACE_ID_ROLE_ID', ['workspaceId', 'roleId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity.ts b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity.ts index f7f20369af5..a8e11bdad4d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity.ts @@ -19,7 +19,7 @@ import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity'; import { RowLevelPermissionPredicateOperand } from 'src/engine/metadata-modules/row-level-permission-predicate/enums/row-level-permission-predicate-operand'; import { type RowLevelPermissionPredicateValue } from 'src/engine/metadata-modules/row-level-permission-predicate/types/row-level-permission-predicate-value.type'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'rowLevelPermissionPredicate', schema: 'core' }) @Index('IDX_RLPP_WORKSPACE_ID_ROLE_ID_OBJECT_METADATA_ID', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/row-level-permission.module.ts b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/row-level-permission.module.ts index b703b36488e..fd7c8c02fe7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/row-level-permission.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/row-level-permission.module.ts @@ -11,7 +11,7 @@ import { RowLevelPermissionPredicateResolver } from 'src/engine/metadata-modules import { RowLevelPermissionPredicateGroupService } from 'src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate-group.service'; import { RowLevelPermissionPredicateService } from 'src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate.service'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -21,7 +21,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa ]), WorkspaceCacheModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ], providers: [ RowLevelPermissionPredicateService, diff --git a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate-group.service.ts b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate-group.service.ts index 4091108338f..cb4f1729823 100644 --- a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate-group.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate-group.service.ts @@ -18,8 +18,8 @@ import { type DestroyRowLevelPermissionPredicateGroupInput } from 'src/engine/me import { type UpdateRowLevelPermissionPredicateGroupInput } from 'src/engine/metadata-modules/row-level-permission-predicate/dtos/inputs/update-row-level-permission-predicate-group.input'; import { RowLevelPermissionPredicateGroupDTO } from 'src/engine/metadata-modules/row-level-permission-predicate/dtos/row-level-permission-predicate-group.dto'; import { type FlatRowLevelPermissionPredicateGroup } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate-group.type'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; const RLP_CACHE_KEYS = [ 'flatRowLevelPermissionPredicateMaps', @@ -284,7 +284,7 @@ export class RowLevelPermissionPredicateGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Validation errors occurred while applying row level permission predicate group mutation', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate.service.ts b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate.service.ts index 5f3309a85de..3d276417fad 100644 --- a/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/row-level-permission-predicate/services/row-level-permission-predicate.service.ts @@ -18,8 +18,8 @@ import { type DestroyRowLevelPermissionPredicateInput } from 'src/engine/metadat import { type UpdateRowLevelPermissionPredicateInput } from 'src/engine/metadata-modules/row-level-permission-predicate/dtos/inputs/update-row-level-permission-predicate.input'; import { RowLevelPermissionPredicateDTO } from 'src/engine/metadata-modules/row-level-permission-predicate/dtos/row-level-permission-predicate.dto'; import { type FlatRowLevelPermissionPredicate } from 'src/engine/metadata-modules/row-level-permission-predicate/types/flat-row-level-permission-predicate.type'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; const RLP_CACHE_KEYS = [ 'flatRowLevelPermissionPredicateMaps', @@ -290,7 +290,7 @@ export class RowLevelPermissionPredicateService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Validation errors occurred while applying row level permission predicate mutation', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/search-field-metadata/search-field-metadata.entity.ts b/packages/twenty-server/src/engine/metadata-modules/search-field-metadata/search-field-metadata.entity.ts index 41411023d9a..1c84143d953 100644 --- a/packages/twenty-server/src/engine/metadata-modules/search-field-metadata/search-field-metadata.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/search-field-metadata/search-field-metadata.entity.ts @@ -13,7 +13,7 @@ import { 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 { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity('searchFieldMetadata') @Unique('IDX_SEARCH_FIELD_METADATA_OBJECT_FIELD_UNIQUE', [ diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.entity.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.entity.ts index 755017fb7ad..df0c095bb38 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.entity.ts @@ -10,7 +10,7 @@ import { } from 'typeorm'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Entity('serverlessFunctionLayer') export class ServerlessFunctionLayerEntity extends WorkspaceRelatedEntity { diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts index 617df12b6ca..3442d2dc6bf 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.entity.ts @@ -17,7 +17,7 @@ import { CronTriggerEntity } from 'src/engine/metadata-modules/cron-trigger/enti import { DatabaseEventTriggerEntity } from 'src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity'; import { RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity'; import { ServerlessFunctionLayerEntity } from 'src/engine/metadata-modules/serverless-function-layer/serverless-function-layer.entity'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; const DEFAULT_SERVERLESS_TIMEOUT_SECONDS = 300; // 5 minutes diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts index ebc3c037c28..92b86da9414 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/serverless-function.module.ts @@ -5,6 +5,7 @@ import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm'; import { ApplicationModule } from 'src/engine/core-modules/application/application.module'; import { AuditModule } from 'src/engine/core-modules/audit/audit.module'; +import { TokenModule } from 'src/engine/core-modules/auth/token/token.module'; import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { FileUploadModule } from 'src/engine/core-modules/file/file-upload/file-upload.module'; @@ -22,9 +23,8 @@ import { ServerlessFunctionResolver } from 'src/engine/metadata-modules/serverle import { ServerlessFunctionService } from 'src/engine/metadata-modules/serverless-function/serverless-function.service'; import { ServerlessFunctionV2Service } from 'src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service'; import { WorkspaceFlatServerlessFunctionMapCacheService } from 'src/engine/metadata-modules/serverless-function/services/workspace-flat-serverless-function-map-cache.service'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; import { SubscriptionsModule } from 'src/engine/subscriptions/subscriptions.module'; -import { TokenModule } from 'src/engine/core-modules/auth/token/token.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -43,7 +43,7 @@ import { TokenModule } from 'src/engine/core-modules/auth/token/token.module'; FeatureFlagModule, PermissionsModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ServerlessFunctionLayerModule, SubscriptionsModule, TokenModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service.ts index c675efd5625..8188964278c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/serverless-function-v2.service.ts @@ -15,8 +15,8 @@ import { import { FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type'; import { fromCreateServerlessFunctionInputToFlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/utils/from-create-serverless-function-input-to-flat-serverless-function.util'; import { fromUpdateServerlessFunctionInputToFlatServerlessFunctionToUpdateOrThrow } from 'src/engine/metadata-modules/serverless-function/utils/from-update-serverless-function-input-to-flat-serverless-function-to-update-or-throw.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ServerlessFunctionV2Service { @@ -72,7 +72,7 @@ export class ServerlessFunctionV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating serverless function', ); @@ -128,7 +128,7 @@ export class ServerlessFunctionV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating serverless function', ); @@ -200,7 +200,7 @@ export class ServerlessFunctionV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting serverless function', ); @@ -267,7 +267,7 @@ export class ServerlessFunctionV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying serverless function', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/workspace-flat-serverless-function-map-cache.service.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/workspace-flat-serverless-function-map-cache.service.ts index 7148afa1628..0f94bffcc27 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/workspace-flat-serverless-function-map-cache.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/services/workspace-flat-serverless-function-map-cache.service.ts @@ -15,7 +15,7 @@ import { FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-f import { fromServerlessFunctionEntityToFlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/utils/from-serverless-function-entity-to-flat-serverless-function.type'; import { WorkspaceCache } from 'src/engine/workspace-cache/decorators/workspace-cache.decorator'; import { regroupEntitiesByRelatedEntityId } from 'src/engine/workspace-cache/utils/regroup-entities-by-related-entity-id'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; @Injectable() @WorkspaceCache('flatServerlessFunctionMaps') diff --git a/packages/twenty-server/src/engine/metadata-modules/skill/entities/skill.entity.ts b/packages/twenty-server/src/engine/metadata-modules/skill/entities/skill.entity.ts index 3edd8b78a9c..2b77d1cf87f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/skill/entities/skill.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/skill/entities/skill.entity.ts @@ -7,7 +7,7 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity('skill') @Index('IDX_SKILL_ID_IS_ACTIVE', ['id', 'isActive']) diff --git a/packages/twenty-server/src/engine/metadata-modules/skill/skill.module.ts b/packages/twenty-server/src/engine/metadata-modules/skill/skill.module.ts index 00e1477a38f..90022caaf97 100644 --- a/packages/twenty-server/src/engine/metadata-modules/skill/skill.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/skill/skill.module.ts @@ -7,13 +7,13 @@ import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permi import { SkillGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/skill/interceptors/skill-graphql-api-exception.interceptor'; import { SkillResolver } from 'src/engine/metadata-modules/skill/skill.resolver'; import { SkillService } from 'src/engine/metadata-modules/skill/skill.service'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ WorkspaceManyOrAllFlatEntityMapsCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ApplicationModule, PermissionsModule, FlatSkillModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/skill/skill.resolver.ts b/packages/twenty-server/src/engine/metadata-modules/skill/skill.resolver.ts index e4f9ba151f0..a9fb4549913 100644 --- a/packages/twenty-server/src/engine/metadata-modules/skill/skill.resolver.ts +++ b/packages/twenty-server/src/engine/metadata-modules/skill/skill.resolver.ts @@ -13,7 +13,7 @@ import { SkillDTO } from 'src/engine/metadata-modules/skill/dtos/skill.dto'; import { UpdateSkillInput } from 'src/engine/metadata-modules/skill/dtos/update-skill.input'; import { SkillGraphqlApiExceptionInterceptor } from 'src/engine/metadata-modules/skill/interceptors/skill-graphql-api-exception.interceptor'; import { SkillService } from 'src/engine/metadata-modules/skill/skill.service'; -import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; +import { WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor'; @UseGuards(WorkspaceAuthGuard, SettingsPermissionGuard(PermissionFlagType.AI)) @UseInterceptors( diff --git a/packages/twenty-server/src/engine/metadata-modules/skill/skill.service.ts b/packages/twenty-server/src/engine/metadata-modules/skill/skill.service.ts index 6412fce1b92..5a45909810c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/skill/skill.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/skill/skill.service.ts @@ -18,8 +18,8 @@ import { SkillException, SkillExceptionCode, } from 'src/engine/metadata-modules/skill/skill.exception'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class SkillService { @@ -96,7 +96,7 @@ export class SkillService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating skill', ); @@ -151,7 +151,7 @@ export class SkillService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating skill', ); @@ -203,7 +203,7 @@ export class SkillService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting skill', ); @@ -286,7 +286,7 @@ export class SkillService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while activating skill', ); @@ -344,7 +344,7 @@ export class SkillService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deactivating skill', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/user-role/user-role.service.ts b/packages/twenty-server/src/engine/metadata-modules/user-role/user-role.service.ts index b28ff9fb1e5..4000b6553f1 100644 --- a/packages/twenty-server/src/engine/metadata-modules/user-role/user-role.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/user-role/user-role.service.ts @@ -12,11 +12,11 @@ import { } from 'src/engine/metadata-modules/permissions/permissions.exception'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; import { RoleTargetService } from 'src/engine/metadata-modules/role-target/services/role-target.service'; +import { ADMIN_ROLE } from 'src/engine/metadata-modules/role/constants/admin-role'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -import { ADMIN_ROLE } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role'; import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; export class UserRoleService { diff --git a/packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts index 287792c5d73..314ca959c4d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/entities/view-field.entity.ts @@ -11,10 +11,10 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'viewField', schema: 'core' }) @Index('IDX_VIEW_FIELD_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/view-field/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 index 7ee6912017b..f527f32b438 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-field/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 @@ -15,15 +15,15 @@ import { ViewFieldException, ViewFieldExceptionCode, } from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; import { type CustomException, UnknownException, } from 'src/utils/custom-exception'; @Injectable() -@Catch(ViewFieldException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewFieldException, WorkspaceMigrationBuilderException) export class ViewFieldRestApiExceptionFilter implements ExceptionFilter { constructor( private readonly httpExceptionHandlerService: HttpExceptionHandlerService, @@ -31,13 +31,13 @@ export class ViewFieldRestApiExceptionFilter implements ExceptionFilter { ) {} catch( - exception: ViewFieldException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewFieldException | WorkspaceMigrationBuilderException, host: ArgumentsHost, ) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - if (exception instanceof WorkspaceMigrationBuilderExceptionV2) { + if (exception instanceof WorkspaceMigrationBuilderException) { const i18n = this.i18nService.getI18nInstance(SOURCE_LOCALE); const { errors, summary } = fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError( diff --git a/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts index 3e4d3ec05b0..c62a707ff61 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-field/services/view-field-v2.service.ts @@ -23,8 +23,8 @@ import { ViewFieldExceptionCode, } from 'src/engine/metadata-modules/view-field/exceptions/view-field.exception'; import { fromFlatViewFieldToViewFieldDto } from 'src/engine/metadata-modules/view-field/utils/from-flat-view-field-to-view-field-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ViewFieldV2Service { @@ -101,7 +101,7 @@ export class ViewFieldV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating view fields', ); @@ -158,7 +158,7 @@ export class ViewFieldV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating view field', ); @@ -217,7 +217,7 @@ export class ViewFieldV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting view field', ); @@ -276,7 +276,7 @@ export class ViewFieldV2Service { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting view field', ); 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 index 5d167a5c993..f39ffaffafe 100644 --- 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 @@ -11,7 +11,7 @@ import { ViewFieldV2Service } from 'src/engine/metadata-modules/view-field/servi import { ViewPermissionsModule } from 'src/engine/metadata-modules/view-permissions/view-permissions.module'; 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'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -19,7 +19,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa WorkspaceCacheStorageModule, ApplicationModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ViewPermissionsModule, ], diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts index 3a009579452..78b62699643 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity.ts @@ -12,10 +12,10 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; 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'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'viewFilterGroup', schema: 'core' }) @Index('IDX_VIEW_FILTER_GROUP_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/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 index 190ea08d5d6..b4959c3867b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/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 @@ -15,15 +15,15 @@ import { ViewFilterGroupException, ViewFilterGroupExceptionCode, } from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; import { type CustomException, UnknownException, } from 'src/utils/custom-exception'; @Injectable() -@Catch(ViewFilterGroupException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewFilterGroupException, WorkspaceMigrationBuilderException) export class ViewFilterGroupRestApiExceptionFilter implements ExceptionFilter { constructor( private readonly httpExceptionHandlerService: HttpExceptionHandlerService, @@ -31,13 +31,13 @@ export class ViewFilterGroupRestApiExceptionFilter implements ExceptionFilter { ) {} catch( - exception: ViewFilterGroupException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewFilterGroupException | WorkspaceMigrationBuilderException, host: ArgumentsHost, ) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - if (exception instanceof WorkspaceMigrationBuilderExceptionV2) { + if (exception instanceof WorkspaceMigrationBuilderException) { const i18n = this.i18nService.getI18nInstance(SOURCE_LOCALE); const { errors, summary } = fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError( diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/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 index f018db309e7..d022194cb5c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/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 @@ -8,7 +8,7 @@ import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadat 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 { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter-group/services/view-filter-group.service'; -import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; describe('ViewFilterGroupService', () => { let viewFilterGroupService: ViewFilterGroupService; diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts index d6be049aa6c..cf8006f21da 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter-group/services/view-filter-group.service.ts @@ -18,8 +18,8 @@ import { type UpdateViewFilterGroupInput } from 'src/engine/metadata-modules/vie import { type 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 { fromFlatViewFilterGroupToViewFilterGroupDto } from 'src/engine/metadata-modules/view-filter-group/utils/from-flat-view-filter-group-to-view-filter-group-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ViewFilterGroupService { @@ -68,7 +68,7 @@ export class ViewFilterGroupService { ); if (isDefined(buildAndRunResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( buildAndRunResult, 'Multiple validation errors occurred while creating view filter group', ); @@ -131,7 +131,7 @@ export class ViewFilterGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating view filter group', ); @@ -194,7 +194,7 @@ export class ViewFilterGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting view filter group', ); @@ -255,7 +255,7 @@ export class ViewFilterGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying view filter group', ); 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 index 5a94797ff73..edba7ce2c89 100644 --- 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 @@ -11,7 +11,7 @@ import { ViewFilterGroupService } from 'src/engine/metadata-modules/view-filter- import { ViewPermissionsModule } from 'src/engine/metadata-modules/view-permissions/view-permissions.module'; 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'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -19,7 +19,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa PermissionsModule, WorkspaceCacheStorageModule, ApplicationModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ViewPermissionsModule, ], diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts index 1da3211a22f..0059dce3630 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/entities/view-filter.entity.ts @@ -12,11 +12,11 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; 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 { type ViewFilterValue } from 'src/engine/metadata-modules/view-filter/types/view-filter-value.type'; import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'viewFilter', schema: 'core' }) @Index('IDX_VIEW_FILTER_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter/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 index 7ab770246b9..1effcb80fce 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter/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 @@ -15,15 +15,15 @@ import { ViewFilterException, ViewFilterExceptionCode, } from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; import { type CustomException, UnknownException, } from 'src/utils/custom-exception'; @Injectable() -@Catch(ViewFilterException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewFilterException, WorkspaceMigrationBuilderException) export class ViewFilterRestApiExceptionFilter implements ExceptionFilter { constructor( private readonly httpExceptionHandlerService: HttpExceptionHandlerService, @@ -31,13 +31,13 @@ export class ViewFilterRestApiExceptionFilter implements ExceptionFilter { ) {} catch( - exception: ViewFilterException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewFilterException | WorkspaceMigrationBuilderException, host: ArgumentsHost, ) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - if (exception instanceof WorkspaceMigrationBuilderExceptionV2) { + if (exception instanceof WorkspaceMigrationBuilderException) { const i18n = this.i18nService.getI18nInstance(SOURCE_LOCALE); const { errors, summary } = fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError( diff --git a/packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts index 063362bc196..8f7ed41ef29 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-filter/services/view-filter.service.ts @@ -18,8 +18,8 @@ import { UpdateViewFilterInput } from 'src/engine/metadata-modules/view-filter/d 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 { fromFlatViewFilterToViewFilterDto } from 'src/engine/metadata-modules/view-filter/utils/from-flat-view-filter-to-view-filter-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ViewFilterService { @@ -68,7 +68,7 @@ export class ViewFilterService { ); if (isDefined(buildAndRunResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( buildAndRunResult, 'Multiple validation errors occurred while creating view filter', ); @@ -127,7 +127,7 @@ export class ViewFilterService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating view filter', ); @@ -188,7 +188,7 @@ export class ViewFilterService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting view filter', ); @@ -247,7 +247,7 @@ export class ViewFilterService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying view filter', ); 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 index 4f2dcca9d40..3e3c6fda913 100644 --- 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 @@ -11,7 +11,7 @@ import { ViewFilterService } from 'src/engine/metadata-modules/view-filter/servi import { ViewPermissionsModule } from 'src/engine/metadata-modules/view-permissions/view-permissions.module'; 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'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -19,7 +19,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa WorkspaceCacheStorageModule, ApplicationModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ViewPermissionsModule, ], diff --git a/packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts index d43c4871297..f944f5ded7c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/entities/view-group.entity.ts @@ -11,8 +11,8 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'viewGroup', schema: 'core' }) @Index('IDX_VIEW_GROUP_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/view-group/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 index 5901e2c4231..a1b46b22faf 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-group/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 @@ -15,15 +15,15 @@ import { ViewGroupException, ViewGroupExceptionCode, } from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; import { type CustomException, UnknownException, } from 'src/utils/custom-exception'; @Injectable() -@Catch(ViewGroupException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewGroupException, WorkspaceMigrationBuilderException) export class ViewGroupRestApiExceptionFilter implements ExceptionFilter { constructor( private readonly httpExceptionHandlerService: HttpExceptionHandlerService, @@ -31,13 +31,13 @@ export class ViewGroupRestApiExceptionFilter implements ExceptionFilter { ) {} catch( - exception: ViewGroupException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewGroupException | WorkspaceMigrationBuilderException, host: ArgumentsHost, ) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - if (exception instanceof WorkspaceMigrationBuilderExceptionV2) { + if (exception instanceof WorkspaceMigrationBuilderException) { const i18n = this.i18nService.getI18nInstance(SOURCE_LOCALE); const { errors, summary } = fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError( diff --git a/packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts index 182a6f997de..093fe4fedfa 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/services/view-group.service.ts @@ -23,8 +23,8 @@ import { ViewGroupExceptionCode, } from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; import { fromFlatViewGroupToViewGroupDto } from 'src/engine/metadata-modules/view-group/utils/from-flat-view-group-to-view-group-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ViewGroupService { @@ -121,7 +121,7 @@ export class ViewGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating view groups', ); @@ -178,7 +178,7 @@ export class ViewGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating view group', ); @@ -239,7 +239,7 @@ export class ViewGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting view group', ); @@ -298,7 +298,7 @@ export class ViewGroupService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying view group', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/view-group/utils/view-group-graphql-api-exception.filter.ts b/packages/twenty-server/src/engine/metadata-modules/view-group/utils/view-group-graphql-api-exception.filter.ts index a9a782601a6..4a004e050f7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-group/utils/view-group-graphql-api-exception.filter.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-group/utils/view-group-graphql-api-exception.filter.ts @@ -11,15 +11,15 @@ import { SOURCE_LOCALE } from 'twenty-shared/translations'; import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; import { ViewGroupException } from 'src/engine/metadata-modules/view-group/exceptions/view-group.exception'; import { viewGroupGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/view-group/utils/view-group-graphql-api-exception-handler.util'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; -@Catch(ViewGroupException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewGroupException, WorkspaceMigrationBuilderException) @Injectable() export class ViewGroupGraphqlApiExceptionFilter implements ExceptionFilter { constructor(private readonly i18nService: I18nService) {} catch( - exception: ViewGroupException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewGroupException | WorkspaceMigrationBuilderException, host: ExecutionContext, ) { const gqlContext = GqlExecutionContext.create(host); 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 index d3164bbe626..1b70680a54c 100644 --- 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 @@ -13,7 +13,7 @@ import { ViewGroupService } from 'src/engine/metadata-modules/view-group/service import { ViewPermissionsModule } from 'src/engine/metadata-modules/view-permissions/view-permissions.module'; 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'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -23,7 +23,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa FeatureFlagModule, I18nModule, PermissionsModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ViewPermissionsModule, ], diff --git a/packages/twenty-server/src/engine/metadata-modules/view-permissions/view-permissions.module.ts b/packages/twenty-server/src/engine/metadata-modules/view-permissions/view-permissions.module.ts index 99ddf1fdae9..352843b6e2a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-permissions/view-permissions.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-permissions/view-permissions.module.ts @@ -39,7 +39,7 @@ import { ViewSortEntity } from 'src/engine/metadata-modules/view-sort/entities/v import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; 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'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -56,7 +56,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa PermissionsModule, WorkspaceCacheStorageModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, ], providers: [ ViewService, diff --git a/packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts index 701938d46b8..eb88d4c0c7a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view-sort/entities/view-sort.entity.ts @@ -11,10 +11,10 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; 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'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; @Entity({ name: 'viewSort', schema: 'core' }) @Index('IDX_VIEW_SORT_WORKSPACE_ID_VIEW_ID', ['workspaceId', 'viewId']) diff --git a/packages/twenty-server/src/engine/metadata-modules/view-sort/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 index d073ecd4ae2..f89e0f30cfb 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view-sort/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 @@ -15,15 +15,15 @@ import { ViewSortException, ViewSortExceptionCode, } from 'src/engine/metadata-modules/view-sort/exceptions/view-sort.exception'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; import { type CustomException, UnknownException, } from 'src/utils/custom-exception'; @Injectable() -@Catch(ViewSortException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewSortException, WorkspaceMigrationBuilderException) export class ViewSortRestApiExceptionFilter implements ExceptionFilter { constructor( private readonly httpExceptionHandlerService: HttpExceptionHandlerService, @@ -31,13 +31,13 @@ export class ViewSortRestApiExceptionFilter implements ExceptionFilter { ) {} catch( - exception: ViewSortException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewSortException | WorkspaceMigrationBuilderException, host: ArgumentsHost, ) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - if (exception instanceof WorkspaceMigrationBuilderExceptionV2) { + if (exception instanceof WorkspaceMigrationBuilderException) { const i18n = this.i18nService.getI18nInstance(SOURCE_LOCALE); const { errors, summary } = fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError( diff --git a/packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts b/packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts index ee5c5b8540f..feaf6a9dc76 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/entities/view.entity.ts @@ -13,7 +13,6 @@ import { UpdateDateColumn, } from 'typeorm'; -import { SyncableEntity } from 'src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface'; import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; import { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; @@ -28,6 +27,7 @@ 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 { ViewVisibility } from 'src/engine/metadata-modules/view/enums/view-visibility.enum'; +import { SyncableEntity } from 'src/engine/workspace-manager/types/syncable-entity.interface'; // We could refactor this type to be dynamic to view type @Entity({ name: 'view', schema: 'core' }) diff --git a/packages/twenty-server/src/engine/metadata-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 index 79ded708811..d388ad4f374 100644 --- a/packages/twenty-server/src/engine/metadata-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 @@ -15,15 +15,15 @@ import { ViewException, ViewExceptionCode, } 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 { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; import { type CustomException, UnknownException, } from 'src/utils/custom-exception'; @Injectable() -@Catch(ViewException, WorkspaceMigrationBuilderExceptionV2) +@Catch(ViewException, WorkspaceMigrationBuilderException) export class ViewRestApiExceptionFilter implements ExceptionFilter { constructor( private readonly httpExceptionHandlerService: HttpExceptionHandlerService, @@ -31,13 +31,13 @@ export class ViewRestApiExceptionFilter implements ExceptionFilter { ) {} catch( - exception: ViewException | WorkspaceMigrationBuilderExceptionV2, + exception: ViewException | WorkspaceMigrationBuilderException, host: ArgumentsHost, ) { const ctx = host.switchToHttp(); const response = ctx.getResponse(); - if (exception instanceof WorkspaceMigrationBuilderExceptionV2) { + if (exception instanceof WorkspaceMigrationBuilderException) { const i18n = this.i18nService.getI18nInstance(SOURCE_LOCALE); const { errors, summary } = fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError( diff --git a/packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts b/packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts index 7687d949ffe..2d7cb7a2877 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/services/view.service.ts @@ -22,8 +22,8 @@ import { ViewDTO } from 'src/engine/metadata-modules/view/dtos/view.dto'; import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { ViewVisibility } from 'src/engine/metadata-modules/view/enums/view-visibility.enum'; import { fromFlatViewToViewDto } from 'src/engine/metadata-modules/view/utils/from-flat-view-to-view-dto.util'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; @Injectable() export class ViewService { @@ -91,7 +91,7 @@ export class ViewService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while creating view', ); @@ -167,7 +167,7 @@ export class ViewService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while updating view', ); @@ -226,7 +226,7 @@ export class ViewService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while deleting view', ); @@ -284,7 +284,7 @@ export class ViewService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while destroying view', ); diff --git a/packages/twenty-server/src/engine/metadata-modules/view/tools/view-tools.factory.ts b/packages/twenty-server/src/engine/metadata-modules/view/tools/view-tools.factory.ts index f1590ee09ed..8e62ea1b792 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view/tools/view-tools.factory.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/tools/view-tools.factory.ts @@ -9,7 +9,7 @@ import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum' import { ViewVisibility } from 'src/engine/metadata-modules/view/enums/view-visibility.enum'; import { ViewQueryParamsService } from 'src/engine/metadata-modules/view/services/view-query-params.service'; import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; -import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; const GetViewsInputSchema = z.object({ objectNameSingular: z @@ -203,7 +203,7 @@ export class ViewToolsFactory { visibility: view.visibility, }; } catch (error) { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { + if (error instanceof WorkspaceMigrationBuilderException) { throw new Error(formatValidationErrors(error)); } throw error; @@ -255,7 +255,7 @@ export class ViewToolsFactory { visibility: view.visibility, }; } catch (error) { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { + if (error instanceof WorkspaceMigrationBuilderException) { throw new Error(formatValidationErrors(error)); } throw error; @@ -294,7 +294,7 @@ export class ViewToolsFactory { deleted: true, }; } catch (error) { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { + if (error instanceof WorkspaceMigrationBuilderException) { throw new Error(formatValidationErrors(error)); } throw error; diff --git a/packages/twenty-server/src/engine/metadata-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 index 2643da33dfa..8d30a7a4045 100644 --- a/packages/twenty-server/src/engine/metadata-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 @@ -31,12 +31,12 @@ import { ViewException, ViewExceptionCode, } 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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { workspaceMigrationBuilderExceptionFormatter } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-exception-formatter'; export const viewGraphqlApiExceptionHandler = (error: Error, i18n: I18n) => { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { - return workspaceMigrationBuilderExceptionV2Formatter(error, i18n); + if (error instanceof WorkspaceMigrationBuilderException) { + return workspaceMigrationBuilderExceptionFormatter(error, i18n); } if (error instanceof ViewException) { 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 index 5e9cdcceed4..78d4620fca6 100644 --- 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 @@ -1,7 +1,7 @@ import { Catch, - type ExecutionContext, type ExceptionFilter, + type ExecutionContext, Injectable, } from '@nestjs/common'; import { GqlExecutionContext } from '@nestjs/graphql'; @@ -16,7 +16,7 @@ import { ViewGroupException } from 'src/engine/metadata-modules/view-group/excep 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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; @Catch( ViewException, @@ -25,7 +25,7 @@ import { WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manag ViewFilterGroupException, ViewGroupException, ViewSortException, - WorkspaceMigrationBuilderExceptionV2, + WorkspaceMigrationBuilderException, ) @Injectable() export class ViewGraphqlApiExceptionFilter implements ExceptionFilter { @@ -39,7 +39,7 @@ export class ViewGraphqlApiExceptionFilter implements ExceptionFilter { | ViewFilterGroupException | ViewGroupException | ViewSortException - | WorkspaceMigrationBuilderExceptionV2, + | WorkspaceMigrationBuilderException, host: ExecutionContext, ) { const gqlContext = GqlExecutionContext.create(host); 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 index a98b6256a0e..b5f2571f04b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/view/view.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/view/view.module.ts @@ -20,7 +20,7 @@ import { ViewQueryParamsService } from 'src/engine/metadata-modules/view/service import { ViewService } from 'src/engine/metadata-modules/view/services/view.service'; import { ViewToolsFactory } from 'src/engine/metadata-modules/view/tools/view-tools.factory'; 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'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -36,7 +36,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa PermissionsModule, UserRoleModule, WorkspaceCacheStorageModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, FlatViewModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, ], diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/basic-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/basic-column-action.factory.ts deleted file mode 100644 index 62d779cb146..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/basic-column-action.factory.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { computeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; -import { serializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-default-value'; -import { ColumnActionAbstractFactory } from 'src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -export type BasicFieldMetadataType = - | FieldMetadataType.UUID - | FieldMetadataType.TEXT - | FieldMetadataType.NUMERIC - | FieldMetadataType.NUMBER - | FieldMetadataType.BOOLEAN - | FieldMetadataType.POSITION - | FieldMetadataType.DATE_TIME - | FieldMetadataType.DATE - | FieldMetadataType.POSITION - | FieldMetadataType.ARRAY; - -@Injectable() -export class BasicColumnActionFactory extends ColumnActionAbstractFactory { - protected readonly logger = new Logger(BasicColumnActionFactory.name); - - protected handleCreateAction( - fieldMetadata: FieldMetadataEntity, - options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnCreate[] { - const columnName = computeColumnName(fieldMetadata); - const defaultValue = fieldMetadata.defaultValue ?? options?.defaultValue; - const serializedDefaultValue = serializeDefaultValue(defaultValue); - - return [ - { - action: WorkspaceMigrationColumnActionType.CREATE, - columnName, - columnType: fieldMetadataTypeToColumnType(fieldMetadata.type), - isArray: fieldMetadata.type === FieldMetadataType.ARRAY, - isNullable: fieldMetadata.isNullable ?? true, - isUnique: fieldMetadata.isUnique ?? false, - defaultValue: serializedDefaultValue, - }, - ]; - } - - protected handleAlterAction( - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: FieldMetadataEntity, - options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAlter[] { - const currentColumnName = computeColumnName(currentFieldMetadata); - const alteredColumnName = computeColumnName(alteredFieldMetadata); - const defaultValue = - alteredFieldMetadata.defaultValue ?? options?.defaultValue; - const serializedDefaultValue = serializeDefaultValue(defaultValue); - - if (!currentColumnName || !alteredColumnName) { - this.logger.error( - `Column name not found for current or altered field metadata, can be due to a missing or an invalid target column map. Current column name: ${currentColumnName}, Altered column name: ${alteredColumnName}.`, - ); - throw new WorkspaceMigrationException( - `Column name not found for current or altered field metadata`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - return [ - { - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: currentColumnName, - columnType: fieldMetadataTypeToColumnType(currentFieldMetadata.type), - isArray: currentFieldMetadata.type === FieldMetadataType.ARRAY, - isNullable: currentFieldMetadata.isNullable ?? true, - isUnique: currentFieldMetadata.isUnique ?? false, - defaultValue: serializeDefaultValue( - currentFieldMetadata.defaultValue, - ), - }, - alteredColumnDefinition: { - columnName: alteredColumnName, - columnType: fieldMetadataTypeToColumnType(alteredFieldMetadata.type), - isArray: alteredFieldMetadata.type === FieldMetadataType.ARRAY, - isNullable: alteredFieldMetadata.isNullable ?? true, - isUnique: alteredFieldMetadata.isUnique ?? false, - defaultValue: serializedDefaultValue, - }, - }, - ]; - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts deleted file mode 100644 index 49930a53fdd..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { Logger } from '@nestjs/common'; - -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type WorkspaceColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-factory.interface'; -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { - type WorkspaceMigrationColumnAction, - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -export class ColumnActionAbstractFactory - implements WorkspaceColumnActionFactory -{ - protected readonly logger = new Logger(ColumnActionAbstractFactory.name); - - create( - action: - | WorkspaceMigrationColumnActionType.CREATE - | WorkspaceMigrationColumnActionType.ALTER, - currentFieldMetadata: FieldMetadataEntity | undefined, - alteredFieldMetadata: FieldMetadataEntity, - options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAction[] { - switch (action) { - case WorkspaceMigrationColumnActionType.CREATE: - return this.handleCreateAction(alteredFieldMetadata, options); - case WorkspaceMigrationColumnActionType.ALTER: { - if (!currentFieldMetadata) { - throw new WorkspaceMigrationException( - 'current field metadata is required for alter', - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - return this.handleAlterAction( - currentFieldMetadata, - alteredFieldMetadata, - options, - ); - } - default: { - this.logger.error(`Invalid action: ${action}`); - throw new WorkspaceMigrationException( - '[AbstractFactory]: invalid action', - WorkspaceMigrationExceptionCode.INVALID_ACTION, - ); - } - } - } - - protected handleCreateAction( - _fieldMetadata: FieldMetadataEntity, - _options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnCreate[] { - throw new WorkspaceMigrationException( - 'handleCreateAction method not implemented.', - WorkspaceMigrationExceptionCode.INVALID_ACTION, - ); - } - - protected handleAlterAction( - _currentFieldMetadata: FieldMetadataEntity, - _alteredFieldMetadata: FieldMetadataEntity, - _options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAlter[] { - throw new WorkspaceMigrationException( - 'handleAlterAction method not implemented.', - WorkspaceMigrationExceptionCode.INVALID_ACTION, - ); - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts deleted file mode 100644 index 5cb9cce7009..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { - FieldMetadataType, - compositeTypeDefinitions, -} from 'twenty-shared/types'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; -import { serializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-default-value'; -import { ColumnActionAbstractFactory } from 'src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -// TODO: could we export this to GraphQL ? -// TODO: once this module is removed, replace existing usages with CompositeFieldMetadataType from composite-field-metadata-type.type.ts -export type CompositeFieldMetadataType = - | FieldMetadataType.ADDRESS - | FieldMetadataType.CURRENCY - | FieldMetadataType.FULL_NAME - | FieldMetadataType.LINKS - | FieldMetadataType.EMAILS - | FieldMetadataType.PHONES - | FieldMetadataType.RICH_TEXT_V2; - -@Injectable() -export class CompositeColumnActionFactory extends ColumnActionAbstractFactory { - protected readonly logger = new Logger(CompositeColumnActionFactory.name); - - protected handleCreateAction( - fieldMetadata: FieldMetadataEntity, - ): WorkspaceMigrationColumnCreate[] { - const compositeType = compositeTypeDefinitions.get(fieldMetadata.type); - - if (!compositeType) { - this.logger.error( - `Composite type not found for field metadata type: ${fieldMetadata.type}`, - ); - throw new WorkspaceMigrationException( - `Composite type not found for field metadata type: ${fieldMetadata.type}`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - const columnActions: WorkspaceMigrationColumnCreate[] = []; - - for (const property of compositeType.properties) { - if (property.type === FieldMetadataType.RELATION) { - throw new WorkspaceMigrationException( - `Relation type not supported for composite columns`, - WorkspaceMigrationExceptionCode.INVALID_COMPOSITE_TYPE, - ); - } - - const columnName = computeCompositeColumnName(fieldMetadata, property); - // @ts-expect-error legacy noImplicitAny - const defaultValue = fieldMetadata.defaultValue?.[property.name]; - const serializedDefaultValue = serializeDefaultValue(defaultValue); - const enumOptions = property.options - ? [...property.options.map((option) => option.value)] - : undefined; - - columnActions.push({ - action: WorkspaceMigrationColumnActionType.CREATE, - columnName, - columnType: fieldMetadataTypeToColumnType(property.type), - enum: enumOptions, - isNullable: fieldMetadata.isNullable || !property.isRequired, - isUnique: fieldMetadata.isUnique ?? undefined, - defaultValue: serializedDefaultValue, - isArray: - property.type === FieldMetadataType.MULTI_SELECT || property.isArray, - }); - } - - return columnActions; - } - - protected handleAlterAction( - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: FieldMetadataEntity, - ): WorkspaceMigrationColumnAlter[] { - const currentCompositeType = compositeTypeDefinitions.get( - currentFieldMetadata.type, - ); - const alteredCompositeType = compositeTypeDefinitions.get( - alteredFieldMetadata.type, - ); - - if (!currentCompositeType || !alteredCompositeType) { - this.logger.error( - `Composite type not found for field metadata type: ${currentFieldMetadata.type} or ${alteredFieldMetadata.type}`, - ); - throw new WorkspaceMigrationException( - `Composite type not found for field metadata type: ${currentFieldMetadata.type} or ${alteredFieldMetadata.type}`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - const columnActions: WorkspaceMigrationColumnAlter[] = []; - - for (const alteredProperty of alteredCompositeType.properties) { - // TODO: Based on the name for now, we can add a more robust check in the future - const currentProperty = currentCompositeType.properties.find( - (p) => p.name === alteredProperty.name, - ); - - if (!currentProperty) { - this.logger.error( - `Current property not found for altered property: ${alteredProperty.name}`, - ); - throw new WorkspaceMigrationException( - `Current property not found for altered property: ${alteredProperty.name}`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - if ( - alteredProperty.type === FieldMetadataType.RELATION || - currentProperty.type === FieldMetadataType.RELATION - ) { - throw new WorkspaceMigrationException( - `Relation type not supported for composite columns`, - WorkspaceMigrationExceptionCode.INVALID_COMPOSITE_TYPE, - ); - } - - const currentColumnName = computeCompositeColumnName( - currentFieldMetadata, - currentProperty, - ); - const alteredColumnName = computeCompositeColumnName( - alteredFieldMetadata, - alteredProperty, - ); - const defaultValue = - // @ts-expect-error legacy noImplicitAny - alteredFieldMetadata.defaultValue?.[alteredProperty.name]; - const serializedDefaultValue = serializeDefaultValue(defaultValue); - const enumOptions = alteredProperty.options - ? [ - ...alteredProperty.options.map((option) => { - const currentOption = currentProperty.options?.find( - (currentOption) => currentOption.id === option.id, - ); - - // The id is the same, but the value is different, so we need to alter the enum - if (currentOption && currentOption.value !== option.value) { - return { - from: currentOption.value, - to: option.value, - }; - } - - return option.value; - }), - ] - : undefined; - - columnActions.push({ - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: currentColumnName, - columnType: fieldMetadataTypeToColumnType(currentProperty.type), - enum: currentProperty.options - ? [...currentProperty.options.map((option) => option.value)] - : undefined, - isNullable: - currentFieldMetadata.isNullable || !currentProperty.isRequired, - isUnique: currentFieldMetadata.isUnique ?? false, - defaultValue: serializeDefaultValue( - // @ts-expect-error legacy noImplicitAny - currentFieldMetadata.defaultValue?.[currentProperty.name], - ), - isArray: - currentProperty.type === FieldMetadataType.MULTI_SELECT || - currentProperty.isArray, - }, - alteredColumnDefinition: { - columnName: alteredColumnName, - columnType: fieldMetadataTypeToColumnType(alteredProperty.type), - enum: enumOptions, - isNullable: - alteredFieldMetadata.isNullable || !alteredProperty.isRequired, - isUnique: - (alteredFieldMetadata.isUnique && - alteredProperty.isIncludedInUniqueConstraint) ?? - false, - defaultValue: serializedDefaultValue, - isArray: - alteredProperty.type === FieldMetadataType.MULTI_SELECT || - alteredProperty.isArray, - }, - }); - } - - return columnActions; - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/enum-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/enum-column-action.factory.ts deleted file mode 100644 index 3c38f9a26c7..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/enum-column-action.factory.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { - type EnumFieldMetadataType, - FieldMetadataType, -} from 'twenty-shared/types'; - -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { computeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; -import { serializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-default-value'; -import { ColumnActionAbstractFactory } from 'src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -@Injectable() -export class EnumColumnActionFactory extends ColumnActionAbstractFactory { - protected readonly logger = new Logger(EnumColumnActionFactory.name); - - protected handleCreateAction( - fieldMetadata: FieldMetadataEntity, - options: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnCreate[] { - const columnName = computeColumnName(fieldMetadata); - const defaultValue = fieldMetadata.defaultValue ?? options?.defaultValue; - const serializedDefaultValue = serializeDefaultValue(defaultValue); - const enumOptions = fieldMetadata.options - ? [...fieldMetadata.options.map((option) => option.value)] - : undefined; - - return [ - { - action: WorkspaceMigrationColumnActionType.CREATE, - columnName, - columnType: fieldMetadataTypeToColumnType(fieldMetadata.type), - enum: enumOptions, - isArray: fieldMetadata.type === FieldMetadataType.MULTI_SELECT, - isNullable: fieldMetadata.isNullable ?? true, - isUnique: fieldMetadata.isUnique ?? false, - defaultValue: serializedDefaultValue, - }, - ]; - } - - protected handleAlterAction( - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: FieldMetadataEntity, - options: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAlter[] { - const currentColumnName = computeColumnName(currentFieldMetadata); - const alteredColumnName = computeColumnName(alteredFieldMetadata); - const defaultValue = - alteredFieldMetadata.defaultValue ?? options?.defaultValue; - const serializedDefaultValue = serializeDefaultValue(defaultValue); - - const enumOptions = alteredFieldMetadata.options - ? [ - ...alteredFieldMetadata.options.map((option) => { - const currentOption = currentFieldMetadata.options?.find( - (currentOption) => currentOption.id === option.id, - ); - - // The id is the same, but the value is different, so we need to alter the enum - if (currentOption && currentOption.value !== option.value) { - return { - from: currentOption.value, - to: option.value, - }; - } - - return option.value; - }), - ] - : undefined; - - if (!currentColumnName || !alteredColumnName) { - this.logger.error( - `Column name not found for current or altered field metadata, can be due to a missing or an invalid target column map. Current column name: ${currentColumnName}, Altered column name: ${alteredColumnName}.`, - ); - throw new WorkspaceMigrationException( - `Column name not found for current or altered field metadata`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - return [ - { - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: currentColumnName, - columnType: fieldMetadataTypeToColumnType(currentFieldMetadata.type), - enum: currentFieldMetadata.options - ? [...currentFieldMetadata.options.map((option) => option.value)] - : undefined, - isArray: currentFieldMetadata.type === FieldMetadataType.MULTI_SELECT, - isNullable: currentFieldMetadata.isNullable ?? true, - isUnique: currentFieldMetadata.isUnique ?? false, - defaultValue: serializeDefaultValue( - currentFieldMetadata.defaultValue, - ), - }, - alteredColumnDefinition: { - columnName: alteredColumnName, - columnType: fieldMetadataTypeToColumnType(alteredFieldMetadata.type), - enum: enumOptions, - isArray: alteredFieldMetadata.type === FieldMetadataType.MULTI_SELECT, - isNullable: alteredFieldMetadata.isNullable ?? true, - isUnique: alteredFieldMetadata.isUnique ?? false, - defaultValue: serializedDefaultValue, - }, - }, - ]; - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/factories.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/factories.ts deleted file mode 100644 index 8244049ffe8..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/factories.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BasicColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/basic-column-action.factory'; -import { CompositeColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; -import { EnumColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/enum-column-action.factory'; -import { MorphRelationColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/morph-relation-column-action.factory'; -import { RelationColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/relation-column-action.factory'; -import { TsVectorColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory'; - -export const workspaceColumnActionFactories = [ - TsVectorColumnActionFactory, - BasicColumnActionFactory, - EnumColumnActionFactory, - CompositeColumnActionFactory, - RelationColumnActionFactory, - MorphRelationColumnActionFactory, -]; diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/morph-relation-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/morph-relation-column-action.factory.ts deleted file mode 100644 index 3bf86c5dcfc..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/morph-relation-column-action.factory.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { ColumnActionAbstractFactory } from 'src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -@Injectable() -export class MorphRelationColumnActionFactory extends ColumnActionAbstractFactory { - protected readonly logger = new Logger(MorphRelationColumnActionFactory.name); - - protected handleCreateAction( - fieldMetadata: FieldMetadataEntity, - _options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnCreate[] { - if (!fieldMetadata.settings || !fieldMetadata.settings.joinColumnName) { - return []; - } - - const joinColumnName = fieldMetadata.settings.joinColumnName; - - return [ - { - action: WorkspaceMigrationColumnActionType.CREATE, - columnName: joinColumnName, - columnType: fieldMetadataTypeToColumnType(FieldMetadataType.UUID), - isArray: false, - isNullable: fieldMetadata.isNullable ?? true, - isUnique: false, - defaultValue: null, - }, - ]; - } - - protected handleAlterAction( - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: FieldMetadataEntity, - _options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAlter[] { - if (!currentFieldMetadata.settings || !alteredFieldMetadata.settings) { - return []; - } - - if ( - currentFieldMetadata.settings.relationType === RelationType.ONE_TO_MANY - ) { - return []; - } - - const currentJoinColumnName = currentFieldMetadata.settings.joinColumnName; - const alteredJoinColumnName = alteredFieldMetadata.settings.joinColumnName; - - if (!currentJoinColumnName || !alteredJoinColumnName) { - throw new WorkspaceMigrationException( - `Column name not found for current or altered field metadata`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - return [ - { - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: currentJoinColumnName, - columnType: fieldMetadataTypeToColumnType(FieldMetadataType.UUID), - isArray: false, - isNullable: currentFieldMetadata.isNullable ?? true, - isUnique: false, - defaultValue: null, - }, - alteredColumnDefinition: { - columnName: alteredJoinColumnName, - columnType: fieldMetadataTypeToColumnType(FieldMetadataType.UUID), - isArray: false, - isNullable: alteredFieldMetadata.isNullable ?? true, - isUnique: false, - defaultValue: null, - }, - }, - ]; - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/relation-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/relation-column-action.factory.ts deleted file mode 100644 index 23c48586a22..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/relation-column-action.factory.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { ColumnActionAbstractFactory } from 'src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -@Injectable() -export class RelationColumnActionFactory extends ColumnActionAbstractFactory { - protected readonly logger = new Logger(RelationColumnActionFactory.name); - - protected handleCreateAction( - fieldMetadata: FieldMetadataEntity, - _options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnCreate[] { - if (!fieldMetadata.settings || !fieldMetadata.settings.joinColumnName) { - return []; - } - - const joinColumnName = fieldMetadata.settings.joinColumnName; - - return [ - { - action: WorkspaceMigrationColumnActionType.CREATE, - columnName: joinColumnName, - columnType: fieldMetadataTypeToColumnType(FieldMetadataType.UUID), - isArray: false, - isNullable: fieldMetadata.isNullable ?? true, - isUnique: false, - defaultValue: null, - }, - ]; - } - - protected handleAlterAction( - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: FieldMetadataEntity, - _options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAlter[] { - if (!currentFieldMetadata.settings || !alteredFieldMetadata.settings) { - return []; - } - - if ( - currentFieldMetadata.settings.relationType === RelationType.ONE_TO_MANY - ) { - return []; - } - - const currentJoinColumnName = currentFieldMetadata.settings.joinColumnName; - const alteredJoinColumnName = alteredFieldMetadata.settings.joinColumnName; - - if (!currentJoinColumnName || !alteredJoinColumnName) { - this.logger.error( - `Column name not found for current or altered field metadata, can be due to a missing or an invalid target column map. Current column name: ${currentJoinColumnName}, Altered column name: ${alteredJoinColumnName}.`, - ); - throw new WorkspaceMigrationException( - `Column name not found for current or altered field metadata`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, - ); - } - - return [ - { - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: currentJoinColumnName, - columnType: fieldMetadataTypeToColumnType(FieldMetadataType.UUID), - isArray: false, - isNullable: currentFieldMetadata.isNullable ?? true, - isUnique: false, - defaultValue: null, - }, - alteredColumnDefinition: { - columnName: alteredJoinColumnName, - columnType: fieldMetadataTypeToColumnType(FieldMetadataType.UUID), - isArray: false, - isNullable: alteredFieldMetadata.isNullable ?? true, - isUnique: false, - defaultValue: null, - }, - }, - ]; - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory.ts deleted file mode 100644 index 0644861457e..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { computeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; -import { ColumnActionAbstractFactory } from 'src/engine/metadata-modules/workspace-migration/factories/column-action-abstract.factory'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; - -export type TsVectorFieldMetadata = - FieldMetadataEntity & { - generatedType?: 'STORED' | 'VIRTUAL'; - asExpression?: string; - }; - -export type TsVectorFieldMetadataType = FieldMetadataType.TS_VECTOR; -@Injectable() -export class TsVectorColumnActionFactory extends ColumnActionAbstractFactory { - protected readonly logger = new Logger(TsVectorColumnActionFactory.name); - - handleCreateAction( - fieldMetadata: TsVectorFieldMetadata, - ): WorkspaceMigrationColumnCreate[] { - return [ - { - action: WorkspaceMigrationColumnActionType.CREATE, - columnName: computeColumnName(fieldMetadata), - columnType: fieldMetadataTypeToColumnType(fieldMetadata.type), - isNullable: fieldMetadata.isNullable ?? true, - isUnique: fieldMetadata.isUnique ?? false, - defaultValue: undefined, - generatedType: fieldMetadata.generatedType, - asExpression: fieldMetadata.asExpression, - }, - ]; - } - - handleAlterAction( - currentFieldMetadata: TsVectorFieldMetadata, - alteredFieldMetadata: TsVectorFieldMetadata, - ): WorkspaceMigrationColumnAlter[] { - return [ - { - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: currentFieldMetadata.name, - columnType: fieldMetadataTypeToColumnType(currentFieldMetadata.type), - isNullable: currentFieldMetadata.isNullable ?? true, - defaultValue: undefined, - }, - alteredColumnDefinition: { - columnName: alteredFieldMetadata.name, - columnType: fieldMetadataTypeToColumnType(alteredFieldMetadata.type), - isNullable: alteredFieldMetadata.isNullable ?? true, - defaultValue: undefined, - asExpression: alteredFieldMetadata.asExpression, - generatedType: alteredFieldMetadata.generatedType, - }, - }, - ]; - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-factory.interface.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-factory.interface.ts deleted file mode 100644 index 67526bfc387..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-factory.interface.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { - type WorkspaceMigrationColumnAction, - type WorkspaceMigrationColumnActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; - -export interface WorkspaceColumnActionFactory { - create( - action: - | WorkspaceMigrationColumnActionType.CREATE - | WorkspaceMigrationColumnActionType.ALTER, - currentFieldMetadata: FieldMetadataEntity | undefined, - alteredFieldMetadata: FieldMetadataEntity, - options?: WorkspaceColumnActionOptions, - ): WorkspaceMigrationColumnAction[]; -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface.ts deleted file mode 100644 index c100117d887..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface WorkspaceColumnActionOptions { - defaultValue?: string; -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util.ts deleted file mode 100644 index 988ff1be8e6..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function generateMigrationName(name?: string): string { - return `${new Date().getTime()}${name ? `-${name}` : ''}`; -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.entity.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.entity.ts deleted file mode 100644 index 094507bf867..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.entity.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { type RelationOnDeleteAction } from 'twenty-shared/types'; -import { - Column, - CreateDateColumn, - Entity, - PrimaryGeneratedColumn, -} from 'typeorm'; - -import { type IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; - -export enum WorkspaceMigrationColumnActionType { - CREATE = 'CREATE', - ALTER = 'ALTER', - CREATE_FOREIGN_KEY = 'CREATE_FOREIGN_KEY', - DROP_FOREIGN_KEY = 'DROP_FOREIGN_KEY', - DROP = 'DROP', -} -export type WorkspaceMigrationRenamedEnum = { from: string; to: string }; -export type WorkspaceMigrationEnum = string | WorkspaceMigrationRenamedEnum; - -export enum WorkspaceMigrationIndexActionType { - CREATE = 'CREATE', - DROP = 'DROP', -} - -export interface WorkspaceMigrationColumnDefinition { - columnName: string; - columnType: string; - enum?: WorkspaceMigrationEnum[]; - isArray?: boolean; - isNullable: boolean; - isUnique?: boolean; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - defaultValue: any; - generatedType?: 'STORED' | 'VIRTUAL'; - asExpression?: string; -} - -export interface WorkspaceMigrationIndexAction { - action: WorkspaceMigrationIndexActionType; - name: string; - columns: string[]; - isUnique: boolean; - where?: string | null; - type?: IndexType; -} - -export interface WorkspaceMigrationColumnCreate - extends WorkspaceMigrationColumnDefinition { - action: WorkspaceMigrationColumnActionType.CREATE; -} - -export type WorkspaceMigrationColumnAlter = { - action: WorkspaceMigrationColumnActionType.ALTER; - currentColumnDefinition: WorkspaceMigrationColumnDefinition; - alteredColumnDefinition: WorkspaceMigrationColumnDefinition; -}; - -export type WorkspaceMigrationColumnCreateForeignKey = { - action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY; - columnName: string; - referencedTableName: string; - referencedTableColumnName: string; - onDelete?: RelationOnDeleteAction; -}; - -export type WorkspaceMigrationColumnDropForeignKey = { - action: WorkspaceMigrationColumnActionType.DROP_FOREIGN_KEY; - columnName: string; -}; - -export type WorkspaceMigrationColumnDrop = { - action: WorkspaceMigrationColumnActionType.DROP; - columnName: string; -}; - -export type WorkspaceMigrationForeignColumnDefinition = - WorkspaceMigrationColumnDefinition & { - distantColumnName: string; - }; - -type ReferencedObject = { - object: string; -}; - -type ReferencedTableWithSchema = { - table_name: string; - schema_name: string; -}; - -export type ReferencedTable = ReferencedObject | ReferencedTableWithSchema; - -export type WorkspaceMigrationForeignTable = { - columns: WorkspaceMigrationForeignColumnDefinition[]; - referencedTable: ReferencedObject | ReferencedTableWithSchema; - foreignDataWrapperId: string; -}; - -export type WorkspaceMigrationColumnAction = { - action: WorkspaceMigrationColumnActionType; -} & ( - | WorkspaceMigrationColumnCreate - | WorkspaceMigrationColumnAlter - | WorkspaceMigrationColumnCreateForeignKey - | WorkspaceMigrationColumnDropForeignKey - | WorkspaceMigrationColumnDrop -); - -/** - * Enum values are lowercase to avoid issues with already existing enum values - */ -export enum WorkspaceMigrationTableActionType { - CREATE = 'create', - ALTER = 'alter', - DROP = 'drop', - CREATE_FOREIGN_TABLE = 'create_foreign_table', - DROP_FOREIGN_TABLE = 'drop_foreign_table', - ALTER_FOREIGN_TABLE = 'alter_foreign_table', - ALTER_INDEXES = 'alter_indexes', -} - -export type WorkspaceMigrationTableAction = { - name: string; - newName?: string; - action: WorkspaceMigrationTableActionType; - columns?: WorkspaceMigrationColumnAction[]; - foreignTable?: WorkspaceMigrationForeignTable; - indexes?: WorkspaceMigrationIndexAction[]; -}; - -@Entity('workspaceMigration') -export class WorkspaceMigrationEntity extends WorkspaceRelatedEntity { - @PrimaryGeneratedColumn('uuid') - id: string; - - @Column({ nullable: true, type: 'jsonb' }) - migrations: WorkspaceMigrationTableAction[]; - - @Column({ nullable: false }) - name: string; - - @Column({ default: false }) - isCustom: boolean; - - @Column({ nullable: true, type: 'timestamptz' }) - appliedAt?: Date; - - @CreateDateColumn({ type: 'timestamptz' }) - createdAt: Date; -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.exception.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.exception.ts deleted file mode 100644 index 3f812b77bfa..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.exception.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { type MessageDescriptor } from '@lingui/core'; -import { msg } from '@lingui/core/macro'; -import { assertUnreachable } from 'twenty-shared/utils'; - -import { CustomException } from 'src/utils/custom-exception'; - -export enum WorkspaceMigrationExceptionCode { - NO_FACTORY_FOUND = 'NO_FACTORY_FOUND', - INVALID_ACTION = 'INVALID_ACTION', - INVALID_FIELD_METADATA = 'INVALID_FIELD_METADATA', - INVALID_COMPOSITE_TYPE = 'INVALID_COMPOSITE_TYPE', - ENUM_TYPE_NAME_NOT_FOUND = 'ENUM_TYPE_NAME_NOT_FOUND', -} - -const getWorkspaceMigrationExceptionUserFriendlyMessage = ( - code: WorkspaceMigrationExceptionCode, -) => { - switch (code) { - case WorkspaceMigrationExceptionCode.NO_FACTORY_FOUND: - return msg`Migration factory not found.`; - case WorkspaceMigrationExceptionCode.INVALID_ACTION: - return msg`Invalid migration action.`; - case WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA: - return msg`Invalid field metadata.`; - case WorkspaceMigrationExceptionCode.INVALID_COMPOSITE_TYPE: - return msg`Invalid composite type.`; - case WorkspaceMigrationExceptionCode.ENUM_TYPE_NAME_NOT_FOUND: - return msg`Enum type not found.`; - default: - assertUnreachable(code); - } -}; - -export class WorkspaceMigrationException extends CustomException { - constructor( - message: string, - code: WorkspaceMigrationExceptionCode, - { userFriendlyMessage }: { userFriendlyMessage?: MessageDescriptor } = {}, - ) { - super(message, code, { - userFriendlyMessage: - userFriendlyMessage ?? - getWorkspaceMigrationExceptionUserFriendlyMessage(code), - }); - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.factory.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.factory.ts deleted file mode 100644 index b319057f8ae..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.factory.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type WorkspaceColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-factory.interface'; -import { type WorkspaceColumnActionOptions } from 'src/engine/metadata-modules/workspace-migration/interfaces/workspace-column-action-options.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { BasicColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/basic-column-action.factory'; -import { CompositeColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; -import { EnumColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/enum-column-action.factory'; -import { MorphRelationColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/morph-relation-column-action.factory'; -import { RelationColumnActionFactory } from 'src/engine/metadata-modules/workspace-migration/factories/relation-column-action.factory'; -import { - TsVectorColumnActionFactory, - type TsVectorFieldMetadata, -} from 'src/engine/metadata-modules/workspace-migration/factories/ts-vector-column-action.factory'; -import { - type WorkspaceMigrationColumnAction, - WorkspaceMigrationColumnActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -@Injectable() -export class WorkspaceMigrationFactory { - private readonly logger = new Logger(WorkspaceMigrationFactory.name); - private factoriesMap: Map< - FieldMetadataType, - { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - factory: WorkspaceColumnActionFactory; - options?: WorkspaceColumnActionOptions; - } - >; - - constructor( - private readonly basicColumnActionFactory: BasicColumnActionFactory, - private readonly tsVectorColumnActionFactory: TsVectorColumnActionFactory, - private readonly enumColumnActionFactory: EnumColumnActionFactory, - private readonly compositeColumnActionFactory: CompositeColumnActionFactory, - private readonly relationColumnActionFactory: RelationColumnActionFactory, - private readonly morphRelationColumnActionFactory: MorphRelationColumnActionFactory, - ) { - this.factoriesMap = new Map< - FieldMetadataType, - { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - factory: WorkspaceColumnActionFactory; - options?: WorkspaceColumnActionOptions; - } - >([ - [FieldMetadataType.UUID, { factory: this.basicColumnActionFactory }], - [ - FieldMetadataType.TEXT, - { - factory: this.basicColumnActionFactory, - }, - ], - [FieldMetadataType.NUMERIC, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.NUMBER, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.POSITION, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.RAW_JSON, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.RICH_TEXT, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.BOOLEAN, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.DATE_TIME, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.DATE, { factory: this.basicColumnActionFactory }], - [FieldMetadataType.RATING, { factory: this.enumColumnActionFactory }], - [FieldMetadataType.SELECT, { factory: this.enumColumnActionFactory }], - [ - FieldMetadataType.MULTI_SELECT, - { factory: this.enumColumnActionFactory }, - ], - [ - FieldMetadataType.CURRENCY, - { factory: this.compositeColumnActionFactory }, - ], - [ - FieldMetadataType.ADDRESS, - { factory: this.compositeColumnActionFactory }, - ], - [ - FieldMetadataType.FULL_NAME, - { factory: this.compositeColumnActionFactory }, - ], - [FieldMetadataType.LINKS, { factory: this.compositeColumnActionFactory }], - [FieldMetadataType.ACTOR, { factory: this.compositeColumnActionFactory }], - [FieldMetadataType.ARRAY, { factory: this.basicColumnActionFactory }], - [ - FieldMetadataType.EMAILS, - { factory: this.compositeColumnActionFactory }, - ], - [ - FieldMetadataType.PHONES, - { factory: this.compositeColumnActionFactory }, - ], - [ - FieldMetadataType.TS_VECTOR, - { factory: this.tsVectorColumnActionFactory }, - ], - [ - FieldMetadataType.RICH_TEXT_V2, - { factory: this.compositeColumnActionFactory }, - ], - [ - FieldMetadataType.RELATION, - { factory: this.relationColumnActionFactory }, - ], - [ - FieldMetadataType.MORPH_RELATION, - { factory: this.morphRelationColumnActionFactory }, - ], - ]); - } - - createColumnActions( - action: WorkspaceMigrationColumnActionType.CREATE, - fieldMetadata: FieldMetadataEntity, - ): WorkspaceMigrationColumnAction[]; - - createColumnActions( - action: WorkspaceMigrationColumnActionType.ALTER, - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: FieldMetadataEntity, - ): WorkspaceMigrationColumnAction[]; - - createColumnActions( - action: WorkspaceMigrationColumnActionType.ALTER, - currentFieldMetadata: FieldMetadataEntity, - alteredFieldMetadata: TsVectorFieldMetadata, - ): WorkspaceMigrationColumnAction[]; - - createColumnActions( - action: - | WorkspaceMigrationColumnActionType.CREATE - | WorkspaceMigrationColumnActionType.ALTER, - fieldMetadataOrCurrentFieldMetadata: FieldMetadataEntity, - undefinedOrAlteredFieldMetadata?: FieldMetadataEntity, - ): WorkspaceMigrationColumnAction[] { - const currentFieldMetadata = - action === WorkspaceMigrationColumnActionType.ALTER - ? fieldMetadataOrCurrentFieldMetadata - : undefined; - const alteredFieldMetadata = - action === WorkspaceMigrationColumnActionType.CREATE - ? fieldMetadataOrCurrentFieldMetadata - : undefinedOrAlteredFieldMetadata; - - if (!alteredFieldMetadata) { - this.logger.error( - `No field metadata provided for action ${action}`, - undefinedOrAlteredFieldMetadata, - ); - - throw new WorkspaceMigrationException( - `No field metadata provided for action ${action}`, - WorkspaceMigrationExceptionCode.INVALID_ACTION, - ); - } - - const columnActions = this.createColumnAction( - action, - currentFieldMetadata, - alteredFieldMetadata, - ); - - return columnActions; - } - - private createColumnAction( - action: - | WorkspaceMigrationColumnActionType.CREATE - | WorkspaceMigrationColumnActionType.ALTER, - currentFieldMetadata: FieldMetadataEntity | undefined, - alteredFieldMetadata: FieldMetadataEntity, - ): WorkspaceMigrationColumnAction[] { - const { factory, options } = - this.factoriesMap.get(alteredFieldMetadata.type) ?? {}; - - if (!factory) { - this.logger.error( - `No factory found for type ${alteredFieldMetadata.type}`, - { - alteredFieldMetadata, - }, - ); - - throw new WorkspaceMigrationException( - `No factory found for type ${alteredFieldMetadata.type}`, - WorkspaceMigrationExceptionCode.NO_FACTORY_FOUND, - ); - } - - return factory.create( - action, - currentFieldMetadata, - alteredFieldMetadata, - options, - ); - } -} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.module.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.module.ts deleted file mode 100644 index 0a129943307..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; - -import { workspaceColumnActionFactories } from 'src/engine/metadata-modules/workspace-migration/factories/factories'; -import { WorkspaceMigrationFactory } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.factory'; - -import { WorkspaceMigrationEntity } from './workspace-migration.entity'; -import { WorkspaceMigrationService } from './workspace-migration.service'; - -@Module({ - imports: [TypeOrmModule.forFeature([WorkspaceMigrationEntity])], - providers: [ - ...workspaceColumnActionFactories, - WorkspaceMigrationFactory, - WorkspaceMigrationService, - ], - exports: [ - ...workspaceColumnActionFactories, - WorkspaceMigrationFactory, - WorkspaceMigrationService, - ], -}) -export class WorkspaceMigrationModule {} diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.service.ts b/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.service.ts deleted file mode 100644 index 7af7b39005a..00000000000 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/workspace-migration.service.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; - -import { IsNull, type QueryRunner, Repository } from 'typeorm'; - -import { - WorkspaceMigrationEntity, - type WorkspaceMigrationTableAction, -} from './workspace-migration.entity'; - -@Injectable() -export class WorkspaceMigrationService { - constructor( - @InjectRepository(WorkspaceMigrationEntity) - private readonly workspaceMigrationRepository: Repository, - ) {} - - /** - * Get all pending migrations for a given workspaceId - * - * @returns Promise - * @param workspaceId - */ - public async getPendingMigrations( - workspaceId: string, - queryRunner?: QueryRunner, - ): Promise { - const workspaceMigrationRepository = queryRunner - ? queryRunner.manager.getRepository(WorkspaceMigrationEntity) - : this.workspaceMigrationRepository; - - const pendingMigrations = await workspaceMigrationRepository.find({ - order: { createdAt: 'ASC', name: 'ASC' }, - where: { - appliedAt: IsNull(), - workspaceId, - }, - }); - - const typeOrder = { delete: 1, update: 2, create: 3 }; - - const getType = (name: string) => - name.split('-')[1] as keyof typeof typeOrder; - - return pendingMigrations.sort((a, b) => { - if (a.createdAt.getTime() !== b.createdAt.getTime()) { - return a.createdAt.getTime() - b.createdAt.getTime(); - } - - return ( - (typeOrder[getType(a.name)] || 4) - (typeOrder[getType(b.name)] || 4) || - a.name.localeCompare(b.name) - ); - }); - } - - /** - * Find workspaces with pending migrations - * - * @returns Promise<{ workspaceId: string; pendingMigrations: number }[]> - */ - public async getWorkspacesWithPendingMigrations(limit: number) { - const results = await this.workspaceMigrationRepository - .createQueryBuilder('workspaceMigration') - .select('workspaceMigration.workspaceId', 'workspaceId') - .addSelect('COUNT(*)', 'pendingCount') - .where('workspaceMigration.appliedAt IS NULL') - .groupBy('workspaceMigration.workspaceId') - .limit(limit) - .getRawMany(); - - return results.map((result) => ({ - workspaceId: result.workspaceId, - pendingMigrations: Number(result.pendingCount) || 0, - })); - } - - /** - * Count total number of workspaces with pending migrations - * - * @returns Promise - */ - public async countWorkspacesWithPendingMigrations(): Promise { - const result = await this.workspaceMigrationRepository - .createQueryBuilder('workspaceMigration') - .select('COUNT(DISTINCT workspaceMigration.workspaceId)', 'count') - .where('workspaceMigration.appliedAt IS NULL') - .getRawOne(); - - return Number(result.count) || 0; - } - - /** - * Set appliedAt as current date for a given migration. - * Should be called once the migration has been applied - * - * @param workspaceId - * @param migration - */ - public async setAppliedAtForMigration( - workspaceId: string, - migration: WorkspaceMigrationEntity, - ) { - await this.workspaceMigrationRepository.update( - { id: migration.id, workspaceId }, - { appliedAt: new Date() }, - ); - } - - /** - * Create a new pending migration for a given workspaceId and expected changes - * - * @param name - * @param workspaceId - * @param migrations - */ - public async createCustomMigration( - name: string, - workspaceId: string, - migrations: WorkspaceMigrationTableAction[], - queryRunner?: QueryRunner, - ) { - const workspaceMigrationRepository = queryRunner - ? queryRunner.manager.getRepository(WorkspaceMigrationEntity) - : this.workspaceMigrationRepository; - - const migration = await workspaceMigrationRepository.save({ - name, - migrations, - workspaceId, - isCustom: true, - createdAt: new Date(), - }); - - return migration; - } - - public async deleteAllWithinWorkspace(workspaceId: string) { - await this.workspaceMigrationRepository.delete({ workspaceId }); - } - - public async deleteById(id: string) { - await this.workspaceMigrationRepository.delete({ id }); - } -} diff --git a/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.decorator.ts b/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.decorator.ts index 9160ae0d27e..07c15e9b2cd 100644 --- a/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.decorator.ts +++ b/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.decorator.ts @@ -2,7 +2,7 @@ import { Inject } from '@nestjs/common'; import { capitalize } from 'twenty-shared/utils'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; +import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/utils/convert-class-to-object-metadata-name.util'; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const InjectObjectMetadataRepository = (objectMetadata: any) => { diff --git a/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.module.ts b/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.module.ts index 91dca544203..6e4f643c580 100644 --- a/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.module.ts +++ b/packages/twenty-server/src/engine/object-metadata-repository/object-metadata-repository.module.ts @@ -11,7 +11,7 @@ import { metadataToRepositoryMapping } from 'src/engine/object-metadata-reposito import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; +import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/utils/convert-class-to-object-metadata-name.util'; @Global() @Module({}) diff --git a/packages/twenty-server/src/engine/twenty-orm/base.workspace-entity.ts b/packages/twenty-server/src/engine/twenty-orm/base.workspace-entity.ts index 113855e659b..8b10ebe92a2 100644 --- a/packages/twenty-server/src/engine/twenty-orm/base.workspace-entity.ts +++ b/packages/twenty-server/src/engine/twenty-orm/base.workspace-entity.ts @@ -1,66 +1,6 @@ -import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, DateDisplayFormat } from 'twenty-shared/types'; - -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsPrimaryField } from 'src/engine/twenty-orm/decorators/workspace-is-primary-field.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { BASE_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - export abstract class BaseWorkspaceEntity { - @WorkspaceField({ - standardId: BASE_OBJECT_STANDARD_FIELD_IDS.id, - type: FieldMetadataType.UUID, - label: msg`Id`, - description: msg`Id`, - defaultValue: 'uuid', - icon: 'Icon123', - }) - @WorkspaceIsPrimaryField() - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() id: string; - - @WorkspaceField({ - standardId: BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Creation date`, - description: msg`Creation date`, - icon: 'IconCalendar', - defaultValue: 'now', - settings: { - displayFormat: DateDisplayFormat.RELATIVE, - }, - }) - @WorkspaceIsFieldUIReadOnly() createdAt: string; - - @WorkspaceField({ - standardId: BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Last update`, - description: msg`Last time the record was changed`, - icon: 'IconCalendarClock', - defaultValue: 'now', - settings: { - displayFormat: DateDisplayFormat.RELATIVE, - }, - }) - @WorkspaceIsFieldUIReadOnly() updatedAt: string; - - @WorkspaceField({ - standardId: BASE_OBJECT_STANDARD_FIELD_IDS.deletedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Deleted at`, - description: msg`Date when the record was deleted`, - icon: 'IconCalendarMinus', - settings: { - displayFormat: DateDisplayFormat.RELATIVE, - }, - }) - @WorkspaceIsNullable() - @WorkspaceIsFieldUIReadOnly() deletedAt: string | null; } diff --git a/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts b/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts index 1754383d9e8..614da7bacfb 100644 --- a/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts +++ b/packages/twenty-server/src/engine/twenty-orm/custom.workspace-entity.ts @@ -1,33 +1,13 @@ -import { msg } from '@lingui/core/macro'; -import { - ActorMetadata, - FieldMetadataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; +import { type ActorMetadata, FieldMetadataType } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; import { DEFAULT_LABEL_IDENTIFIER_FIELD_NAME } from 'src/engine/metadata-modules/object-metadata/constants/object-metadata.constants'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceCustomEntity } from 'src/engine/twenty-orm/decorators/workspace-custom-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { CUSTOM_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; -import { TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; +import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; export const SEARCH_FIELDS_FOR_CUSTOM_OBJECT: FieldTypeAndNameMetadata[] = [ { @@ -35,147 +15,15 @@ export const SEARCH_FIELDS_FOR_CUSTOM_OBJECT: FieldTypeAndNameMetadata[] = [ type: FieldMetadataType.TEXT, }, ]; -@WorkspaceCustomEntity() export class CustomWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.name, - label: msg`Name`, - description: msg`Name`, - type: FieldMetadataType.TEXT, - icon: 'IconAbc', - }) - @WorkspaceIsNullable() name: string | null; - - @WorkspaceField({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.position, - label: msg`Position`, - description: msg`Position`, - type: FieldMetadataType.POSITION, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() - @WorkspaceIsFieldUIReadOnly() position: number; - - @WorkspaceField({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceRelation({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.noteTargets, - label: msg`Notes`, - type: RelationType.ONE_TO_MANY, - description: (objectMetadata) => { - const label = objectMetadata.labelSingular; - - return msg`Notes tied to the ${label}`; - }, - icon: 'IconNotes', - inverseSideTarget: () => NoteTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() noteTargets: NoteTargetWorkspaceEntity[]; - - @WorkspaceRelation({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.taskTargets, - label: msg`Tasks`, - type: RelationType.ONE_TO_MANY, - description: (objectMetadata) => { - const label = objectMetadata.labelSingular; - - return msg`Tasks tied to the ${label}`; - }, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() taskTargets: TaskTargetWorkspaceEntity[]; - - @WorkspaceRelation({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.favorites, - label: msg`Favorites`, - type: RelationType.ONE_TO_MANY, - description: (objectMetadata) => { - const label = objectMetadata.labelSingular; - - return msg`Favorites tied to the ${label}`; - }, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() favorites: FavoriteWorkspaceEntity[]; - - @WorkspaceRelation({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.attachments, - label: msg`Attachments`, - type: RelationType.ONE_TO_MANY, - description: (objectMetadata) => { - const label = objectMetadata.labelSingular; - - return msg`Attachments tied to the ${label}`; - }, - icon: 'IconFileImport', - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() attachments: AttachmentWorkspaceEntity[]; - - @WorkspaceRelation({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.timelineActivities, - label: msg`Timeline Activities`, - type: RelationType.ONE_TO_MANY, - description: (objectMetadata) => { - const label = objectMetadata.labelSingular; - - return msg`Timeline Activities tied to the ${label}`; - }, - icon: 'IconIconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetCustom', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() timelineActivities: TimelineActivityWorkspaceEntity[]; - - @WorkspaceField({ - standardId: CUSTOM_OBJECT_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_CUSTOM_OBJECT, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceIsFieldUIReadOnly() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) searchVector: string; } diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-custom-entity.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-custom-entity.decorator.ts deleted file mode 100644 index e1d153f2f15..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-custom-entity.decorator.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceCustomEntity(): ClassDecorator { - return (target) => { - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - target, - ); - - metadataArgsStorage.addExtendedEntities({ - target, - gate, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator.ts deleted file mode 100644 index 379e1c04f23..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { type WorkspaceEntityDuplicateCriteria } from 'src/engine/api/graphql/workspace-query-builder/types/workspace-entity-duplicate-criteria.type'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceDuplicateCriteria( - duplicateCriteria: WorkspaceEntityDuplicateCriteria[], -): ClassDecorator { - return (target) => { - TypedReflect.defineMetadata( - 'workspace:duplicate-criteria-metadata-args', - duplicateCriteria, - target, - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator.ts deleted file mode 100644 index e2cd930a211..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { type ObjectType } from 'typeorm'; -import { type RelationOnDeleteAction } from 'twenty-shared/types'; - -import { type RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { type WorkspaceDynamicRelationMetadataArgsFactory } from 'src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface'; - -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -interface WorkspaceBaseDynamicRelationOptions { - type: RelationType; - argsFactory: WorkspaceDynamicRelationMetadataArgsFactory; - inverseSideTarget: () => ObjectType; - inverseSideFieldKey?: keyof TClass; - onDelete?: RelationOnDeleteAction; -} - -export function WorkspaceDynamicRelation( - args: WorkspaceBaseDynamicRelationOptions, -): PropertyDecorator { - return (target, propertyKey) => { - const isSystem = - TypedReflect.getMetadata( - 'workspace:is-system-metadata-args', - target, - propertyKey.toString(), - ) ?? false; - - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - target, - propertyKey.toString(), - ); - - metadataArgsStorage.addDynamicRelations({ - target: target.constructor, - argsFactory: args.argsFactory, - type: args.type, - inverseSideTarget: args.inverseSideTarget, - inverseSideFieldKey: args.inverseSideFieldKey as string | undefined, - onDelete: args.onDelete, - isSystem, - isNullable: true, - isPrimary: false, - gate, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-entity.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-entity.decorator.ts deleted file mode 100644 index f4b0aff7464..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-entity.decorator.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { type MessageDescriptor } from '@lingui/core'; - -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { BASE_OBJECT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -interface WorkspaceEntityOptions { - standardId: string; - namePlural: string; - labelSingular: MessageDescriptor; - labelPlural: MessageDescriptor; - description?: MessageDescriptor; - icon?: string; - shortcut?: string; - labelIdentifierStandardId?: string; - imageIdentifierStandardId?: string; -} - -export function WorkspaceEntity( - options: WorkspaceEntityOptions, -): ClassDecorator { - return (target) => { - const isAuditLogged = - TypedReflect.getMetadata( - 'workspace:is-audit-logged-metadata-args', - target, - ) ?? true; - const isSystem = - TypedReflect.getMetadata('workspace:is-system-metadata-args', target) ?? - false; - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - target, - ); - const duplicateCriteria = TypedReflect.getMetadata( - 'workspace:duplicate-criteria-metadata-args', - target, - ); - const isSearchable = - TypedReflect.getMetadata( - 'workspace:is-searchable-metadata-args', - target, - ) ?? false; - const isUIReadOnly = - TypedReflect.getMetadata( - 'workspace:is-object-ui-readonly-metadata-args', - target, - ) ?? false; - - const objectName = convertClassNameToObjectMetadataName(target.name); - - metadataArgsStorage.addEntities({ - target, - standardId: options.standardId, - nameSingular: objectName, - namePlural: options.namePlural, - labelSingular: options.labelSingular?.message ?? '', - labelPlural: options.labelPlural?.message ?? '', - description: options.description?.message ?? '', - labelIdentifierStandardId: - options.labelIdentifierStandardId ?? BASE_OBJECT_STANDARD_FIELD_IDS.id, - imageIdentifierStandardId: options.imageIdentifierStandardId ?? null, - icon: options.icon, - shortcut: options.shortcut, - isAuditLogged, - isSystem, - isUIReadOnly, - gate, - duplicateCriteria, - isSearchable, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-field-index.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-field-index.decorator.ts deleted file mode 100644 index 0aa6a572812..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-field-index.decorator.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { generateDeterministicIndexName } from 'src/engine/metadata-modules/index-metadata/utils/generate-deterministic-index-name'; -import { type WorkspaceIndexOptions } from 'src/engine/twenty-orm/decorators/workspace-index.decorator'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { getColumnsForIndex } from 'src/engine/twenty-orm/utils/get-default-columns-for-index.util'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceFieldIndex( - options?: WorkspaceIndexOptions, -): PropertyDecorator { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return (target: any, propertyKey: string | symbol) => { - if (propertyKey === undefined) { - throw new Error('This decorator should be used with a field not a class'); - } - - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - target, - propertyKey.toString(), - ); - - const additionalDefaultColumnsForIndex = getColumnsForIndex( - options?.indexType, - ); - - const columns = [ - propertyKey.toString(), - ...additionalDefaultColumnsForIndex, - ]; - - metadataArgsStorage.addIndexes({ - name: `IDX_${generateDeterministicIndexName([ - convertClassNameToObjectMetadataName(target.constructor.name), - ...columns, - ])}`, - columns, - target: target.constructor, - gate, - isUnique: options?.isUnique ?? false, - whereClause: options?.indexWhereClause ?? null, - type: options?.indexType, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-field.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-field.decorator.ts deleted file mode 100644 index 2ec99939c67..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-field.decorator.ts +++ /dev/null @@ -1,112 +0,0 @@ -import { type MessageDescriptor } from '@lingui/core'; -import { computeMetadataNameFromLabel } from 'twenty-shared/metadata'; -import { - type FieldMetadataOptions, - type FieldMetadataSettings, - type FieldMetadataType, -} from 'twenty-shared/types'; - -import { type FieldMetadataDefaultValue } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-default-value.interface'; - -import { generateDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/generate-default-value'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export interface WorkspaceFieldOptions< - T extends FieldMetadataType = Exclude< - FieldMetadataType, - // Use @WorkspaceRelation or @WorkspaceDynamicRelation for relation fields - FieldMetadataType.RELATION - >, -> { - standardId: string; - type: T; - label: MessageDescriptor; - description?: MessageDescriptor; - icon?: string; - defaultValue?: FieldMetadataDefaultValue; - options?: FieldMetadataOptions; - settings?: FieldMetadataSettings; - isActive?: boolean; - generatedType?: 'STORED' | 'VIRTUAL'; - asExpression?: string; -} - -export function WorkspaceField( - options: WorkspaceFieldOptions, -): PropertyDecorator { - return (object, propertyKey) => { - const isPrimary = - TypedReflect.getMetadata( - 'workspace:is-primary-field-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isNullable = - TypedReflect.getMetadata( - 'workspace:is-nullable-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isSystem = - TypedReflect.getMetadata( - 'workspace:is-system-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isUIReadOnly = - TypedReflect.getMetadata( - 'workspace:is-field-ui-readonly-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - object, - propertyKey.toString(), - ); - const isDeprecated = - TypedReflect.getMetadata( - 'workspace:is-deprecated-field-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isUnique = - TypedReflect.getMetadata( - 'workspace:is-unique-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - - const defaultValue = (options.defaultValue ?? - generateDefaultValue(options.type)) as FieldMetadataDefaultValue | null; - const name = propertyKey.toString(); - const label = options.label.message ?? ''; - const isLabelSyncedWithName = - computeMetadataNameFromLabel({ label }) === name; - - metadataArgsStorage.addFields({ - target: object.constructor, - standardId: options.standardId, - name, - label, - type: options.type, - isLabelSyncedWithName, - description: options.description?.message ?? '', - icon: options.icon, - defaultValue, - options: options.options, - settings: options.settings, - isPrimary, - isNullable, - isSystem, - isUIReadOnly, - gate, - isDeprecated, - isUnique, - isActive: options.isActive, - asExpression: options.asExpression, - generatedType: options.generatedType, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-gate.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-gate.decorator.ts deleted file mode 100644 index 977bdda5660..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-gate.decorator.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { type FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { isPublicFeatureFlag } from 'src/engine/core-modules/lab/utils/is-public-feature-flag.util'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export interface WorkspaceGateOptions { - featureFlag: string; - excludeFromDatabase?: boolean; - excludeFromWorkspaceApi?: boolean; -} - -export function WorkspaceGate(options: WorkspaceGateOptions) { - const flagKey = options.featureFlag as FeatureFlagKey; - - if (isPublicFeatureFlag(flagKey)) { - throw new Error( - `Public feature flag "${flagKey}" cannot be used to gate entities. ` + - 'Public flags should not be used for entity gating as they can be toggled by users.', - ); - } - - const gateOptions = { - featureFlag: options.featureFlag, - excludeFromDatabase: options.excludeFromDatabase ?? true, - excludeFromWorkspaceApi: options.excludeFromWorkspaceApi ?? true, - }; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return (target: any, propertyKey?: string | symbol) => { - if (propertyKey !== undefined) { - TypedReflect.defineMetadata( - 'workspace:gate-metadata-args', - gateOptions, - target, - propertyKey.toString(), - ); - } else { - TypedReflect.defineMetadata( - 'workspace:gate-metadata-args', - gateOptions, - target, - ); - } - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-index.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-index.decorator.ts deleted file mode 100644 index 47c2944bf21..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-index.decorator.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { type IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { generateDeterministicIndexName } from 'src/engine/metadata-modules/index-metadata/utils/generate-deterministic-index-name'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export type WorkspaceIndexOptions = { - isUnique?: boolean; - indexWhereClause?: string; - indexType?: IndexType; -}; - -export function WorkspaceIndex( - columns: string[], - options: WorkspaceIndexOptions, -): ClassDecorator { - if (!Array.isArray(columns) || columns.length === 0) { - throw new Error('Class level WorkspaceIndex should be used with columns'); - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return (target: any) => { - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - target, - ); - - metadataArgsStorage.addIndexes({ - name: `IDX_${ - options?.isUnique ? 'UNIQUE_' : '' - }${generateDeterministicIndexName([ - convertClassNameToObjectMetadataName(target.name), - ...columns, - ])}`, - columns, - target: target, - gate, - isUnique: options?.isUnique ?? false, - whereClause: options?.indexWhereClause ?? null, - type: options?.indexType, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator.ts deleted file mode 100644 index a9bbb192e6e..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsDeprecated(): PropertyDecorator { - return (object, propertyKey) => { - TypedReflect.defineMetadata( - 'workspace:is-deprecated-field-metadata-args', - true, - object, - propertyKey.toString(), - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator.ts deleted file mode 100644 index 67493e9fe6e..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsFieldUIReadOnly() { - return function (target: object, propertyKey?: string | symbol): void { - if (propertyKey === undefined) { - throw new Error('This decorator should be used with a field not a class'); - } - - TypedReflect.defineMetadata( - 'workspace:is-field-ui-readonly-metadata-args', - true, - target, - propertyKey.toString(), - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator.ts deleted file mode 100644 index dd7d2af252b..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsNotAuditLogged(): ClassDecorator { - return (object) => { - TypedReflect.defineMetadata( - 'workspace:is-audit-logged-metadata-args', - false, - object, - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-nullable.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-nullable.decorator.ts deleted file mode 100644 index 980126ffcfe..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-nullable.decorator.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsNullable(): PropertyDecorator { - return (object, propertyKey) => { - TypedReflect.defineMetadata( - 'workspace:is-nullable-metadata-args', - true, - object, - propertyKey.toString(), - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator.ts deleted file mode 100644 index c6874dbdf96..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsObjectUIReadOnly() { - return function (target: object): void { - TypedReflect.defineMetadata( - 'workspace:is-object-ui-readonly-metadata-args', - true, - target, - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-primary-field.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-primary-field.decorator.ts deleted file mode 100644 index efebefa469d..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-primary-field.decorator.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsPrimaryField(): PropertyDecorator { - return (object, propertyKey) => { - TypedReflect.defineMetadata( - 'workspace:is-primary-field-metadata-args', - true, - object, - propertyKey.toString(), - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-searchable.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-searchable.decorator.ts deleted file mode 100644 index 424b0cf2ee4..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-searchable.decorator.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsSearchable() { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return function (target: any): void { - TypedReflect.defineMetadata( - 'workspace:is-searchable-metadata-args', - true, - target, - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-system.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-system.decorator.ts deleted file mode 100644 index 8171735c40c..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-system.decorator.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsSystem() { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return function (target: any, propertyKey?: string | symbol): void { - if (propertyKey !== undefined) { - TypedReflect.defineMetadata( - 'workspace:is-system-metadata-args', - true, - target, - propertyKey.toString(), - ); - } else { - TypedReflect.defineMetadata( - 'workspace:is-system-metadata-args', - true, - target, - ); - } - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-unique.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-unique.decorator.ts deleted file mode 100644 index adaa1e87ba4..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-is-unique.decorator.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { generateDeterministicIndexName } from 'src/engine/metadata-modules/index-metadata/utils/generate-deterministic-index-name'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -export function WorkspaceIsUnique(): PropertyDecorator { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - return (target: any, propertyKey: string | symbol) => { - if (propertyKey === undefined) { - throw new Error('This decorator should be used with a field not a class'); - } - - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - target, - propertyKey.toString(), - ); - - const columns = [propertyKey.toString()]; - - metadataArgsStorage.addIndexes({ - name: `IDX_${generateDeterministicIndexName([ - convertClassNameToObjectMetadataName(target.constructor.name), - ...columns, - ])}`, - columns, - target: target.constructor, - gate, - isUnique: true, - whereClause: null, - }); - - return TypedReflect.defineMetadata( - 'workspace:is-unique-metadata-args', - true, - target, - propertyKey.toString(), - ); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-join-column.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-join-column.decorator.ts deleted file mode 100644 index 8b1954afb6b..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-join-column.decorator.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; - -export function WorkspaceJoinColumn( - relationPropertyKey: string, -): PropertyDecorator { - return (object, propertyKey) => { - metadataArgsStorage.addJoinColumns({ - target: object.constructor, - relationName: relationPropertyKey, - joinColumn: propertyKey.toString(), - }); - - // Register index for join column - WorkspaceFieldIndex()(object, propertyKey); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-relation.decorator.ts b/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-relation.decorator.ts deleted file mode 100644 index a8f68ebcb47..00000000000 --- a/packages/twenty-server/src/engine/twenty-orm/decorators/workspace-relation.decorator.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { type MessageDescriptor } from '@lingui/core'; -import { isDefined, isUUID } from 'class-validator'; -import { computeMetadataNameFromLabel } from 'twenty-shared/metadata'; -import { type RelationOnDeleteAction } from 'twenty-shared/types'; -import { CustomError } from 'twenty-shared/utils'; -import { type ObjectType } from 'typeorm'; - -import { type RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; - -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { TypedReflect } from 'src/utils/typed-reflect'; - -interface WorkspaceRelationMinimumBaseOptions { - standardId: string; - label: MessageDescriptor; - description?: - | MessageDescriptor - | ((objectMetadata: ObjectMetadataEntity) => MessageDescriptor); - icon?: string; - inverseSideTarget: () => ObjectType; - inverseSideFieldKey?: keyof TClass; - onDelete?: RelationOnDeleteAction; -} - -interface WorkspaceRegularRelationBaseOptions - extends WorkspaceRelationMinimumBaseOptions { - isMorphRelation?: false; -} - -interface WorkspaceMorphRelationBaseOptions - extends WorkspaceRelationMinimumBaseOptions { - isMorphRelation: true; - morphId: string; -} - -type WorkspaceRelationBaseOptions = - | WorkspaceRegularRelationBaseOptions - | WorkspaceMorphRelationBaseOptions; - -type WorkspaceOtherRelationOptions = - WorkspaceRelationBaseOptions & { - type: RelationType.ONE_TO_MANY; - }; - -type WorkspaceManyToOneRelationOptions = - WorkspaceRelationBaseOptions & { - type: RelationType.MANY_TO_ONE; - inverseSideFieldKey: keyof TClass; - }; - -type WorkspaceRelationOptions = - | WorkspaceOtherRelationOptions - | WorkspaceManyToOneRelationOptions; - -export function WorkspaceRelation( - options: WorkspaceRelationOptions, -): PropertyDecorator { - return (object, propertyKey) => { - const isPrimary = - TypedReflect.getMetadata( - 'workspace:is-primary-field-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isNullable = - TypedReflect.getMetadata( - 'workspace:is-nullable-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isSystem = - TypedReflect.getMetadata( - 'workspace:is-system-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const isUIReadOnly = - TypedReflect.getMetadata( - 'workspace:is-field-ui-readonly-metadata-args', - object, - propertyKey.toString(), - ) ?? false; - const gate = TypedReflect.getMetadata( - 'workspace:gate-metadata-args', - object, - propertyKey.toString(), - ); - const name = propertyKey.toString(); - const label = options.label.message ?? ''; - const isLabelSyncedWithName = - computeMetadataNameFromLabel({ label }) === name; - - if (options.isMorphRelation && !isDefined(options.morphId)) { - throw new CustomError( - 'Morph relation must have a morph id', - 'MORPH_RELATION_MUST_HAVE_MORPH_ID', - ); - } - - if (options.isMorphRelation && !isUUID(options.morphId)) { - throw new CustomError( - 'Morph ID must be a valid UUID', - 'INVALID_MORPH_ID_FORMAT', - ); - } - - metadataArgsStorage.addRelations({ - target: object.constructor, - standardId: options.standardId, - name, - label, - type: options.type, - description: - typeof options.description === 'function' - ? (objectMetadata: ObjectMetadataEntity) => - ( - options.description as ( - obj: ObjectMetadataEntity, - ) => MessageDescriptor - )(objectMetadata).message ?? '' - : (options.description?.message ?? ''), - icon: options.icon, - inverseSideTarget: options.inverseSideTarget, - inverseSideFieldKey: options.inverseSideFieldKey as string | undefined, - onDelete: options.onDelete, - isPrimary, - isNullable, - isSystem, - isUIReadOnly, - gate, - isMorphRelation: options.isMorphRelation ?? false, - morphId: options.isMorphRelation ? options.morphId : undefined, - isLabelSyncedWithName, - }); - }; -} diff --git a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts index 7f2335e43bc..d318c8059e0 100644 --- a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts +++ b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts @@ -220,7 +220,6 @@ describe('WorkspaceEntityManager', () => { IS_TIMELINE_ACTIVITY_MIGRATED: false, IS_GLOBAL_WORKSPACE_DATASOURCE_ENABLED: false, IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED: false, - IS_WORKSPACE_CREATION_V2_ENABLED: false, IS_IF_ELSE_ENABLED: false, }, userWorkspaceRoleMap: {}, diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts index e910e8c10b5..107817eebf5 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema-column.factory.ts @@ -13,7 +13,6 @@ import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-me import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { isEnumFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-enum-field-metadata-type.util'; import { serializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-default-value'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; import { TwentyORMException, TwentyORMExceptionCode, @@ -24,6 +23,7 @@ import { type EntitySchemaObjectMetadata, } from 'src/engine/twenty-orm/global-workspace-datasource/types/entity-schema-metadata.type'; import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; +import { fieldMetadataTypeToColumnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/field-metadata-type-to-column-type.util'; type EntitySchemaColumnMap = { [key: string]: EntitySchemaColumnOptions; diff --git a/packages/twenty-server/src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager.ts b/packages/twenty-server/src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager.ts index 57d061670c7..2f6627697b2 100644 --- a/packages/twenty-server/src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager.ts +++ b/packages/twenty-server/src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager.ts @@ -14,7 +14,7 @@ import { } from 'src/engine/twenty-orm/storage/orm-workspace-context.storage'; import type { RolePermissionConfig } from 'src/engine/twenty-orm/types/role-permission-config'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; +import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/utils/convert-class-to-object-metadata-name.util'; @Injectable() export class GlobalWorkspaceOrmManager { diff --git a/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts b/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts index 156788a1269..4d1d8e9c2ad 100644 --- a/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/utils/format-data.util.ts @@ -4,6 +4,7 @@ import { } from 'twenty-shared/types'; import { capitalize } from 'twenty-shared/utils'; +import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; @@ -12,7 +13,6 @@ import { type FieldMapsForObject, } from 'src/engine/metadata-modules/flat-field-metadata/utils/build-field-maps-from-flat-object-metadata.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; export function formatData( data: T, diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-column-manager.service.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-column-manager.service.ts index fcc55a1198a..3b71e9553c9 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-column-manager.service.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-column-manager.service.ts @@ -2,7 +2,7 @@ import { type ColumnType, type QueryRunner } from 'typeorm'; import { type WorkspaceSchemaColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-column-definition.type'; import { buildSqlColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; export class WorkspaceSchemaColumnManagerService { async addColumns({ diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-enum-manager.service.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-enum-manager.service.ts index bad3d3f5538..7f0d5022e2c 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-enum-manager.service.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-enum-manager.service.ts @@ -6,8 +6,8 @@ import { } from 'src/engine/twenty-orm/workspace-schema-manager/exceptions/workspace-schema-manager.exception'; import { type WorkspaceSchemaColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-column-definition.type'; import { buildSqlColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util'; -import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; // TODO: upstream does not guarantee transactionality, implement IF EXISTS or equivalent for idempotency export class WorkspaceSchemaEnumManagerService { @@ -391,17 +391,17 @@ export class WorkspaceSchemaEnumManagerService { mappedValuesCondition: string; }) { return ` - UPDATE "${safeSchemaName}"."${safeTableName}" + UPDATE "${safeSchemaName}"."${safeTableName}" SET "${safeNewColumnName}" = ( SELECT array_agg( - CASE unnest_value::text + CASE unnest_value::text ${caseStatements} ELSE unnest_value::text::"${safeSchemaName}"."${newEnumTypeName}" END ) FROM unnest("${safeOldColumnName}") AS unnest_value ) - WHERE "${safeOldColumnName}" IS NOT NULL + WHERE "${safeOldColumnName}" IS NOT NULL AND "${safeOldColumnName}" && ARRAY[${mappedValuesCondition}]::"${safeSchemaName}"."${oldEnumTypeName}"[]`; } @@ -421,12 +421,12 @@ export class WorkspaceSchemaEnumManagerService { safeNewColumnName: string; }) { return ` - UPDATE "${safeSchemaName}"."${safeTableName}" - SET "${safeNewColumnName}" = - CASE "${safeOldColumnName}"::text + UPDATE "${safeSchemaName}"."${safeTableName}" + SET "${safeNewColumnName}" = + CASE "${safeOldColumnName}"::text ${caseStatements} END - WHERE "${safeOldColumnName}" IS NOT NULL + WHERE "${safeOldColumnName}" IS NOT NULL AND "${safeOldColumnName}"::text IN (${mappedValuesCondition})`; } } diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-foreign-key-manager.service.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-foreign-key-manager.service.ts index 0c113f5ab22..0f0e3745520 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-foreign-key-manager.service.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-foreign-key-manager.service.ts @@ -1,7 +1,7 @@ import { type QueryRunner } from 'typeorm'; import { type WorkspaceSchemaForeignKeyDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-foreign-key-definition.type'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; export class WorkspaceSchemaForeignKeyManagerService { async createForeignKey({ diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-index-manager.service.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-index-manager.service.ts index 5a99162292c..01e18f0b21b 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-index-manager.service.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-index-manager.service.ts @@ -1,7 +1,7 @@ import { type QueryRunner } from 'typeorm'; import { type WorkspaceSchemaIndexDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-index-definition.type'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; export class WorkspaceSchemaIndexManagerService { async createIndex({ diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-table-manager.service.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-table-manager.service.ts index 679ad2c3cc1..e59e276ddd8 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-table-manager.service.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/services/workspace-schema-table-manager.service.ts @@ -2,7 +2,7 @@ import { type QueryRunner } from 'typeorm'; import { type WorkspaceSchemaColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-column-definition.type'; import { buildSqlColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; export class WorkspaceSchemaTableManagerService { async createTable({ diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util.ts index a5eeee04f2d..1cd0526f684 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/build-sql-column-definition.util.ts @@ -1,7 +1,7 @@ import { isDefined } from 'twenty-shared/utils'; import { type WorkspaceSchemaColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-column-definition.type'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; export const buildSqlColumnDefinition = ( column: WorkspaceSchemaColumnDefinition, diff --git a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/sanitize-default-value.util.ts b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/sanitize-default-value.util.ts index 466a144ec24..4a0fdbdc795 100644 --- a/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/sanitize-default-value.util.ts +++ b/packages/twenty-server/src/engine/twenty-orm/workspace-schema-manager/utils/sanitize-default-value.util.ts @@ -1,4 +1,4 @@ -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; export const sanitizeDefaultValue = ( defaultValue: string | number | boolean | null, diff --git a/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts b/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts deleted file mode 100644 index c80d0ce4bd6..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/__tests__/workspace-manager.service.spec.ts +++ /dev/null @@ -1,220 +0,0 @@ -import { Test, type TestingModule } from '@nestjs/testing'; -import { getDataSourceToken, getRepositoryToken } from '@nestjs/typeorm'; - -import { type DataSource, type Repository } from 'typeorm'; - -import { ApplicationService } from 'src/engine/core-modules/application/application.service'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AgentService } from 'src/engine/metadata-modules/ai/ai-agent/agent.service'; -import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; -import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; -import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; -import { PermissionsService } from 'src/engine/metadata-modules/permissions/permissions.service'; -import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; -import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { RoleService } from 'src/engine/metadata-modules/role/role.service'; -import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; -import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; -import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; -import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; -import { TwentyStandardApplicationService } from 'src/engine/workspace-manager/twenty-standard-application/services/twenty-standard-application.service'; -import { WorkspaceManagerService } from 'src/engine/workspace-manager/workspace-manager.service'; -import { WorkspaceSyncMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service'; - -describe('WorkspaceManagerService', () => { - let service: WorkspaceManagerService; - let workspaceMigrationRepository: Repository; - let dataSourceRepository: Repository; - let roleTargetRepository: Repository; - let roleRepository: Repository; - let serverlessFunctionRepository: Repository; - let mockDataSource: jest.Mocked; - let objectMetadataService: ObjectMetadataService; - - beforeEach(async () => { - mockDataSource = { - transaction: jest.fn(), - } as any; - - const module: TestingModule = await Test.createTestingModule({ - providers: [ - WorkspaceManagerService, - WorkspaceMigrationService, - DataSourceService, - { - provide: getDataSourceToken(), - useValue: mockDataSource, - }, - { - provide: getRepositoryToken(WorkspaceEntity), - useValue: {}, - }, - { - provide: getRepositoryToken(UserWorkspaceEntity), - useValue: {}, - }, - { - provide: getRepositoryToken(FieldMetadataEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: getRepositoryToken(ObjectMetadataEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: getRepositoryToken(WorkspaceMigrationEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: getRepositoryToken(DataSourceEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: getRepositoryToken(RoleTargetEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: getRepositoryToken(RoleEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: getRepositoryToken(ServerlessFunctionEntity), - useValue: { - delete: jest.fn(), - }, - }, - { - provide: PermissionsService, - useValue: {}, - }, - { - provide: FeatureFlagService, - useValue: {}, - }, - { - provide: RoleService, - useValue: {}, - }, - { - provide: ApplicationService, - useValue: {}, - }, - { - provide: UserRoleService, - useValue: {}, - }, - { - provide: WorkspaceDataSourceService, - useValue: { - deleteWorkspaceDBSchema: jest.fn(), - }, - }, - { - provide: WorkspaceSyncMetadataService, - useValue: {}, - }, - { - provide: ObjectMetadataService, - useValue: { - deleteWorkspaceAllObjectMetadata: jest.fn(), - }, - }, - { - provide: TwentyStandardApplicationService, - useValue: { - synchronizeTwentyStandardApplicationOrThrow: jest.fn(), - }, - }, - { - provide: AgentService, - useValue: { - createOneAgent: jest - .fn() - .mockResolvedValue({ id: 'mock-agent-id' }), - }, - }, - { - provide: GlobalWorkspaceOrmManager, - useValue: { - getDataSourceForWorkspace: jest.fn().mockResolvedValue({ - transaction: jest.fn(), - }), - }, - }, - { - provide: WorkspaceManyOrAllFlatEntityMapsCacheService, - useValue: { - invalidateEntireCache: jest.fn(), - }, - }, - ], - }).compile(); - - service = module.get(WorkspaceManagerService); - workspaceMigrationRepository = module.get< - Repository - >(getRepositoryToken(WorkspaceMigrationEntity)); - dataSourceRepository = module.get>( - getRepositoryToken(DataSourceEntity), - ); - roleTargetRepository = module.get>( - getRepositoryToken(RoleTargetEntity), - ); - roleRepository = module.get>( - getRepositoryToken(RoleEntity), - ); - serverlessFunctionRepository = module.get< - Repository - >(getRepositoryToken(ServerlessFunctionEntity)); - objectMetadataService = module.get( - ObjectMetadataService, - ); - }); - - it('should be defined', () => { - expect(service).toBeDefined(); - }); - - describe('delete', () => { - it('should delete all the workspace metadata tables and workspace schema', async () => { - await service.delete('workspace-id'); - expect( - objectMetadataService.deleteWorkspaceAllObjectMetadata, - ).toHaveBeenCalled(); - expect(workspaceMigrationRepository.delete).toHaveBeenCalledWith({ - workspaceId: 'workspace-id', - }); - expect(dataSourceRepository.delete).toHaveBeenCalledWith({ - workspaceId: 'workspace-id', - }); - expect(roleTargetRepository.delete).toHaveBeenCalledWith({ - workspaceId: 'workspace-id', - }); - expect(roleRepository.delete).toHaveBeenCalledWith({ - workspaceId: 'workspace-id', - }); - expect(serverlessFunctionRepository.delete).toHaveBeenCalledWith({ - workspaceId: 'workspace-id', - }); - }); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/dev-seeder.module.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/dev-seeder.module.ts index 0a06b6b4da3..e151a1a88be 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/dev-seeder.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/dev-seeder.module.ts @@ -25,7 +25,7 @@ import { TimelineActivitySeederService } from 'src/engine/workspace-manager/dev- import { DevSeederMetadataService } from 'src/engine/workspace-manager/dev-seeder/metadata/services/dev-seeder-metadata.service'; import { DevSeederService } from 'src/engine/workspace-manager/dev-seeder/services/dev-seeder.service'; import { TwentyStandardApplicationModule } from 'src/engine/workspace-manager/twenty-standard-application/twenty-standard-application.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; @Module({ imports: [ @@ -46,7 +46,7 @@ import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspa ObjectPermissionModule, WorkspaceManyOrAllFlatEntityMapsCacheModule, WorkspaceCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, TwentyStandardApplicationModule, ], exports: [DevSeederService], 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 deleted file mode 100644 index a417d403d4b..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views.ts +++ /dev/null @@ -1,270 +0,0 @@ -import { isString } from '@sniptt/guards'; -import { type DataSource, type QueryRunner } from 'typeorm'; - -import { getFlatFieldsFromFlatObjectMetadata } from 'src/engine/api/graphql/workspace-schema-builder/utils/get-flat-fields-for-flat-object-metadata.util'; -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; -import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; -import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -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 { ViewVisibility } from 'src/engine/metadata-modules/view/enums/view-visibility.enum'; -import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; -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'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { calendarEventsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/calendar-events-all.view'; -import { companiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/companies-all.view'; -import { dashboardsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/dashboards-all.view'; -import { messageThreadsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/message-threads-all.view'; -import { messagesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/messages-all.view'; -import { notesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/notes-all.view'; -import { opportunitiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/opportunities-all.view'; -import { opportunitiesByStageView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/opportunity-by-stage.view'; -import { peopleAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/people-all.view'; -import { tasksAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-all.view'; -import { tasksAssignedToMeView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me'; -import { tasksByStatusView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-by-status.view'; -import { timelineActivitiesAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/timeline-activities-all.view'; -import { workflowRunsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-runs-all.view'; -import { workflowVersionsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view'; -import { workflowsAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workflows-all.view'; -import { workspaceMembersAllView } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/workspace-members-all.view'; - -type PrefillCoreViewsArgs = { - coreDataSource: DataSource; - workspaceId: string; - flatObjectMetadataMaps: FlatEntityMaps; - flatFieldMetadataMaps: FlatEntityMaps; - featureFlags?: Record; - workspaceSchemaName: string; - twentyStandardFlatApplication: FlatApplication; -}; - -// This is a temporary function to build the object metadata items from the flat maps. -// We should use the maps in the seeders instead. -const buildObjectMetadataItemsFromFlatMaps = ( - flatObjectMetadataMaps: FlatEntityMaps, - flatFieldMetadataMaps: FlatEntityMaps, -): ObjectMetadataEntity[] => { - return Object.values(flatObjectMetadataMaps.byId) - .filter((flatObjectMetadata) => flatObjectMetadata !== undefined) - .map((flatObjectMetadata) => { - const fields = getFlatFieldsFromFlatObjectMetadata( - flatObjectMetadata, - flatFieldMetadataMaps, - ); - - return { - ...flatObjectMetadata, - fields, - } as unknown as ObjectMetadataEntity; - }); -}; - -export const prefillCoreViews = async ({ - coreDataSource, - workspaceId, - flatObjectMetadataMaps, - flatFieldMetadataMaps, - workspaceSchemaName, - twentyStandardFlatApplication, -}: PrefillCoreViewsArgs): Promise => { - const objectMetadataItems = buildObjectMetadataItemsFromFlatMaps( - flatObjectMetadataMaps, - flatFieldMetadataMaps, - ); - const views = [ - companiesAllView, - peopleAllView, - opportunitiesAllView, - opportunitiesByStageView, - notesAllView, - tasksAllView, - tasksAssignedToMeView, - tasksByStatusView, - workflowsAllView, - workflowVersionsAllView, - workflowRunsAllView, - dashboardsAllView, - workspaceMembersAllView, - messagesAllView, - messageThreadsAllView, - calendarEventsAllView, - timelineActivitiesAllView, - ].map((seeder) => - seeder({ - objectMetadataItems, - useCoreNaming: true, - twentyStandardFlatApplication, - }), - ); - - const queryRunner = coreDataSource.createQueryRunner(); - - await queryRunner.connect(); - - try { - await queryRunner.startTransaction(); - - const createdViews = await createCoreViews( - queryRunner, - workspaceId, - views, - twentyStandardFlatApplication, - ); - - await prefillWorkspaceFavorites( - createdViews - .filter( - (view) => - view.key === 'INDEX' && - shouldSeedWorkspaceFavorite( - view.objectMetadataId, - objectMetadataItems, - ), - ) - .map((view) => view.id), - queryRunner.manager as WorkspaceEntityManager, - workspaceSchemaName, - ); - - await queryRunner.commitTransaction(); - - return createdViews; - } catch (error) { - if (queryRunner.isTransactionActive) { - try { - await queryRunner.rollbackTransaction(); - } catch (error) { - // eslint-disable-next-line no-console - console.trace(`Failed to rollback transaction: ${error.message}`); - } - } - throw error; - } finally { - await queryRunner.release(); - } -}; - -export const createCoreViews = async ( - queryRunner: QueryRunner, - workspaceId: string, - viewDefinitions: ViewDefinition[], - twentyStandardFlatApplication: FlatApplication, -): Promise => { - const coreViews: Partial[] = viewDefinitions.map( - ({ - id, - name, - objectMetadataId, - type, - key, - position, - icon, - isCustom, - openRecordIn, - mainGroupByFieldMetadataId, - kanbanAggregateOperation, - kanbanAggregateOperationFieldMetadataId, - applicationId, - universalIdentifier, - }) => ({ - id, - name: isString(name) ? name : name.message || '', - objectMetadataId, - type: type === 'kanban' ? ViewType.KANBAN : ViewType.TABLE, - key: key === ViewKey.INDEX ? ViewKey.INDEX : null, - position, - icon, - isCompact: false, - isCustom: isCustom ?? false, - openRecordIn: - openRecordIn === ViewOpenRecordInType.RECORD_PAGE - ? ViewOpenRecordIn.RECORD_PAGE - : ViewOpenRecordIn.SIDE_PANEL, - kanbanAggregateOperation, - kanbanAggregateOperationFieldMetadataId, - mainGroupByFieldMetadataId, - workspaceId, - anyFieldFilterValue: null, - visibility: ViewVisibility.WORKSPACE, - applicationId, - universalIdentifier, - }), - ); - - const viewRepository = queryRunner.manager.getRepository(ViewEntity); - const createdViews = await viewRepository.save(coreViews); - - for (const viewDefinition of viewDefinitions) { - if (viewDefinition.fields && viewDefinition.fields.length > 0) { - const coreViewFields: Partial[] = - viewDefinition.fields.map((field) => ({ - fieldMetadataId: field.fieldMetadataId, - position: field.position, - isVisible: field.isVisible, - size: field.size, - viewId: viewDefinition.id, - workspaceId, - applicationId: twentyStandardFlatApplication.id, - universalIdentifier: field.universalIdentifier, - })); - - const viewFieldRepository = - queryRunner.manager.getRepository(ViewFieldEntity); - - await viewFieldRepository.save(coreViewFields); - } - - if (viewDefinition.filters && viewDefinition.filters.length > 0) { - const coreViewFilters: Partial[] = - viewDefinition.filters.map((filter) => ({ - fieldMetadataId: filter.fieldMetadataId, - viewId: viewDefinition.id, - operand: filter.operand, - value: filter.value, - workspaceId, - applicationId: twentyStandardFlatApplication.id, - universalIdentifier: filter.universalIdentifier, - })); - - const viewFilterRepository = - queryRunner.manager.getRepository(ViewFilterEntity); - - await viewFilterRepository.save(coreViewFilters); - } - - if ( - 'groups' in viewDefinition && - viewDefinition.groups && - viewDefinition.groups.length > 0 - ) { - const coreViewGroups: Partial[] = - viewDefinition.groups.map((group) => ({ - fieldMetadataId: group.fieldMetadataId, - isVisible: group.isVisible, - fieldValue: group.fieldValue, - position: group.position, - viewId: viewDefinition.id, - workspaceId, - applicationId: twentyStandardFlatApplication.id, - universalIdentifier: group.universalIdentifier, - })); - - const viewGroupRepository = - queryRunner.manager.getRepository(ViewGroupEntity); - - await viewGroupRepository.save(coreViewGroups); - } - } - - return createdViews; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts deleted file mode 100644 index 1dea9920887..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { type MessageDescriptor } from '@lingui/core'; -import { type ViewFilterOperand } from 'twenty-shared/types'; - -import { type AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { type ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; - -export interface ViewDefinition { - id?: string; - name: string | MessageDescriptor; - objectMetadataId: string; - type: string; - key: string | null; - position: number; - applicationId: string; - universalIdentifier: string; - icon?: string; - isCustom?: boolean; - openRecordIn?: ViewOpenRecordInType; - kanbanAggregateOperation?: AggregateOperations; - kanbanAggregateOperationFieldMetadataId?: string; - mainGroupByFieldMetadataId?: string; - calendarFieldMetadataId?: string; - calendarLayout?: string; - fields?: { - universalIdentifier: string; - fieldMetadataId: string; - position: number; - isVisible: boolean; - size: number; - aggregateOperation?: AggregateOperations; - }[]; - filters?: { - universalIdentifier: string; - fieldMetadataId: string; - displayValue: string; - operand: ViewFilterOperand; - value: string; - }[]; - groups?: { - universalIdentifier: string; - fieldMetadataId: string; - isVisible: boolean; - fieldValue: string; - position: number; - }[]; -} diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/calendar-events-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/calendar-events-all.view.ts deleted file mode 100644 index e470ed90025..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/calendar-events-all.view.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - CALENDAR_EVENT_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const calendarEventsAllView = ({ - objectMetadataItems, - twentyStandardFlatApplication, - useCoreNaming, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const calendarEventObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.calendarEvent, - ); - - if (!calendarEventObjectMetadata) { - throw new Error('CalendarEvent object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Calendar Events', - objectMetadataId: calendarEventObjectMetadata.id ?? '', - type: 'calendar', - key: 'INDEX', - position: 0, - icon: 'IconCalendar', - calendarFieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.startsAt, - )?.id ?? '', - calendarLayout: 'MONTH', - filters: [], - fields: [ - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.title, - )?.id ?? '', - position: 0, - isVisible: true, - size: DEFAULT_VIEW_FIELD_SIZE, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .title.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.startsAt, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .startsAt.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.endsAt, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .endsAt.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.isFullDay, - )?.id ?? '', - position: 3, - isVisible: true, - size: 100, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .isFullDay.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.location, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .location.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === - CALENDAR_EVENT_STANDARD_FIELD_IDS.conferenceLink, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .conferenceLink.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === CALENDAR_EVENT_STANDARD_FIELD_IDS.isCanceled, - )?.id ?? '', - position: 6, - isVisible: true, - size: 100, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .isCanceled.universalIdentifier, - }, - { - fieldMetadataId: - calendarEventObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 7, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.calendarEvent.views.allCalendarEvents.viewFields - .createdAt.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/companies-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/companies-all.view.ts deleted file mode 100644 index 69dbcdd2425..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/companies-all.view.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - COMPANY_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const companiesAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const companyObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.company, - ); - - if (!companyObjectMetadata) { - throw new Error('Company object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.company.views.allCompanies.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Companies', - objectMetadataId: companyObjectMetadata.id ?? '', - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [], - fields: [ - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => field.standardId === COMPANY_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: DEFAULT_VIEW_FIELD_SIZE, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.name - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => - field.standardId === COMPANY_STANDARD_FIELD_IDS.domainName, - )?.id ?? '', - position: 1, - isVisible: true, - size: 100, - aggregateOperation: AggregateOperations.COUNT, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.domainName - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => - field.standardId === COMPANY_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => - field.standardId === COMPANY_STANDARD_FIELD_IDS.accountOwner, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.accountOwner - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.createdAt - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => - field.standardId === COMPANY_STANDARD_FIELD_IDS.employees, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - aggregateOperation: AggregateOperations.MAX, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.employees - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => - field.standardId === COMPANY_STANDARD_FIELD_IDS.linkedinLink, - )?.id ?? '', - position: 6, - isVisible: true, - size: 170, - aggregateOperation: AggregateOperations.PERCENTAGE_EMPTY, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.linkedinLink - .universalIdentifier, - }, - { - fieldMetadataId: - companyObjectMetadata.fields.find( - (field) => field.standardId === COMPANY_STANDARD_FIELD_IDS.address, - )?.id ?? '', - position: 7, - isVisible: true, - size: 170, - aggregateOperation: AggregateOperations.COUNT_NOT_EMPTY, - universalIdentifier: - STANDARD_OBJECTS.company.views.allCompanies.viewFields.address - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/dashboards-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/dashboards-all.view.ts deleted file mode 100644 index 3b6159c568d..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/dashboards-all.view.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - DASHBOARD_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const dashboardsAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const dashboardObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.dashboard, - ); - - if (!dashboardObjectMetadata) { - throw new Error('Dashboard object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.dashboard.views.allDashboards.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Dashboards', - objectMetadataId: dashboardObjectMetadata.id ?? '', - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconLayoutDashboard', - openRecordIn: ViewOpenRecordInType.RECORD_PAGE, - filters: [], - fields: [ - { - fieldMetadataId: - dashboardObjectMetadata.fields.find( - (field) => field.standardId === DASHBOARD_STANDARD_FIELD_IDS.title, - )?.id ?? '', - position: 0, - isVisible: true, - size: 200, - universalIdentifier: - STANDARD_OBJECTS.dashboard.views.allDashboards.viewFields.title - .universalIdentifier, - }, - { - fieldMetadataId: - dashboardObjectMetadata.fields.find( - (field) => - field.standardId === DASHBOARD_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.dashboard.views.allDashboards.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - dashboardObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.dashboard.views.allDashboards.viewFields.createdAt - .universalIdentifier, - }, - { - fieldMetadataId: - dashboardObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.dashboard.views.allDashboards.viewFields.updatedAt - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/message-threads-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/message-threads-all.view.ts deleted file mode 100644 index 07263ddb530..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/message-threads-all.view.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - MESSAGE_THREAD_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const messageThreadsAllView = ({ - objectMetadataItems, - twentyStandardFlatApplication, - useCoreNaming, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const messageThreadObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.messageThread, - ); - - if (!messageThreadObjectMetadata) { - throw new Error('MessageThread object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.messageThread.views.allMessageThreads.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Message Threads', - objectMetadataId: messageThreadObjectMetadata.id ?? '', - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [], - fields: [ - { - fieldMetadataId: - messageThreadObjectMetadata.fields.find( - (field) => - field.standardId === MESSAGE_THREAD_STANDARD_FIELD_IDS.messages, - )?.id ?? '', - position: 0, - isVisible: true, - size: DEFAULT_VIEW_FIELD_SIZE, - universalIdentifier: - STANDARD_OBJECTS.messageThread.views.allMessageThreads.viewFields - .messages.universalIdentifier, - }, - { - fieldMetadataId: - messageThreadObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.messageThread.views.allMessageThreads.viewFields - .createdAt.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/messages-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/messages-all.view.ts deleted file mode 100644 index 7c479f68d1e..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/messages-all.view.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - MESSAGE_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const messagesAllView = ({ - objectMetadataItems, - twentyStandardFlatApplication, - useCoreNaming, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const messageObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.message, - ); - - if (!messageObjectMetadata) { - throw new Error('Message object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.message.views.allMessages.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Messages', - objectMetadataId: messageObjectMetadata.id ?? '', - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [], - fields: [ - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => field.standardId === MESSAGE_STANDARD_FIELD_IDS.subject, - )?.id ?? '', - position: 0, - isVisible: true, - size: DEFAULT_VIEW_FIELD_SIZE, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields.subject - .universalIdentifier, - }, - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => - field.standardId === MESSAGE_STANDARD_FIELD_IDS.messageThread, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields.messageThread - .universalIdentifier, - }, - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => - field.standardId === - MESSAGE_STANDARD_FIELD_IDS.messageParticipants, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields - .messageParticipants.universalIdentifier, - }, - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => - field.standardId === MESSAGE_STANDARD_FIELD_IDS.receivedAt, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields.receivedAt - .universalIdentifier, - }, - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => - field.standardId === MESSAGE_STANDARD_FIELD_IDS.headerMessageId, - )?.id ?? '', - position: 4, - isVisible: true, - size: 180, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields.headerMessageId - .universalIdentifier, - }, - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => field.standardId === MESSAGE_STANDARD_FIELD_IDS.text, - )?.id ?? '', - position: 5, - isVisible: true, - size: 200, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields.text - .universalIdentifier, - }, - { - fieldMetadataId: - messageObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 6, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.message.views.allMessages.viewFields.createdAt - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/notes-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/notes-all.view.ts deleted file mode 100644 index 49efbd40bab..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/notes-all.view.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - NOTE_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const notesAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const noteObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.note, - ); - - if (!noteObjectMetadata) { - throw new Error('Note object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.note.views.allNotes.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Notes', - objectMetadataId: noteObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconNotes', - filters: [], - fields: [ - { - fieldMetadataId: - noteObjectMetadata.fields.find( - (field) => field.standardId === NOTE_STANDARD_FIELD_IDS.title, - )?.id ?? '', - position: 0, - isVisible: true, - size: 210, - universalIdentifier: - STANDARD_OBJECTS.note.views.allNotes.viewFields.title - .universalIdentifier, - }, - { - fieldMetadataId: - noteObjectMetadata.fields.find( - (field) => field.standardId === NOTE_STANDARD_FIELD_IDS.noteTargets, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.note.views.allNotes.viewFields.noteTargets - .universalIdentifier, - }, - { - fieldMetadataId: - noteObjectMetadata.fields.find( - (field) => field.standardId === NOTE_STANDARD_FIELD_IDS.bodyV2, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.note.views.allNotes.viewFields.bodyV2 - .universalIdentifier, - }, - { - fieldMetadataId: - noteObjectMetadata.fields.find( - (field) => field.standardId === NOTE_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.note.views.allNotes.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - noteObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.note.views.allNotes.viewFields.createdAt - .universalIdentifier, - }, - /* - TODO: Add later, since we don't have real-time it probably doesn't work well? - { - fieldMetadataId: - objectMetadataMap[STANDARD_OBJECT_IDS.note].fields[.updatedAt - ], - position: 0, - isVisible: true, - size: 210}, - */ - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/opportunities-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/opportunities-all.view.ts deleted file mode 100644 index b06ab6e0f85..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/opportunities-all.view.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const opportunitiesAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const opportunityObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.opportunity, - ); - - if (!opportunityObjectMetadata) { - throw new Error('Opportunity object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.opportunity.views.allOpportunities.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Opportunities', - objectMetadataId: opportunityObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [], - fields: [ - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.allOpportunities.viewFields.name - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.amount, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - aggregateOperation: AggregateOperations.AVG, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.allOpportunities.viewFields.amount - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.allOpportunities.viewFields - .createdBy.universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.closeDate, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - aggregateOperation: AggregateOperations.MIN, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.allOpportunities.viewFields - .closeDate.universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.company, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.allOpportunities.viewFields.company - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === - OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.allOpportunities.viewFields - .pointOfContact.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/opportunity-by-stage.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/opportunity-by-stage.view.ts deleted file mode 100644 index 0e68f90d2cf..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/opportunity-by-stage.view.ts +++ /dev/null @@ -1,202 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const opportunitiesByStageView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const opportunityObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.opportunity, - ); - - if (!opportunityObjectMetadata) { - throw new Error('Opportunity object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.opportunity.views.byStage.universalIdentifier; - - const stageFieldMetadataId = - opportunityObjectMetadata.fields.find( - (field) => field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.stage, - )?.id ?? ''; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`By Stage` : 'By Stage', - objectMetadataId: opportunityObjectMetadata.id, - type: 'kanban', - key: null, - position: 2, - icon: 'IconLayoutKanban', - kanbanAggregateOperation: AggregateOperations.SUM, - kanbanAggregateOperationFieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.amount, - )?.id ?? '', - filters: [], - mainGroupByFieldMetadataId: stageFieldMetadataId, - fields: [ - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewFields.name - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.amount, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewFields.amount - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.closeDate, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewFields.closeDate - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.company, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewFields.company - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === - OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewFields.pointOfContact - .universalIdentifier, - }, - ], - groups: [ - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.stage, - )?.id ?? '', - isVisible: true, - fieldValue: 'NEW', - position: 0, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewGroups!.new - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.stage, - )?.id ?? '', - isVisible: true, - fieldValue: 'SCREENING', - position: 1, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewGroups!.screening - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.stage, - )?.id ?? '', - isVisible: true, - fieldValue: 'MEETING', - position: 2, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewGroups!.meeting - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.stage, - )?.id ?? '', - isVisible: true, - fieldValue: 'PROPOSAL', - position: 3, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewGroups!.proposal - .universalIdentifier, - }, - { - fieldMetadataId: - opportunityObjectMetadata.fields.find( - (field) => - field.standardId === OPPORTUNITY_STANDARD_FIELD_IDS.stage, - )?.id ?? '', - isVisible: true, - fieldValue: 'CUSTOMER', - position: 4, - universalIdentifier: - STANDARD_OBJECTS.opportunity.views.byStage.viewGroups!.customer - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/people-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/people-all.view.ts deleted file mode 100644 index df1c5f4d483..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/people-all.view.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { AggregateOperations } from 'src/engine/api/graphql/graphql-query-runner/constants/aggregate-operations.constant'; -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - PERSON_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const peopleAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const personObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.person, - ); - - if (!personObjectMetadata) { - throw new Error('Person object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.person.views.allPeople.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All People', - objectMetadataId: personObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [], - fields: [ - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: 210, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.name - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.emails, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - aggregateOperation: AggregateOperations.COUNT_UNIQUE_VALUES, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.emails - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.company, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.company - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.phones, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - aggregateOperation: AggregateOperations.PERCENTAGE_EMPTY, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.phones - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - aggregateOperation: AggregateOperations.MIN, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.createdAt - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.city, - )?.id ?? '', - position: 6, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.city - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.jobTitle, - )?.id ?? '', - position: 7, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.jobTitle - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => - field.standardId === PERSON_STANDARD_FIELD_IDS.linkedinLink, - )?.id ?? '', - position: 8, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.linkedinLink - .universalIdentifier, - }, - { - fieldMetadataId: - personObjectMetadata.fields.find( - (field) => field.standardId === PERSON_STANDARD_FIELD_IDS.xLink, - )?.id ?? '', - position: 9, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.person.views.allPeople.viewFields.xLink - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-all.view.ts deleted file mode 100644 index e9b6cc0491d..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-all.view.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - TASK_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const tasksAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const taskObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.task, - ); - - if (!taskObjectMetadata) { - throw new Error('Task object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.task.views.allTasks.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Tasks', - objectMetadataId: taskObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [] /* [ - { - fieldMetadataId: - objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ - TASK_STANDARD_FIELD_IDS.type - ], - displayValue: 'Task', - operand: 'is', - value: '["TASK"]'}, - ],*/, - fields: [ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.title, - )?.id ?? '', - position: 0, - isVisible: true, - size: 210, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.title - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.status - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.taskTargets, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.taskTargets - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.dueAt, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.dueAt - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.assignee, - )?.id ?? '', - position: 6, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.assignee - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.bodyV2, - )?.id ?? '', - position: 7, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.bodyV2 - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 8, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.allTasks.viewFields.createdAt - .universalIdentifier, - }, - /* - TODO: Add later, since we don't have real-time it probably doesn't work well? - { - fieldMetadataId: - objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[.updatedAt - ], - position: 0, - isVisible: true, - size: 210}, - */ - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts deleted file mode 100644 index eff9814fdde..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-assigned-to-me.ts +++ /dev/null @@ -1,212 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { ViewFilterOperand } from 'twenty-shared/types'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - TASK_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const tasksAssignedToMeView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const taskObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.task, - ); - - if (!taskObjectMetadata) { - throw new Error('Task object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.task.views.assignedToMe.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`Assigned to Me` : 'Assigned to Me', - objectMetadataId: taskObjectMetadata.id, - type: 'table', - key: null, - position: 2, - icon: 'IconUserCircle', - mainGroupByFieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - filters: [ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.assignee, - )?.id ?? '', - displayValue: 'Me', - operand: ViewFilterOperand.IS, - value: JSON.stringify({ - isCurrentWorkspaceMemberSelected: true, - selectedRecordIds: [], - }), - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFilters!.assigneeIsMe - .universalIdentifier, - }, - ], - fields: [ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.title, - )?.id ?? '', - position: 0, - isVisible: true, - size: 210, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.title - .universalIdentifier, - }, - /*{ - fieldMetadataId: - objectMetadataStandardIdToIdMap[STANDARD_OBJECT_IDS.task].fields[ - TASK_STANDARD_FIELD_IDS.status - ], - position: 2, - isVisible: true, - size: 150},*/ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.taskTargets, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.taskTargets - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.dueAt, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.dueAt - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.assignee, - )?.id ?? '', - position: 6, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.assignee - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.bodyV2, - )?.id ?? '', - position: 7, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.bodyV2 - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 8, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewFields.createdAt - .universalIdentifier, - }, - ], - groups: [ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: 'TODO', - position: 0, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewGroups!.todo - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: 'IN_PROGRESS', - position: 1, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewGroups!.inProgress - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: 'DONE', - position: 2, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewGroups!.done - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: '', - position: 3, - universalIdentifier: - STANDARD_OBJECTS.task.views.assignedToMe.viewGroups!.empty - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-by-status.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-by-status.view.ts deleted file mode 100644 index 438bd0f2f7a..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/tasks-by-status.view.ts +++ /dev/null @@ -1,170 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - TASK_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const tasksByStatusView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const taskObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.task, - ); - - if (!taskObjectMetadata) { - throw new Error('Task object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.task.views.byStatus.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`By Status` : 'By Status', - objectMetadataId: taskObjectMetadata.id, - type: 'kanban', - key: null, - position: 1, - icon: 'IconLayoutKanban', - mainGroupByFieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - filters: [] /* [ - { - fieldMetadataId: - objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[ - TASK_STANDARD_FIELD_IDS.type - ], - displayValue: 'Task', - operand: 'is', - value: '["TASK"]'}, - ],*/, - fields: [ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.title, - )?.id ?? '', - position: 0, - isVisible: true, - size: 210, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewFields.title - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewFields.status - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.dueAt, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewFields.dueAt - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.assignee, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewFields.assignee - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 6, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewFields.createdAt - .universalIdentifier, - }, - /* - TODO: Add later, since we don't have real-time it probably doesn't work well? - { - fieldMetadataId: - objectMetadataMap[STANDARD_OBJECT_IDS.task].fields[.updatedAt - ], - position: 0, - isVisible: true, - size: 210}, - */ - ], - groups: [ - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: 'TODO', - position: 0, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewGroups!.todo - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: 'IN_PROGRESS', - position: 1, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewGroups!.inProgress - .universalIdentifier, - }, - { - fieldMetadataId: - taskObjectMetadata.fields.find( - (field) => field.standardId === TASK_STANDARD_FIELD_IDS.status, - )?.id ?? '', - isVisible: true, - fieldValue: 'DONE', - position: 2, - universalIdentifier: - STANDARD_OBJECTS.task.views.byStatus.viewGroups!.done - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/timeline-activities-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/timeline-activities-all.view.ts deleted file mode 100644 index 7b5040c9899..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/timeline-activities-all.view.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const timelineActivitiesAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const timelineActivityObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.timelineActivity, - ); - - if (!timelineActivityObjectMetadata) { - throw new Error('TimelineActivity object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities - .universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming - ? msg`All {objectLabelPlural}` - : 'All Timeline Activities', - objectMetadataId: timelineActivityObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - openRecordIn: ViewOpenRecordInType.RECORD_PAGE, - filters: [], - fields: [ - { - fieldMetadataId: - timelineActivityObjectMetadata.fields.find( - (field) => - field.standardId === TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: DEFAULT_VIEW_FIELD_SIZE, - universalIdentifier: - STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities - .viewFields.name.universalIdentifier, - }, - { - fieldMetadataId: - timelineActivityObjectMetadata.fields.find( - (field) => - field.standardId === - TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.happensAt, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities - .viewFields.happensAt.universalIdentifier, - }, - { - fieldMetadataId: - timelineActivityObjectMetadata.fields.find( - (field) => - field.standardId === - TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.properties, - )?.id ?? '', - position: 2, - isVisible: true, - size: 200, - universalIdentifier: - STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities - .viewFields.properties.universalIdentifier, - }, - { - fieldMetadataId: - timelineActivityObjectMetadata.fields.find( - (field) => - field.standardId === - TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.workspaceMember, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities - .viewFields.workspaceMember.universalIdentifier, - }, - { - fieldMetadataId: - timelineActivityObjectMetadata.fields.find( - (field) => - field.standardId === - TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedRecordCachedName, - )?.id ?? '', - position: 4, - isVisible: true, - size: 200, - universalIdentifier: - STANDARD_OBJECTS.timelineActivity.views.allTimelineActivities - .viewFields.linkedRecordCachedName.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-runs-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-runs-all.view.ts deleted file mode 100644 index bf1338ef9a2..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-runs-all.view.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { WORKFLOW_RUN_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const workflowRunsAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const workflowRunObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.workflowRun, - ); - - if (!workflowRunObjectMetadata) { - throw new Error('Workflow run object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Workflow Runs', - objectMetadataId: workflowRunObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconHistoryToggle', - openRecordIn: ViewOpenRecordInType.RECORD_PAGE, - filters: [], - fields: [ - { - fieldMetadataId: - workflowRunObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_RUN_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.viewFields.name - .universalIdentifier, - }, - { - fieldMetadataId: - workflowRunObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_RUN_STANDARD_FIELD_IDS.workflow, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.viewFields.workflow - .universalIdentifier, - }, - { - fieldMetadataId: - workflowRunObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_RUN_STANDARD_FIELD_IDS.status, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.viewFields.status - .universalIdentifier, - }, - { - fieldMetadataId: - workflowRunObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_RUN_STANDARD_FIELD_IDS.startedAt, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.viewFields - .startedAt.universalIdentifier, - }, - { - fieldMetadataId: - workflowRunObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_RUN_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.viewFields - .createdBy.universalIdentifier, - }, - { - fieldMetadataId: - workflowRunObjectMetadata.fields.find( - (field) => - field.standardId === - WORKFLOW_RUN_STANDARD_FIELD_IDS.workflowVersion, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowRun.views.allWorkflowRuns.viewFields - .workflowVersion.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts deleted file mode 100644 index 061f37423a3..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflow-versions-all.view.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - WORKFLOW_VERSION_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const workflowVersionsAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const workflowVersionObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.workflowVersion, - ); - - if (!workflowVersionObjectMetadata) { - throw new Error('Workflow version object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.workflowVersion.views.allWorkflowVersions - .universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming - ? msg`All {objectLabelPlural}` - : 'All Workflow Versions', - objectMetadataId: workflowVersionObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconVersions', - openRecordIn: ViewOpenRecordInType.RECORD_PAGE, - filters: [], - fields: [ - { - fieldMetadataId: - workflowVersionObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_VERSION_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: 210, - universalIdentifier: - STANDARD_OBJECTS.workflowVersion.views.allWorkflowVersions.viewFields - .name.universalIdentifier, - }, - { - fieldMetadataId: - workflowVersionObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_VERSION_STANDARD_FIELD_IDS.workflow, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowVersion.views.allWorkflowVersions.viewFields - .workflow.universalIdentifier, - }, - { - fieldMetadataId: - workflowVersionObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_VERSION_STANDARD_FIELD_IDS.status, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowVersion.views.allWorkflowVersions.viewFields - .status.universalIdentifier, - }, - { - fieldMetadataId: - workflowVersionObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowVersion.views.allWorkflowVersions.viewFields - .updatedAt.universalIdentifier, - }, - { - fieldMetadataId: - workflowVersionObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_VERSION_STANDARD_FIELD_IDS.runs, - )?.id ?? '', - position: 4, - isVisible: false, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflowVersion.views.allWorkflowVersions.viewFields - .runs.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflows-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflows-all.view.ts deleted file mode 100644 index 949d8b69f27..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workflows-all.view.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { ViewOpenRecordInType } from 'src/engine/metadata-modules/view/types/view-open-record-in-type.type'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - WORKFLOW_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const workflowsAllView = ({ - objectMetadataItems, - useCoreNaming = false, - twentyStandardFlatApplication, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const workflowObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.workflow, - ); - - if (!workflowObjectMetadata) { - throw new Error('Workflow object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.workflow.views.allWorkflows.universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming ? msg`All {objectLabelPlural}` : 'All Workflows', - objectMetadataId: workflowObjectMetadata.id, - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconSettingsAutomation', - openRecordIn: ViewOpenRecordInType.RECORD_PAGE, - filters: [], - fields: [ - { - fieldMetadataId: - workflowObjectMetadata.fields.find( - (field) => field.standardId === WORKFLOW_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflow.views.allWorkflows.viewFields.name - .universalIdentifier, - }, - { - fieldMetadataId: - workflowObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_STANDARD_FIELD_IDS.statuses, - )?.id ?? '', - position: 1, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflow.views.allWorkflows.viewFields.statuses - .universalIdentifier, - }, - { - fieldMetadataId: - workflowObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.updatedAt, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflow.views.allWorkflows.viewFields.updatedAt - .universalIdentifier, - }, - { - fieldMetadataId: - workflowObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_STANDARD_FIELD_IDS.createdBy, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflow.views.allWorkflows.viewFields.createdBy - .universalIdentifier, - }, - { - fieldMetadataId: - workflowObjectMetadata.fields.find( - (field) => - field.standardId === WORKFLOW_STANDARD_FIELD_IDS.versions, - )?.id ?? '', - position: 4, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflow.views.allWorkflows.viewFields.versions - .universalIdentifier, - }, - { - fieldMetadataId: - workflowObjectMetadata.fields.find( - (field) => field.standardId === WORKFLOW_STANDARD_FIELD_IDS.runs, - )?.id ?? '', - position: 5, - isVisible: false, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workflow.views.allWorkflows.viewFields.runs - .universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workspace-members-all.view.ts b/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workspace-members-all.view.ts deleted file mode 100644 index f47a7f0157b..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/standard-objects-prefill-data/views/workspace-members-all.view.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { v4 } from 'uuid'; - -import { type FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type ViewDefinition } from 'src/engine/workspace-manager/standard-objects-prefill-data/types/view-definition.interface'; -import { DEFAULT_VIEW_FIELD_SIZE } from 'src/engine/workspace-manager/standard-objects-prefill-data/views/constants/DEFAULT_VIEW_FIELD_SIZE'; -import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; -import { - BASE_OBJECT_STANDARD_FIELD_IDS, - WORKSPACE_MEMBER_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; - -export const workspaceMembersAllView = ({ - objectMetadataItems, - twentyStandardFlatApplication, - useCoreNaming, -}: { - objectMetadataItems: ObjectMetadataEntity[]; - useCoreNaming?: boolean; - twentyStandardFlatApplication: FlatApplication; -}): ViewDefinition => { - const workspaceMemberObjectMetadata = objectMetadataItems.find( - (object) => object.standardId === STANDARD_OBJECT_IDS.workspaceMember, - ); - - if (!workspaceMemberObjectMetadata) { - throw new Error('WorkspaceMember object metadata not found'); - } - - const viewUniversalIdentifier = - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers - .universalIdentifier; - - return { - id: v4(), - universalIdentifier: viewUniversalIdentifier, - applicationId: twentyStandardFlatApplication.id, - name: useCoreNaming - ? msg`All {objectLabelPlural}` - : 'All Workspace Members', - objectMetadataId: workspaceMemberObjectMetadata.id ?? '', - type: 'table', - key: 'INDEX', - position: 0, - icon: 'IconList', - filters: [], - fields: [ - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name, - )?.id ?? '', - position: 0, - isVisible: true, - size: DEFAULT_VIEW_FIELD_SIZE, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .name.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === - WORKSPACE_MEMBER_STANDARD_FIELD_IDS.userEmail, - )?.id ?? '', - position: 1, - isVisible: true, - size: 180, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .userEmail.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === - WORKSPACE_MEMBER_STANDARD_FIELD_IDS.avatarUrl, - )?.id ?? '', - position: 2, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .avatarUrl.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === - WORKSPACE_MEMBER_STANDARD_FIELD_IDS.colorScheme, - )?.id ?? '', - position: 3, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .colorScheme.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === WORKSPACE_MEMBER_STANDARD_FIELD_IDS.locale, - )?.id ?? '', - position: 4, - isVisible: true, - size: 120, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .locale.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeZone, - )?.id ?? '', - position: 5, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .timeZone.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === - WORKSPACE_MEMBER_STANDARD_FIELD_IDS.dateFormat, - )?.id ?? '', - position: 6, - isVisible: true, - size: 120, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .dateFormat.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === - WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeFormat, - )?.id ?? '', - position: 7, - isVisible: true, - size: 120, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .timeFormat.universalIdentifier, - }, - { - fieldMetadataId: - workspaceMemberObjectMetadata.fields.find( - (field) => - field.standardId === BASE_OBJECT_STANDARD_FIELD_IDS.createdAt, - )?.id ?? '', - position: 8, - isVisible: true, - size: 150, - universalIdentifier: - STANDARD_OBJECTS.workspaceMember.views.allWorkspaceMembers.viewFields - .createdAt.universalIdentifier, - }, - ], - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-agent.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-agent.constant.ts index ae88be85304..5af72fa0e05 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-agent.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-agent.constant.ts @@ -1,4 +1,4 @@ -import { HELPER_AGENT } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-agents/agents/helper-agent'; +import { HELPER_AGENT } from 'src/engine/workspace-manager/workspace-migration/constant/standard-agent-ids'; export const STANDARD_AGENT = { helper: { diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts index 65d165c075b..11e0ec783ee 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant.ts @@ -30,7 +30,7 @@ import { WORKFLOW_STANDARD_FIELD_IDS, WORKFLOW_VERSION_STANDARD_FIELD_IDS, WORKSPACE_MEMBER_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; +} from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids'; export const STANDARD_OBJECTS = { attachment: { diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-role.constant.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-role.constant.ts index 9aff5ff41fe..29ad20722ed 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-role.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/constants/standard-role.constant.ts @@ -1,4 +1,4 @@ -import { ADMIN_ROLE } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role'; +import { ADMIN_ROLE } from 'src/engine/metadata-modules/role/constants/admin-role'; export const STANDARD_ROLE = { admin: { universalIdentifier: ADMIN_ROLE.standardId }, diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/services/twenty-standard-application.service.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/services/twenty-standard-application.service.ts index 09ef82daf97..877d40c66e9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/services/twenty-standard-application.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/services/twenty-standard-application.service.ts @@ -14,9 +14,9 @@ import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/works import { STANDARD_OBJECTS } from 'src/engine/workspace-manager/twenty-standard-application/constants/standard-object.constant'; import { TWENTY_STANDARD_ALL_METADATA_NAME } from 'src/engine/workspace-manager/twenty-standard-application/constants/twenty-standard-all-metadata-name.constant'; import { computeTwentyStandardApplicationAllFlatEntityMaps } from 'src/engine/workspace-manager/twenty-standard-application/utils/twenty-standard-application-all-flat-entity-maps.constant'; -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'; -import { FromToAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; +import { FromToAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; @Injectable() @@ -117,7 +117,7 @@ export class TwentyStandardApplicationService { ); if (isDefined(validateAndBuildResult)) { - throw new WorkspaceMigrationBuilderExceptionV2( + throw new WorkspaceMigrationBuilderException( validateAndBuildResult, 'Multiple validation errors occurred while synchronizing twenty-standard application', ); diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/twenty-standard-application.module.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/twenty-standard-application.module.ts index be1aa403c18..2f6470931c9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/twenty-standard-application.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/twenty-standard-application.module.ts @@ -1,9 +1,9 @@ import { Module } from '@nestjs/common'; import { ApplicationModule } from 'src/engine/core-modules/application/application.module'; -import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; import { GlobalWorkspaceDataSourceModule } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-datasource.module'; +import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { TwentyStandardApplicationService } from './services/twenty-standard-application.service'; @@ -12,7 +12,7 @@ import { TwentyStandardApplicationService } from './services/twenty-standard-app imports: [ ApplicationModule, WorkspaceCacheModule, - WorkspaceMigrationV2Module, + WorkspaceMigrationModule, GlobalWorkspaceDataSourceModule, ], exports: [TwentyStandardApplicationService], diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts index 058f295001d..0942ab400c3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-company-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_COMPANY } from 'src/modules/company/standard-objects/company.workspace-entity'; export const buildCompanyStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts index 549684464e6..406623fa570 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-dashboard-standard-flat-field-metadata.util.ts @@ -11,7 +11,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_DASHBOARD } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; export const buildDashboardStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts index 6dab1d66b5e..25f8d1422e1 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-standard-flat-field-metadata.util.ts @@ -11,7 +11,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_NOTES } from 'src/modules/note/standard-objects/note.workspace-entity'; export const buildNoteStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts index d5adb4643af..4b52fc1af94 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-opportunity-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_OPPORTUNITY } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; export const buildOpportunityStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts index a78ecc0763e..623b49fec37 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-person-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_PERSON } from 'src/modules/person/standard-objects/person.workspace-entity'; export const buildPersonStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts index 964fcaf5350..f371e0c6e33 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_TASKS } from 'src/modules/task/standard-objects/task.workspace-entity'; export const buildTaskStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts index 6371da19f07..0fd1aa1aca0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { type CreateStandardFieldArgs, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; +import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-migration/constant/standard-field-ids'; export const buildTimelineActivityStandardFlatFieldMetadatas = ({ now, diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts index 8478fecf376..c81f72373bd 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_WORKFLOW_RUNS } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; export const buildWorkflowRunStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts index 3968a0e8df2..b0a0f11f6a9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-standard-flat-field-metadata.util.ts @@ -11,7 +11,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_WORKFLOWS } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; export const buildWorkflowStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts index 594e0f05c40..c6515582201 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; export const buildWorkflowVersionStandardFlatFieldMetadatas = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts index 2d5006172a5..fca26d306f7 100644 --- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts @@ -12,7 +12,7 @@ import { createStandardFieldFlatMetadata, } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-field-flat-metadata.util'; import { createStandardRelationFieldFlatMetadata } from 'src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/create-standard-relation-field-flat-metadata.util'; -import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +import { getTsVectorColumnExpressionFromFields } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; import { SEARCH_FIELDS_FOR_WORKSPACE_MEMBER, WorkspaceMemberNumberFormatEnum, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/all-non-workspace-related-entity.type.ts b/packages/twenty-server/src/engine/workspace-manager/types/all-non-workspace-related-entity.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/all-non-workspace-related-entity.type.ts rename to packages/twenty-server/src/engine/workspace-manager/types/all-non-workspace-related-entity.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface.ts b/packages/twenty-server/src/engine/workspace-manager/types/syncable-entity.interface.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface.ts rename to packages/twenty-server/src/engine/workspace-manager/types/syncable-entity.interface.ts index a10c7ca926a..11d6a1fe71f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/syncable-entity.interface.ts +++ b/packages/twenty-server/src/engine/workspace-manager/types/syncable-entity.interface.ts @@ -1,7 +1,7 @@ import { Column, Index, JoinColumn, ManyToOne, type Relation } from 'typeorm'; import type { ApplicationEntity } from 'src/engine/core-modules/application/application.entity'; -import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/workspace-sync/types/workspace-related-entity'; +import { WorkspaceRelatedEntity } from 'src/engine/workspace-manager/types/workspace-related-entity'; @Index(['workspaceId', 'universalIdentifier'], { unique: true, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/workspace-related-entity.ts b/packages/twenty-server/src/engine/workspace-manager/types/workspace-related-entity.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync/types/workspace-related-entity.ts rename to packages/twenty-server/src/engine/workspace-manager/types/workspace-related-entity.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/__tests__/get-ts-vectors-column-expression.utils.spec.ts b/packages/twenty-server/src/engine/workspace-manager/utils/__tests__/get-ts-vectors-column-expression.utils.spec.ts similarity index 97% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/__tests__/get-ts-vectors-column-expression.utils.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/utils/__tests__/get-ts-vectors-column-expression.utils.spec.ts index 65bafaa595e..029736fdd55 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/__tests__/get-ts-vectors-column-expression.utils.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/utils/__tests__/get-ts-vectors-column-expression.utils.spec.ts @@ -3,7 +3,7 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { type FieldTypeAndNameMetadata, getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; +} from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; const nameTextField = { name: 'name', type: FieldMetadataType.TEXT }; const nameFullNameField = { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util.ts b/packages/twenty-server/src/engine/workspace-manager/utils/convert-class-to-object-metadata-name.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util.ts rename to packages/twenty-server/src/engine/workspace-manager/utils/convert-class-to-object-metadata-name.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util.ts b/packages/twenty-server/src/engine/workspace-manager/utils/create-deterministic-uuid.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util.ts rename to packages/twenty-server/src/engine/workspace-manager/utils/create-deterministic-uuid.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts b/packages/twenty-server/src/engine/workspace-manager/utils/get-ts-vector-column-expression.util.ts similarity index 88% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts rename to packages/twenty-server/src/engine/workspace-manager/utils/get-ts-vector-column-expression.util.ts index 86ae79f7795..5cbc0e73ffe 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/utils/get-ts-vector-column-expression.util.ts @@ -8,15 +8,11 @@ import { computeCompositeColumnName, } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; import { isSearchableFieldType, type SearchableFieldType, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util'; -import { isSearchableSubfield } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-subfield.util'; +} from 'src/engine/workspace-manager/utils/is-searchable-field.util'; +import { isSearchableSubfield } from 'src/engine/workspace-manager/utils/is-searchable-subfield.util'; export type FieldTypeAndNameMetadata = { name: string; @@ -51,9 +47,8 @@ const getColumnExpressionsFromField = ( ); if (!compositeType) { - throw new WorkspaceMigrationException( + throw new Error( `Composite type not found for field metadata type: ${fieldMetadataTypeAndName.type}`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, ); } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util.ts b/packages/twenty-server/src/engine/workspace-manager/utils/is-searchable-field.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-field.util.ts rename to packages/twenty-server/src/engine/workspace-manager/utils/is-searchable-field.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-subfield.util.ts b/packages/twenty-server/src/engine/workspace-manager/utils/is-searchable-subfield.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-searchable-subfield.util.ts rename to packages/twenty-server/src/engine/workspace-manager/utils/is-searchable-subfield.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts index 9d44cbefcf6..73c71ee8a76 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.module.ts @@ -10,18 +10,16 @@ import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-s import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; import { ObjectMetadataModule } from 'src/engine/metadata-modules/object-metadata/object-metadata.module'; -import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; import { PermissionsModule } from 'src/engine/metadata-modules/permissions/permissions.module'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RoleModule } from 'src/engine/metadata-modules/role/role.module'; +import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; import { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module'; -import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; import { DevSeederModule } from 'src/engine/workspace-manager/dev-seeder/dev-seeder.module'; -import { WorkspaceMigrationV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module'; -import { WorkspaceSyncMetadataModule } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.module'; import { TwentyStandardApplicationModule } from 'src/engine/workspace-manager/twenty-standard-application/twenty-standard-application.module'; +import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { WorkspaceManagerService } from './workspace-manager.service'; @@ -29,11 +27,9 @@ import { WorkspaceManagerService } from './workspace-manager.service'; imports: [ WorkspaceDataSourceModule, WorkspaceMigrationModule, - WorkspaceMigrationV2Module, ObjectMetadataModule, DevSeederModule, DataSourceModule, - WorkspaceSyncMetadataModule, FeatureFlagModule, PermissionsModule, AiAgentModule, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts index 837c288ee34..f0e737ad136 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-manager.service.ts @@ -5,30 +5,22 @@ import { DataSource, Repository } from 'typeorm'; import { ApplicationService } from 'src/engine/core-modules/application/application.service'; import { FlatApplication } from 'src/engine/core-modules/application/types/flat-application.type'; -import { fromApplicationEntityToFlatApplication } from 'src/engine/core-modules/application/utils/from-application-entity-to-flat-application.util'; -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 { UserWorkspaceEntity } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { type DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; import { ObjectMetadataService } from 'src/engine/metadata-modules/object-metadata/object-metadata.service'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; +import { ADMIN_ROLE } from 'src/engine/metadata-modules/role/constants/admin-role'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { RoleService } from 'src/engine/metadata-modules/role/role.service'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; -import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service'; import { prefillCompanies } from 'src/engine/workspace-manager/standard-objects-prefill-data/prefill-companies'; -import { prefillCoreViews } from 'src/engine/workspace-manager/standard-objects-prefill-data/prefill-core-views'; import { prefillPeople } from 'src/engine/workspace-manager/standard-objects-prefill-data/prefill-people'; import { prefillWorkflows } from 'src/engine/workspace-manager/standard-objects-prefill-data/prefill-workflows'; -import { standardObjectsPrefillData } from 'src/engine/workspace-manager/standard-objects-prefill-data/standard-objects-prefill-data'; import { TwentyStandardApplicationService } from 'src/engine/workspace-manager/twenty-standard-application/services/twenty-standard-application.service'; -import { ADMIN_ROLE } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role'; -import { WorkspaceSyncMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service'; @Injectable() export class WorkspaceManagerService { @@ -38,7 +30,6 @@ export class WorkspaceManagerService { @InjectDataSource() private readonly coreDataSource: DataSource, private readonly workspaceDataSourceService: WorkspaceDataSourceService, - private readonly workspaceMigrationService: WorkspaceMigrationService, private readonly objectMetadataService: ObjectMetadataService, private readonly dataSourceService: DataSourceService, @InjectRepository(UserWorkspaceEntity) @@ -56,8 +47,6 @@ export class WorkspaceManagerService { private readonly serverlessFunctionRepository: Repository, private readonly applicationService: ApplicationService, private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService, - private readonly featureFlagService: FeatureFlagService, - private readonly workspaceSyncMetadataService: WorkspaceSyncMetadataService, ) {} public async init({ @@ -81,58 +70,26 @@ export class WorkspaceManagerService { ); const dataSourceMetadataCreationStart = performance.now(); - const dataSourceMetadata = - await this.dataSourceService.createDataSourceMetadata( + + await this.dataSourceService.createDataSourceMetadata( + workspaceId, + schemaName, + ); + + await this.applicationService.createTwentyStandardApplication({ + workspaceId, + }); + + await this.twentyStandardApplicationService.synchronizeTwentyStandardApplicationOrThrow( + { workspaceId, - schemaName, - ); + }, + ); - const featureFlags = - await this.featureFlagService.getWorkspaceFeatureFlagsMap(workspaceId); - - const twentyStandardApplication = - await this.applicationService.createTwentyStandardApplication({ - workspaceId, - }); - - const isV2SyncEnabled = - featureFlags[FeatureFlagKey.IS_WORKSPACE_CREATION_V2_ENABLED]; - - if (isV2SyncEnabled) { - await this.twentyStandardApplicationService.synchronizeTwentyStandardApplicationOrThrow( - { - workspaceId, - }, - ); - - await this.prefillCreatedWorkspaceRecords({ - workspaceId, - schemaName, - }); - } else { - await this.workspaceSyncMetadataService.synchronize({ - workspaceId, - dataSourceId: dataSourceMetadata.id, - featureFlags, - }); - - const prefillStandardObjectsStart = performance.now(); - - await this.prefillWorkspaceWithStandardObjectsRecords({ - dataSourceMetadata, - workspaceId, - featureFlags, - twentyStandardFlatApplication: fromApplicationEntityToFlatApplication( - twentyStandardApplication, - ), - }); - - const prefillStandardObjectsEnd = performance.now(); - - this.logger.log( - `Prefill standard objects took ${prefillStandardObjectsEnd - prefillStandardObjectsStart}ms`, - ); - } + await this.prefillCreatedWorkspaceRecords({ + workspaceId, + schemaName, + }); const dataSourceMetadataCreationEnd = performance.now(); @@ -204,43 +161,6 @@ export class WorkspaceManagerService { } } - private async prefillWorkspaceWithStandardObjectsRecords({ - dataSourceMetadata, - workspaceId, - featureFlags, - twentyStandardFlatApplication, - }: { - dataSourceMetadata: DataSourceEntity; - workspaceId: string; - featureFlags: Record; - twentyStandardFlatApplication: FlatApplication; - }) { - const { flatObjectMetadataMaps, flatFieldMetadataMaps } = - await this.flatEntityMapsCacheService.getOrRecomputeManyOrAllFlatEntityMaps( - { - workspaceId, - flatMapsKeys: ['flatObjectMetadataMaps', 'flatFieldMetadataMaps'], - }, - ); - - await standardObjectsPrefillData( - this.coreDataSource, - dataSourceMetadata.schema, - flatObjectMetadataMaps, - flatFieldMetadataMaps, - ); - - await prefillCoreViews({ - twentyStandardFlatApplication, - coreDataSource: this.coreDataSource, - workspaceId, - flatObjectMetadataMaps, - flatFieldMetadataMaps, - workspaceSchemaName: dataSourceMetadata.schema, - featureFlags, - }); - } - /** * @deprecated Should be removed once AddWorkspaceForeignKeysMigrationCommand has been run successfully in production * As we will be able to rely on foreignKey delete cascading @@ -261,7 +181,6 @@ export class WorkspaceManagerService { workspaceId, }); - await this.workspaceMigrationService.deleteAllWithinWorkspace(workspaceId); await this.dataSourceService.delete(workspaceId); } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/index.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/index.ts deleted file mode 100644 index 08e191a85b7..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { WorkspaceMigrationIndexFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-index.factory'; - -import { WorkspaceMigrationFieldRelationFactory } from './workspace-migration-field-relation.factory'; -import { WorkspaceMigrationFieldFactory } from './workspace-migration-field.factory'; -import { WorkspaceMigrationObjectFactory } from './workspace-migration-object.factory'; - -export const workspaceMigrationBuilderFactories = [ - WorkspaceMigrationObjectFactory, - WorkspaceMigrationFieldFactory, - WorkspaceMigrationFieldRelationFactory, - WorkspaceMigrationIndexFactory, -]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/__tests__/workspace-migration-index.factory.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/__tests__/workspace-migration-index.factory.util.spec.ts deleted file mode 100644 index 9cbde4f73b3..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/__tests__/workspace-migration-index.factory.util.spec.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { FieldMetadataType } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; - -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { createIndexMigration } from 'src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils'; -import { getMockFieldMetadataEntity } from 'src/utils/__test__/get-field-metadata-entity.mock'; - -describe('WorkspaceMigrationIndexFactory', () => { - it('should create index migrations for simple fields', async () => { - const simpleField = getMockFieldMetadataEntity({ - workspaceId: '20202020-0000-0000-0000-000000000000', - objectMetadataId: '20202020-0000-0000-0000-000000000001', - id: 'f1', - type: FieldMetadataType.TEXT, - name: 'simpleField', - label: 'Simple Field', - isNullable: true, - isLabelSyncedWithName: true, - createdAt: new Date(), - updatedAt: new Date(), - }); - - const objectMetadata = { - id: '20202020-0000-0000-0000-000000000002', - workspaceId: '20202020-0000-0000-0000-000000000000', - nameSingular: 'Test', - fields: [simpleField], - isCustom: false, - }; - const indexMetadata = { - name: 'idx_simple', - isUnique: true, - indexType: 'BTREE', - indexWhereClause: null, - indexFieldMetadatas: [{ fieldMetadataId: 'f1', order: 0 }], - } as IndexMetadataEntity; - const map = new Map([[objectMetadata, [indexMetadata]]]); - const result = (await createIndexMigration(map)) as any; - - expect(result).toHaveLength(1); - const firstMigration = result[0].migrations[0]; - - expect(firstMigration.action).toBe('alter_indexes'); - expect(firstMigration.indexes[0].name).toBe('idx_simple'); - expect(firstMigration.indexes[0].columns).toEqual(['simpleField']); - expect(firstMigration.indexes[0].type).toBe('BTREE'); - expect(firstMigration.indexes[0].isUnique).toBe(true); - expect(firstMigration.indexes[0].where).toBeNull(); - }); - - it('should create index migrations for relation fields', async () => { - const relationField = getMockFieldMetadataEntity({ - workspaceId: '20202020-0000-0000-0000-000000000000', - objectMetadataId: '20202020-0000-0000-0000-000000000001', - id: 'f2', - type: FieldMetadataType.RELATION, - name: 'author', - label: 'Author', - isNullable: true, - isLabelSyncedWithName: true, - createdAt: new Date(), - updatedAt: new Date(), - settings: { - relationType: RelationType.MANY_TO_ONE, - joinColumnName: 'authorId', - }, - }); - - const objectMetadata = { - id: '20202020-0000-0000-0000-000000000003', - workspaceId: '20202020-0000-0000-0000-000000000000', - nameSingular: 'Attachment', - fields: [relationField], - isCustom: false, - }; - const indexMetadata = { - name: 'idx_rel', - isUnique: false, - indexType: 'BTREE', - indexWhereClause: null, - indexFieldMetadatas: [{ fieldMetadataId: 'f2', order: 0 }], - } as IndexMetadataEntity; - const map = new Map([[objectMetadata, [indexMetadata]]]); - const result = (await createIndexMigration(map)) as any; - - const firstMigration = result[0].migrations[0]; - - expect(firstMigration.indexes[0].columns).toEqual(['authorId']); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts deleted file mode 100644 index 03de688634e..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils.ts +++ /dev/null @@ -1,162 +0,0 @@ -import { - type CompositeType, - compositeTypeDefinitions, - FieldMetadataType, -} from 'twenty-shared/types'; -import { isDefined } from 'twenty-shared/utils'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; -import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util'; -import { - type WorkspaceMigrationEntity, - WorkspaceMigrationIndexActionType, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; -import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; - -export const createIndexMigration = async ( - indexMetadataByObjectMetadataMap: Map< - Pick< - ObjectMetadataEntity, - 'id' | 'workspaceId' | 'nameSingular' | 'isCustom' - > & { - fields: Pick[]; - }, - IndexMetadataEntity[] - >, -): Promise[]> => { - const workspaceMigrations: Partial[] = []; - - for (const [ - objectMetadata, - indexMetadataCollection, - ] of indexMetadataByObjectMetadataMap) { - const targetTable = computeObjectTargetTable(objectMetadata); - - const fieldsById = Object.fromEntries( - objectMetadata.fields.map((field) => [field.id, field]), - ); - - const indexes = indexMetadataCollection.map((indexMetadata) => { - const columns = indexMetadata.indexFieldMetadatas - .sort((a, b) => a.order - b.order) - .map((indexFieldMetadata) => { - const fieldMetadata = fieldsById[indexFieldMetadata.fieldMetadataId]; - - if (!fieldMetadata) { - throw new Error( - `Field metadata with id ${indexFieldMetadata.fieldMetadataId} not found in object metadata with id ${objectMetadata.id}`, - ); - } - - if ( - isFieldMetadataEntityOfType( - fieldMetadata, - FieldMetadataType.RELATION, - ) || - isFieldMetadataEntityOfType( - fieldMetadata, - FieldMetadataType.MORPH_RELATION, - ) - ) { - if (!fieldMetadata.settings) { - throw new Error( - `Join column name is not supported for relation fields`, - ); - } - - return fieldMetadata.settings.joinColumnName; - } - - if (!isCompositeFieldMetadataType(fieldMetadata.type)) { - return fieldMetadata.name; - } - - const compositeType = compositeTypeDefinitions.get( - fieldMetadata.type, - ) as CompositeType; - - const columns = compositeType.properties - .filter((property) => property.isIncludedInUniqueConstraint) - .map((property) => - computeCompositeColumnName(fieldMetadata, property), - ); - - return columns; - }) - .flat() - .filter(isDefined); - - return { - name: indexMetadata.name, - action: WorkspaceMigrationIndexActionType.CREATE, - isUnique: indexMetadata.isUnique, - columns, - type: indexMetadata.indexType, - where: indexMetadata.indexWhereClause, - }; - }); - - workspaceMigrations.push({ - workspaceId: objectMetadata.workspaceId, - name: generateMigrationName( - `create-${objectMetadata.nameSingular}-indexes`, - ), - isCustom: false, - migrations: [ - { - name: targetTable, - action: WorkspaceMigrationTableActionType.ALTER_INDEXES, - indexes, - }, - ], - }); - } - - return workspaceMigrations; -}; - -export const deleteIndexMigration = async ( - indexMetadataByObjectMetadataMap: Map< - ObjectMetadataEntity, - IndexMetadataEntity[] - >, -): Promise[]> => { - const workspaceMigrations: Partial[] = []; - - for (const [ - objectMetadata, - indexMetadataCollection, - ] of indexMetadataByObjectMetadataMap) { - const targetTable = computeObjectTargetTable(objectMetadata); - - const indexes = indexMetadataCollection.map((indexMetadata) => ({ - name: indexMetadata.name, - action: WorkspaceMigrationIndexActionType.DROP, - columns: [], - isUnique: indexMetadata.isUnique, - })); - - workspaceMigrations.push({ - workspaceId: objectMetadata.workspaceId, - name: generateMigrationName( - `delete-${objectMetadata.nameSingular}-indexes`, - ), - isCustom: false, - migrations: [ - { - name: targetTable, - action: WorkspaceMigrationTableActionType.ALTER_INDEXES, - indexes, - }, - ], - }); - } - - return workspaceMigrations; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field-relation.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field-relation.factory.ts deleted file mode 100644 index 5bfe5358a9a..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field-relation.factory.ts +++ /dev/null @@ -1,411 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; - -import { type 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 { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationEntity, - type WorkspaceMigrationTableAction, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationFactory } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.factory'; -import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; -import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; -import { type FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; -@Injectable() -export class WorkspaceMigrationFieldRelationFactory { - constructor( - private readonly workspaceMigrationFactory: WorkspaceMigrationFactory, - ) {} - - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - fieldMetadataCollection: FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[], - action: - | WorkspaceMigrationBuilderAction.CREATE - | WorkspaceMigrationBuilderAction.DELETE, - ): Promise[]>; - - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - fieldMetadataUpdateCollection: FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[], - action: WorkspaceMigrationBuilderAction.UPDATE, - ): Promise[]>; - - /** - * Deletion of the relation is handled by field deletion - */ - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - fieldMetadataCollectionOrFieldMetadataUpdateCollection: - | FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[] - | FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[], - action: WorkspaceMigrationBuilderAction, - ): Promise[]> { - const originalObjectMetadataMap = originalObjectMetadataCollection.reduce( - (result, currentObject) => { - result[currentObject.id] = currentObject; - - return result; - }, - {} as Record, - ); - - switch (action) { - case WorkspaceMigrationBuilderAction.CREATE: - return this.createFieldRelationMigration( - originalObjectMetadataMap, - fieldMetadataCollectionOrFieldMetadataUpdateCollection as FieldMetadataEntity[], - ); - case WorkspaceMigrationBuilderAction.UPDATE: - return this.updateFieldRelationMigration( - originalObjectMetadataMap, - fieldMetadataCollectionOrFieldMetadataUpdateCollection as FieldMetadataUpdate[], - ); - case WorkspaceMigrationBuilderAction.DELETE: - return this.deleteFieldRelationMigration( - originalObjectMetadataMap, - fieldMetadataCollectionOrFieldMetadataUpdateCollection as FieldMetadataEntity[], - ); - default: - return []; - } - } - - private async updateFieldRelationMigration( - originalObjectMetadataMap: Record, - fieldMetadataUpdateCollection: FieldMetadataUpdate[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const { - altered: sourceFieldMetadata, - } of fieldMetadataUpdateCollection) { - const sourceObjectMetadata = - originalObjectMetadataMap[sourceFieldMetadata.objectMetadataId]; - const targetObjectMetadata = - originalObjectMetadataMap[ - sourceFieldMetadata.relationTargetObjectMetadataId - ]; - - if (!sourceObjectMetadata) { - throw new Error( - `ObjectMetadata with id ${sourceFieldMetadata.objectMetadataId} not found`, - ); - } - - if (!sourceFieldMetadata.settings) { - throw new Error( - `FieldMetadata for relation with id ${sourceFieldMetadata.id} has no settings`, - ); - } - - if ( - sourceFieldMetadata.settings.relationType !== RelationType.MANY_TO_ONE - ) { - continue; - } - - if (!sourceFieldMetadata.settings.joinColumnName) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.id} has no join column name in settings`, - ); - } - - if (!targetObjectMetadata) { - throw new Error( - `ObjectMetadata with id ${sourceFieldMetadata.relationTargetObjectMetadataId} not found`, - ); - } - - const targetFieldMetadata = targetObjectMetadata.fields.find( - (field) => - field.id === sourceFieldMetadata.relationTargetFieldMetadataId, - ); - - if (!targetFieldMetadata) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.relationTargetFieldMetadataId} not found`, - ); - } - - if ( - !isFieldMetadataEntityOfType( - targetFieldMetadata, - FieldMetadataType.RELATION, - ) - ) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.relationTargetFieldMetadataId} is not a relation`, - ); - } - - if (!targetFieldMetadata.settings) { - throw new Error( - `FieldMetadata for relation with id ${sourceFieldMetadata.id} has no settings`, - ); - } - - const migrations: WorkspaceMigrationTableAction[] = [ - { - name: computeObjectTargetTable(sourceObjectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - { - action: WorkspaceMigrationColumnActionType.DROP_FOREIGN_KEY, - columnName: sourceFieldMetadata.settings.joinColumnName, - }, - ], - }, - { - name: computeObjectTargetTable(sourceObjectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - { - action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY, - columnName: sourceFieldMetadata.settings.joinColumnName, - referencedTableName: - computeObjectTargetTable(targetObjectMetadata), - referencedTableColumnName: 'id', - onDelete: sourceFieldMetadata.settings.onDelete, - }, - ], - }, - ]; - - workspaceMigrations.push({ - workspaceId: sourceFieldMetadata.workspaceId, - name: generateMigrationName( - `update-relation-from-${sourceObjectMetadata.nameSingular}-to-${targetObjectMetadata.nameSingular}`, - ), - isCustom: false, - migrations, - }); - } - - return workspaceMigrations; - } - - private async createFieldRelationMigration( - originalObjectMetadataMap: Record, - fieldRelationMetadataCollection: FieldMetadataEntity[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const sourceFieldMetadata of fieldRelationMetadataCollection) { - const sourceObjectMetadata = - originalObjectMetadataMap[sourceFieldMetadata.objectMetadataId]; - const targetObjectMetadata = - originalObjectMetadataMap[ - sourceFieldMetadata.relationTargetObjectMetadataId - ]; - - if (!sourceObjectMetadata) { - throw new Error( - `ObjectMetadata with id ${sourceFieldMetadata.objectMetadataId} not found`, - ); - } - - if (!sourceFieldMetadata.settings) { - throw new Error( - `FieldMetadata for relation with id ${sourceFieldMetadata.id} has no settings`, - ); - } - - if ( - sourceFieldMetadata.settings.relationType !== RelationType.MANY_TO_ONE - ) { - continue; - } - - if (!sourceFieldMetadata.settings.joinColumnName) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.id} has no join column name in settings`, - ); - } - - if (!targetObjectMetadata) { - throw new Error( - `ObjectMetadata with id ${sourceFieldMetadata.relationTargetObjectMetadataId} not found`, - ); - } - - const targetFieldMetadata = targetObjectMetadata.fields.find( - (field) => - field.id === sourceFieldMetadata.relationTargetFieldMetadataId, - ); - - if (!targetFieldMetadata) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.relationTargetFieldMetadataId} not found`, - ); - } - - if ( - !isFieldMetadataEntityOfType( - targetFieldMetadata, - FieldMetadataType.RELATION, - ) - ) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.relationTargetFieldMetadataId} is not a relation`, - ); - } - - const migrations: WorkspaceMigrationTableAction[] = [ - { - name: computeObjectTargetTable(sourceObjectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - ...this.workspaceMigrationFactory.createColumnActions( - WorkspaceMigrationColumnActionType.CREATE, - sourceFieldMetadata, - ), - ], - }, - { - name: computeObjectTargetTable(sourceObjectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - { - action: WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY, - columnName: sourceFieldMetadata.settings.joinColumnName, - referencedTableName: - computeObjectTargetTable(targetObjectMetadata), - referencedTableColumnName: 'id', - onDelete: sourceFieldMetadata.settings.onDelete, - }, - ], - }, - ]; - - workspaceMigrations.push({ - workspaceId: sourceFieldMetadata.workspaceId, - name: generateMigrationName( - `create-relation-from-${sourceObjectMetadata.nameSingular}-to-${targetObjectMetadata.nameSingular}`, - ), - isCustom: false, - migrations, - }); - } - - return workspaceMigrations; - } - - private async deleteFieldRelationMigration( - originalObjectMetadataMap: Record, - fieldRelationMetadataCollection: FieldMetadataEntity[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const sourceFieldMetadata of fieldRelationMetadataCollection) { - const sourceObjectMetadata = - originalObjectMetadataMap[sourceFieldMetadata.objectMetadataId]; - const targetObjectMetadata = - originalObjectMetadataMap[ - sourceFieldMetadata.relationTargetObjectMetadataId - ]; - - if (!sourceObjectMetadata) { - throw new Error( - `ObjectMetadata with id ${sourceFieldMetadata.objectMetadataId} not found`, - ); - } - - if (!sourceFieldMetadata.settings) { - throw new Error( - `FieldMetadata for relation with id ${sourceFieldMetadata.id} has no settings`, - ); - } - - if ( - sourceFieldMetadata.settings.relationType !== RelationType.MANY_TO_ONE - ) { - // Only MANY_TO_ONE relations deletion have consequences on the database schema - continue; - } - - if (!targetObjectMetadata) { - throw new Error( - `ObjectMetadata with id ${sourceFieldMetadata.relationTargetObjectMetadataId} not found`, - ); - } - - const targetFieldMetadata = targetObjectMetadata.fields.find( - (field) => - field.id === sourceFieldMetadata.relationTargetFieldMetadataId, - ); - - if (!targetFieldMetadata) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.relationTargetFieldMetadataId} not found`, - ); - } - - if ( - !isFieldMetadataEntityOfType( - targetFieldMetadata, - FieldMetadataType.RELATION, - ) - ) { - throw new Error( - `FieldMetadata with id ${sourceFieldMetadata.relationTargetFieldMetadataId} is not a relation`, - ); - } - - if (!sourceFieldMetadata.settings.joinColumnName) { - throw new Error( - `FieldMetadata for relation with id ${sourceFieldMetadata.id} has no join column name, it should not generate a workspace migration`, - ); - } - - const migrations: WorkspaceMigrationTableAction[] = [ - { - name: computeObjectTargetTable(sourceObjectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - { - action: WorkspaceMigrationColumnActionType.DROP_FOREIGN_KEY, - columnName: sourceFieldMetadata.settings.joinColumnName, - }, - ], - }, - { - name: computeObjectTargetTable(sourceObjectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - { - action: WorkspaceMigrationColumnActionType.DROP, - columnName: sourceFieldMetadata.settings.joinColumnName, - }, - ], - }, - ]; - - workspaceMigrations.push({ - workspaceId: sourceFieldMetadata.workspaceId, - name: generateMigrationName( - `update-relation-from-${sourceObjectMetadata.nameSingular}-to-${targetObjectMetadata.nameSingular}`, - ), - isCustom: false, - migrations, - }); - } - - return workspaceMigrations; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts deleted file mode 100644 index b58f1743188..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts +++ /dev/null @@ -1,260 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import diff from 'microdiff'; -import { FieldMetadataType } from 'twenty-shared/types'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; - -import { type 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 { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util'; -import { - type WorkspaceMigrationColumnAction, - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationEntity, - type WorkspaceMigrationTableAction, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationFactory } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.factory'; -import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; - -export interface FieldMetadataUpdate< - Type extends FieldMetadataType = FieldMetadataType, -> { - current: FieldMetadataEntity; - altered: FieldMetadataEntity; -} - -@Injectable() -export class WorkspaceMigrationFieldFactory { - constructor( - private readonly workspaceMigrationFactory: WorkspaceMigrationFactory, - ) {} - - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - fieldMetadataCollection: FieldMetadataEntity[], - action: - | WorkspaceMigrationBuilderAction.CREATE - | WorkspaceMigrationBuilderAction.DELETE, - ): Promise[]>; - - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - fieldMetadataUpdateCollection: FieldMetadataUpdate[], - action: WorkspaceMigrationBuilderAction.UPDATE, - ): Promise[]>; - - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - fieldMetadataCollectionOrFieldMetadataUpdateCollection: - | FieldMetadataEntity[] - | FieldMetadataUpdate[], - action: WorkspaceMigrationBuilderAction, - ): Promise[]> { - const originalObjectMetadataMap = originalObjectMetadataCollection.reduce( - (result, currentObject) => { - result[currentObject.id] = currentObject; - - return result; - }, - {} as Record, - ); - - switch (action) { - case WorkspaceMigrationBuilderAction.CREATE: - return await this.createFieldMigration( - originalObjectMetadataMap, - fieldMetadataCollectionOrFieldMetadataUpdateCollection as FieldMetadataEntity[], - ); - case WorkspaceMigrationBuilderAction.UPDATE: - return await this.updateFieldMigration( - originalObjectMetadataMap, - fieldMetadataCollectionOrFieldMetadataUpdateCollection as FieldMetadataUpdate[], - ); - case WorkspaceMigrationBuilderAction.DELETE: - return await this.deleteFieldMigration( - originalObjectMetadataMap, - fieldMetadataCollectionOrFieldMetadataUpdateCollection as FieldMetadataEntity[], - ); - default: - return []; - } - } - - private async createFieldMigration( - originalObjectMetadataMap: Record, - fieldMetadataCollection: FieldMetadataEntity[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - if (fieldMetadataCollection.length === 0) { - return []; - } - - const fieldMetadataCollectionGroupByObjectMetadataId = - fieldMetadataCollection.reduce( - (result, currentFieldMetadata) => { - result[currentFieldMetadata.objectMetadataId] = [ - ...(result[currentFieldMetadata.objectMetadataId] || []), - currentFieldMetadata, - ]; - - return result; - }, - {} as Record, - ); - - for (const objectMetadataId in fieldMetadataCollectionGroupByObjectMetadataId) { - const fieldMetadataCollection = - fieldMetadataCollectionGroupByObjectMetadataId[objectMetadataId]; - - const columns: WorkspaceMigrationColumnAction[] = []; - - const objectMetadata = - originalObjectMetadataMap[fieldMetadataCollection[0]?.objectMetadataId]; - - for (const fieldMetadata of fieldMetadataCollection) { - columns.push( - ...this.workspaceMigrationFactory.createColumnActions( - WorkspaceMigrationColumnActionType.CREATE, - fieldMetadata, - ), - ); - } - - workspaceMigrations.push({ - workspaceId: objectMetadata.workspaceId, - name: generateMigrationName( - `create-${objectMetadata.nameSingular}-fields`, - ), - isCustom: objectMetadata.isCustom, - migrations: [ - { - name: computeObjectTargetTable( - originalObjectMetadataMap[objectMetadataId], - ), - action: WorkspaceMigrationTableActionType.ALTER, - columns, - }, - ], - }); - } - - return workspaceMigrations; - } - - private async updateFieldMigration( - originalObjectMetadataMap: Record, - fieldMetadataUpdateCollection: FieldMetadataUpdate[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - if (fieldMetadataUpdateCollection.length === 0) { - return []; - } - - for (const fieldMetadataUpdate of fieldMetadataUpdateCollection) { - const columnActions = this.workspaceMigrationFactory.createColumnActions( - WorkspaceMigrationColumnActionType.ALTER, - fieldMetadataUpdate.current, - fieldMetadataUpdate.altered, - ); - - const isMigrationNeeded = columnActions.reduce( - (result, currentColumnAction) => { - if ( - currentColumnAction.action === - WorkspaceMigrationColumnActionType.CREATE || - currentColumnAction.action === - WorkspaceMigrationColumnActionType.DROP - ) { - return true; - } - - if ( - currentColumnAction.action === - WorkspaceMigrationColumnActionType.ALTER - ) { - return ( - diff( - currentColumnAction.currentColumnDefinition, - currentColumnAction.alteredColumnDefinition, - ).length > 0 - ); - } - - return result; - }, - false, - ); - - if (isMigrationNeeded) { - const migrations: WorkspaceMigrationTableAction[] = [ - { - name: computeObjectTargetTable( - originalObjectMetadataMap[ - fieldMetadataUpdate.current.objectMetadataId - ], - ), - action: WorkspaceMigrationTableActionType.ALTER, - columns: this.workspaceMigrationFactory.createColumnActions( - WorkspaceMigrationColumnActionType.ALTER, - fieldMetadataUpdate.current, - fieldMetadataUpdate.altered, - ), - }, - ]; - - workspaceMigrations.push({ - workspaceId: fieldMetadataUpdate.current.workspaceId, - name: generateMigrationName( - `update-${fieldMetadataUpdate.altered.name}`, - ), - isCustom: fieldMetadataUpdate.altered.isCustom, - migrations, - }); - } - } - - return workspaceMigrations; - } - - private async deleteFieldMigration( - originalObjectMetadataMap: Record, - fieldMetadataCollection: FieldMetadataEntity[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const fieldMetadata of fieldMetadataCollection) { - // We're skipping relation fields, because they're just representation and not real columns - if (fieldMetadata.type === FieldMetadataType.RELATION) { - continue; - } - - const migrations: WorkspaceMigrationTableAction[] = [ - { - name: computeObjectTargetTable( - originalObjectMetadataMap[fieldMetadata.objectMetadataId], - ), - action: WorkspaceMigrationTableActionType.ALTER, - columns: [ - { - action: WorkspaceMigrationColumnActionType.DROP, - columnName: fieldMetadata.name, - }, - ], - }, - ]; - - workspaceMigrations.push({ - workspaceId: fieldMetadata.workspaceId, - name: generateMigrationName(`delete-${fieldMetadata.name}`), - isCustom: fieldMetadata.isCustom, - migrations, - }); - } - - return workspaceMigrations; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-index.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-index.factory.ts deleted file mode 100644 index 84a1a2278b8..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-index.factory.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; - -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - createIndexMigration, - deleteIndexMigration, -} from 'src/engine/workspace-manager/workspace-migration-builder/factories/utils/workspace-migration-index.factory.utils'; - -@Injectable() -export class WorkspaceMigrationIndexFactory { - constructor() {} - - async create( - originalObjectMetadataCollection: ObjectMetadataEntity[], - indexMetadataCollection: IndexMetadataEntity[], - action: WorkspaceMigrationBuilderAction, - ): Promise[]> { - const originalObjectMetadataMap = Object.fromEntries( - originalObjectMetadataCollection.map((obj) => [obj.id, obj]), - ); - - const indexMetadataByObjectMetadataMap = new Map< - ObjectMetadataEntity, - IndexMetadataEntity[] - >(); - - indexMetadataCollection.forEach((currentIndexMetadata) => { - const objectMetadata = - originalObjectMetadataMap[currentIndexMetadata.objectMetadataId]; - - if (!objectMetadata) { - throw new Error( - `Object metadata with id ${currentIndexMetadata.objectMetadataId} not found`, - ); - } - - if (!indexMetadataByObjectMetadataMap.has(objectMetadata)) { - indexMetadataByObjectMetadataMap.set(objectMetadata, []); - } - - indexMetadataByObjectMetadataMap - ?.get(objectMetadata) - ?.push(currentIndexMetadata); - }); - - switch (action) { - case WorkspaceMigrationBuilderAction.CREATE: - return createIndexMigration(indexMetadataByObjectMetadataMap); - case WorkspaceMigrationBuilderAction.DELETE: - return deleteIndexMigration(indexMetadataByObjectMetadataMap); - default: - return []; - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory.ts deleted file mode 100644 index 735c9429de9..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; - -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util'; -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationEntity, - type WorkspaceMigrationTableAction, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationFactory } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.factory'; -import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; - -export interface ObjectMetadataUpdate { - current: ObjectMetadataEntity; - altered: ObjectMetadataEntity; -} - -@Injectable() -export class WorkspaceMigrationObjectFactory { - constructor( - private readonly workspaceMigrationFactory: WorkspaceMigrationFactory, - ) {} - - async create( - objectMetadataCollection: ObjectMetadataEntity[], - action: WorkspaceMigrationBuilderAction.CREATE, - ): Promise[]>; - - async create( - objectMetadataUpdateCollection: ObjectMetadataUpdate[], - action: WorkspaceMigrationBuilderAction.UPDATE, - ): Promise[]>; - - async create( - objectMetadataCollection: ObjectMetadataEntity[], - action: WorkspaceMigrationBuilderAction.DELETE, - ): Promise[]>; - - async create( - objectMetadataCollectionOrObjectMetadataUpdateCollection: - | ObjectMetadataEntity[] - | ObjectMetadataUpdate[], - action: WorkspaceMigrationBuilderAction, - ): Promise[]> { - switch (action) { - case WorkspaceMigrationBuilderAction.CREATE: - return this.createObjectMigration( - objectMetadataCollectionOrObjectMetadataUpdateCollection as ObjectMetadataEntity[], - ); - case WorkspaceMigrationBuilderAction.UPDATE: - return this.updateObjectMigration( - objectMetadataCollectionOrObjectMetadataUpdateCollection as ObjectMetadataUpdate[], - ); - case WorkspaceMigrationBuilderAction.DELETE: - return this.deleteObjectMigration( - objectMetadataCollectionOrObjectMetadataUpdateCollection as ObjectMetadataEntity[], - ); - default: - return []; - } - } - - private async createObjectMigration( - objectMetadataCollection: ObjectMetadataEntity[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const objectMetadata of objectMetadataCollection) { - const migrations: WorkspaceMigrationTableAction[] = [ - { - name: computeObjectTargetTable(objectMetadata), - action: WorkspaceMigrationTableActionType.CREATE, - }, - ]; - - for (const field of objectMetadata.fields) { - if (field.type === FieldMetadataType.RELATION) { - continue; - } - - migrations.push({ - name: computeObjectTargetTable(objectMetadata), - action: WorkspaceMigrationTableActionType.ALTER, - columns: this.workspaceMigrationFactory.createColumnActions( - WorkspaceMigrationColumnActionType.CREATE, - field, - ), - }); - } - - workspaceMigrations.push({ - workspaceId: objectMetadata.workspaceId, - name: generateMigrationName(`create-${objectMetadata.nameSingular}`), - isCustom: objectMetadata.isCustom, - migrations, - }); - } - - return workspaceMigrations; - } - - private async updateObjectMigration( - objectMetadataUpdateCollection: ObjectMetadataUpdate[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const objectMetadataUpdate of objectMetadataUpdateCollection) { - const oldTableName = computeObjectTargetTable( - objectMetadataUpdate.current, - ); - const newTableName = computeObjectTargetTable( - objectMetadataUpdate.altered, - ); - - if (oldTableName !== newTableName) { - workspaceMigrations.push({ - workspaceId: objectMetadataUpdate.current.workspaceId, - name: generateMigrationName( - `rename-${objectMetadataUpdate.current.nameSingular}`, - ), - isCustom: objectMetadataUpdate.altered.isCustom, - migrations: [ - { - name: oldTableName, - newName: newTableName, - action: WorkspaceMigrationTableActionType.ALTER, - }, - ], - }); - } - } - - return workspaceMigrations; - } - - private async deleteObjectMigration( - objectMetadataCollection: ObjectMetadataEntity[], - ): Promise[]> { - const workspaceMigrations: Partial[] = []; - - for (const objectMetadata of objectMetadataCollection) { - workspaceMigrations.push({ - workspaceId: objectMetadata.workspaceId, - name: generateMigrationName(`delete-${objectMetadata.nameSingular}`), - isCustom: objectMetadata.isCustom, - migrations: [ - { - name: computeObjectTargetTable(objectMetadata), - action: WorkspaceMigrationTableActionType.DROP, - columns: [], - } satisfies WorkspaceMigrationTableAction, - ], - }); - } - - return workspaceMigrations; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface.ts deleted file mode 100644 index c498f533592..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum WorkspaceMigrationBuilderAction { - CREATE = 'create', - UPDATE = 'update', - DELETE = 'delete', -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/workspace-migration-builder.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/workspace-migration-builder.module.ts deleted file mode 100644 index 0b1645cecfe..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/workspace-migration-builder.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; - -import { workspaceMigrationBuilderFactories } from './factories'; - -@Module({ - imports: [WorkspaceMigrationModule, FeatureFlagModule], - providers: [...workspaceMigrationBuilderFactories], - exports: [...workspaceMigrationBuilderFactories], -}) -export class WorkspaceMigrationBuilderModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/commands/workspace-execute-pending-migrations.command.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/commands/workspace-execute-pending-migrations.command.ts deleted file mode 100644 index 47777bf1e42..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/commands/workspace-execute-pending-migrations.command.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Command, CommandRunner, Option } from 'nest-commander'; - -import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service'; - -interface ExecuteWorkspaceMigrationsOptions { - workspaceId: string; -} - -@Command({ - name: 'workspace:apply-pending-migrations', - description: 'Apply pending migrations', -}) -export class WorkspaceExecutePendingMigrationsCommand extends CommandRunner { - constructor( - private readonly workspaceMigrationRunnerService: WorkspaceMigrationRunnerService, - ) { - super(); - } - - async run( - _passedParam: string[], - options: ExecuteWorkspaceMigrationsOptions, - ): Promise { - await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrations( - options.workspaceId, - ); - } - - @Option({ - flags: '-w, --workspace-id [workspace_id]', - description: 'workspace id', - required: true, - }) - parseWorkspaceId(value: string): string { - return value; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/commands/workspace-migration-runner-commands.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/commands/workspace-migration-runner-commands.module.ts deleted file mode 100644 index 1cdf825ce6f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/commands/workspace-migration-runner-commands.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module'; - -import { WorkspaceExecutePendingMigrationsCommand } from './workspace-execute-pending-migrations.command'; - -@Module({ - imports: [WorkspaceMigrationRunnerModule], - providers: [WorkspaceExecutePendingMigrationsCommand], -}) -export class WorkspaceMigrationRunnerCommandsModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/__tests__/workspace-migration-enum.service.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/__tests__/workspace-migration-enum.service.spec.ts deleted file mode 100644 index b8bbdc055ce..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/__tests__/workspace-migration-enum.service.spec.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Test, type TestingModule } from '@nestjs/testing'; - -import { DataSource, type QueryRunner, TableColumn } from 'typeorm'; - -import { - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationEnumService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service'; - -describe('WorkspaceMigrationEnumService', () => { - let service: WorkspaceMigrationEnumService; - let queryRunner: QueryRunner; - - beforeEach(async () => { - const module: TestingModule = await Test.createTestingModule({ - providers: [ - WorkspaceMigrationEnumService, - { - provide: DataSource, - useValue: { - createQueryRunner: () => ({ - query: jest.fn(), - addColumn: jest.fn(), - }), - }, - }, - ], - }).compile(); - - service = module.get( - WorkspaceMigrationEnumService, - ); - queryRunner = module.get(DataSource).createQueryRunner(); - }); - - describe('alterEnum', () => { - it('should handle enum column alteration with renamed values', async () => { - const mockMigrationColumn: WorkspaceMigrationColumnAlter = { - action: WorkspaceMigrationColumnActionType.ALTER, - currentColumnDefinition: { - columnName: 'status', - columnType: 'enum', - enum: ['ACTIVE', 'INACTIVE'], - isNullable: false, - defaultValue: 'ACTIVE', - }, - alteredColumnDefinition: { - columnName: 'status', - columnType: 'enum', - enum: [ - { from: 'ACTIVE', to: 'ENABLED' }, - { from: 'INACTIVE', to: 'DISABLED' }, - ], - isNullable: false, - defaultValue: 'ENABLED', - }, - }; - - jest.spyOn(queryRunner, 'query').mockImplementation((query: string) => { - if (query.includes('information_schema.columns')) { - return Promise.resolve([{ udt_name: 'test_status_enum' }]); - } - if (query.includes('SELECT id')) { - return Promise.resolve([ - { id: '1', status: 'ACTIVE' }, - { id: '2', status: 'INACTIVE' }, - ]); - } - - return Promise.resolve(); - }); - - await service.alterEnum( - queryRunner, - 'test_schema', - 'test_table', - mockMigrationColumn, - ); - - expect(queryRunner.query).toHaveBeenCalledWith( - expect.stringContaining('information_schema.columns'), - ['test_schema', 'test_table', 'status'], - ); - expect(queryRunner.query).toHaveBeenCalledWith( - expect.stringContaining('ALTER TYPE'), - ); - expect(queryRunner.addColumn).toHaveBeenCalledWith( - 'test_schema.test_table', - new TableColumn({ - name: 'status', - type: 'enum', - enum: ['ENABLED', 'DISABLED'], - isNullable: false, - default: 'ENABLED', - enumName: 'test_table_status_enum', - }), - ); - }); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts deleted file mode 100644 index 2c8fee82218..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts +++ /dev/null @@ -1,372 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { isDefined } from 'twenty-shared/utils'; -import { type QueryRunner, TableColumn } from 'typeorm'; - -import { - type WorkspaceMigrationColumnAction, - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationColumnCreate, - type WorkspaceMigrationColumnCreateForeignKey, - type WorkspaceMigrationColumnDrop, - type WorkspaceMigrationColumnDropForeignKey, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationEnumService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service'; -import { WorkspaceMigrationTypeService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-type.service'; -import { type PostgresQueryRunner } from 'src/engine/workspace-manager/workspace-migration-runner/types/postgres-query-runner.type'; -import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util'; -import { convertOnDeleteActionToOnDelete } from 'src/engine/workspace-manager/workspace-migration-runner/utils/convert-on-delete-action-to-on-delete.util'; -import { typeormBuildCreateColumnSql } from 'src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; - -@Injectable() -export class WorkspaceMigrationColumnService { - constructor( - private readonly workspaceMigrationEnumService: WorkspaceMigrationEnumService, - private readonly workspaceMigrationTypeService: WorkspaceMigrationTypeService, - ) {} - - public async handleColumnChanges( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - columnMigrations?: WorkspaceMigrationColumnAction[], - ) { - if (!columnMigrations || columnMigrations.length === 0) { - return; - } - - const columnsByAction = this.groupColumnsByAction(columnMigrations); - - if (columnsByAction.create.length > 0) { - await this.handleCreateColumns( - queryRunner, - schemaName, - tableName, - columnsByAction.create, - ); - } - - if (columnsByAction.drop.length > 0) { - await this.handleDropColumns( - queryRunner, - schemaName, - tableName, - columnsByAction.drop, - ); - } - - if (columnsByAction.alter.length > 0) { - for (const column of columnsByAction.alter) { - await this.alterColumn(queryRunner, schemaName, tableName, column); - } - } - - if (columnsByAction.createForeignKey.length > 0) { - for (const column of columnsByAction.createForeignKey) { - await this.createForeignKey(queryRunner, schemaName, tableName, column); - } - } - - if (columnsByAction.dropForeignKey.length > 0) { - for (const column of columnsByAction.dropForeignKey) { - await this.dropForeignKey(queryRunner, schemaName, tableName, column); - } - } - } - - private groupColumnsByAction( - columnMigrations: WorkspaceMigrationColumnAction[], - ) { - return columnMigrations.reduce( - (acc, column) => { - switch (column.action) { - case WorkspaceMigrationColumnActionType.CREATE: - acc.create.push(column as WorkspaceMigrationColumnCreate); - break; - case WorkspaceMigrationColumnActionType.ALTER: - acc.alter.push(column as WorkspaceMigrationColumnAlter); - break; - case WorkspaceMigrationColumnActionType.CREATE_FOREIGN_KEY: - acc.createForeignKey.push( - column as WorkspaceMigrationColumnCreateForeignKey, - ); - break; - case WorkspaceMigrationColumnActionType.DROP_FOREIGN_KEY: - acc.dropForeignKey.push( - column as WorkspaceMigrationColumnDropForeignKey, - ); - break; - case WorkspaceMigrationColumnActionType.DROP: - acc.drop.push(column as WorkspaceMigrationColumnDrop); - break; - } - - return acc; - }, - { - create: [] as WorkspaceMigrationColumnCreate[], - alter: [] as WorkspaceMigrationColumnAlter[], - createForeignKey: [] as WorkspaceMigrationColumnCreateForeignKey[], - dropForeignKey: [] as WorkspaceMigrationColumnDropForeignKey[], - drop: [] as WorkspaceMigrationColumnDrop[], - }, - ); - } - - public createTableColumnFromMigration( - tableName: string, - column: WorkspaceMigrationColumnCreate, - ): TableColumn { - const enumName = column.enum?.length - ? `${tableName}_${column.columnName}_enum` - : undefined; - - return new TableColumn({ - name: column.columnName, - type: column.columnType, - default: column.defaultValue, - isPrimary: column.columnName === 'id', - enum: column.enum?.filter( - (value): value is string => typeof value === 'string', - ), - enumName: enumName, - isArray: column.isArray, - isNullable: column.isNullable, - asExpression: column.asExpression, - generatedType: column.generatedType, - }); - } - - public async handleCreateColumns( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - createColumnMigrations: WorkspaceMigrationColumnCreate[], - ) { - for (const createColumnMigration of createColumnMigrations) { - // TODO: remove once refactor is complete, id column is already created during table creation - if (createColumnMigration.columnName === 'id') { - continue; - } - - if (isDefined(createColumnMigration.enum)) { - const enumName = computePostgresEnumName({ - tableName, - columnName: createColumnMigration.columnName, - }); - - const joinedEnumValues = createColumnMigration.enum - .map((value) => removeSqlDDLInjection(value.toString())) - .map((value) => `'${value}'`) - .join(','); - - // TODO: remove once drop table as been refactored to remove the enum types - await queryRunner.query(`DROP TYPE IF EXISTS "${enumName}"`); - - await queryRunner.query( - `CREATE TYPE "${enumName}" AS ENUM (${joinedEnumValues})`, - ); - } - - await queryRunner.query( - `ALTER TABLE "${schemaName}"."${tableName}" ADD ${typeormBuildCreateColumnSql( - { - table: { name: tableName }, - column: { - name: createColumnMigration.columnName, - type: createColumnMigration.columnType, - precision: - createColumnMigration.columnType === 'timestamptz' - ? 3 - : undefined, - isArray: createColumnMigration.isArray ?? false, - isNullable: createColumnMigration.isNullable, - default: createColumnMigration.defaultValue, - asExpression: createColumnMigration.asExpression, - generatedType: createColumnMigration.generatedType, - }, - }, - )}`, - ); - - if (createColumnMigration.columnName === 'id') { - const pkName = queryRunner.connection.namingStrategy.primaryKeyName( - tableName, - [createColumnMigration.columnName], - ); - - await queryRunner.query( - `ALTER TABLE "${schemaName}"."${tableName} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${removeSqlDDLInjection(createColumnMigration.columnName)})`, - ); - } - } - } - - public async handleDropColumns( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - dropColumns: WorkspaceMigrationColumnDrop[], - ) { - if (dropColumns.length === 0) return; - - const columnNames = dropColumns.map((column) => column.columnName); - - await queryRunner.dropColumns(`${schemaName}.${tableName}`, columnNames); - } - - public async alterColumn( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - migrationColumn: WorkspaceMigrationColumnAlter, - ) { - const enumValues = migrationColumn.alteredColumnDefinition.enum; - - // TODO: Maybe we can do something better if we can recreate the old `TableColumn` object - if (enumValues) { - // This is returning the old enum values to avoid TypeORM dropping the enum type - await this.workspaceMigrationEnumService.alterEnum( - queryRunner, - schemaName, - tableName, - migrationColumn, - ); - - return; - } - - if ( - migrationColumn.currentColumnDefinition.columnType !== - migrationColumn.alteredColumnDefinition.columnType - ) { - await this.workspaceMigrationTypeService.alterType( - queryRunner, - schemaName, - tableName, - migrationColumn, - ); - - migrationColumn.currentColumnDefinition.columnType = - migrationColumn.alteredColumnDefinition.columnType; - - return; - } - - await queryRunner.changeColumn( - `${schemaName}.${tableName}`, - new TableColumn({ - name: migrationColumn.currentColumnDefinition.columnName, - type: migrationColumn.currentColumnDefinition.columnType, - default: migrationColumn.currentColumnDefinition.defaultValue, - enum: migrationColumn.currentColumnDefinition.enum?.filter( - (value): value is string => typeof value === 'string', - ), - isArray: migrationColumn.currentColumnDefinition.isArray, - isNullable: migrationColumn.currentColumnDefinition.isNullable, - /* For now unique constraints are created at a higher level - as we need to handle soft-delete and a bug on empty strings - */ - // isUnique: migrationColumn.currentColumnDefinition.isUnique, - }), - new TableColumn({ - name: migrationColumn.alteredColumnDefinition.columnName, - type: migrationColumn.alteredColumnDefinition.columnType, - default: migrationColumn.alteredColumnDefinition.defaultValue, - enum: migrationColumn.currentColumnDefinition.enum?.filter( - (value): value is string => typeof value === 'string', - ), - isArray: migrationColumn.alteredColumnDefinition.isArray, - isNullable: migrationColumn.alteredColumnDefinition.isNullable, - asExpression: migrationColumn.alteredColumnDefinition.asExpression, - generatedType: migrationColumn.alteredColumnDefinition.generatedType, - /* For now unique constraints are created at a higher level - as we need to handle soft-delete and a bug on empty strings - */ - // isUnique: migrationColumn.alteredColumnDefinition.isUnique, - }), - ); - } - - private async createForeignKey( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - migrationColumn: WorkspaceMigrationColumnCreateForeignKey, - ) { - // Code reference: - // https://github.com/typeorm/typeorm/blob/master/src/driver/postgres/PostgresQueryRunner.ts#L2894 - const foreignKeyName = queryRunner.connection.namingStrategy.foreignKeyName( - tableName, - [migrationColumn.columnName], - `${schemaName}.${migrationColumn.referencedTableName}`, - [migrationColumn.referencedTableColumnName], - ); - - let sql = - `ALTER TABLE "${schemaName}"."${tableName}" ADD CONSTRAINT "${ - foreignKeyName - }" FOREIGN KEY ("${removeSqlDDLInjection(migrationColumn.columnName)}") ` + - `REFERENCES "${schemaName}"."${removeSqlDDLInjection(migrationColumn.referencedTableName)}"("${removeSqlDDLInjection(migrationColumn.referencedTableColumnName)}")`; - - if (migrationColumn.onDelete) - sql += ` ON DELETE ${convertOnDeleteActionToOnDelete(migrationColumn.onDelete)}`; - - await queryRunner.query(sql); - } - - private async dropForeignKey( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - migrationColumn: WorkspaceMigrationColumnDropForeignKey, - ) { - const foreignKeyName = await this.getForeignKeyName( - queryRunner, - schemaName, - tableName, - migrationColumn.columnName, - ); - - if (!foreignKeyName) { - throw new Error( - `Foreign key not found for column ${migrationColumn.columnName}`, - ); - } - - await queryRunner.dropForeignKey( - `${schemaName}.${tableName}`, - foreignKeyName, - ); - } - - private async getForeignKeyName( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - columnName: string, - ): Promise { - const foreignKeys = await queryRunner.query( - ` - SELECT - tc.constraint_name AS constraint_name - FROM - information_schema.table_constraints AS tc - JOIN - information_schema.key_column_usage AS kcu - ON tc.constraint_name = kcu.constraint_name - AND tc.table_schema = kcu.table_schema - WHERE - tc.constraint_type = 'FOREIGN KEY' - AND tc.table_schema = $1 - AND tc.table_name = $2 - AND kcu.column_name = $3 - `, - [schemaName, tableName, columnName], - ); - - return foreignKeys[0]?.constraint_name; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts deleted file mode 100644 index 48d9eba7c36..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service.ts +++ /dev/null @@ -1,259 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { isDefined } from 'class-validator'; -import { type QueryRunner, TableColumn } from 'typeorm'; -import { v4 } from 'uuid'; - -import { serializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-default-value'; -import { unserializeDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/unserialize-default-value'; -import { - type WorkspaceMigrationColumnAlter, - type WorkspaceMigrationRenamedEnum, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; - -@Injectable() -export class WorkspaceMigrationEnumService { - async alterEnum( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - migrationColumn: WorkspaceMigrationColumnAlter, - ) { - const oldEnumTypeName = await this.getEnumTypeName( - queryRunner, - schemaName, - tableName, - migrationColumn.currentColumnDefinition.columnName, - ); - - // Rename column name - if ( - migrationColumn.currentColumnDefinition.columnName !== - migrationColumn.alteredColumnDefinition.columnName - ) { - await this.renameColumn( - queryRunner, - schemaName, - tableName, - migrationColumn.currentColumnDefinition.columnName, - migrationColumn.alteredColumnDefinition.columnName, - ); - } - - const columnDefinition = migrationColumn.alteredColumnDefinition; - const tempEnumTypeName = `${oldEnumTypeName}_temp`; - const newEnumTypeName = `${tableName}_${columnDefinition.columnName}_enum`; - const enumValues = - columnDefinition.enum?.map((enumValue) => { - if (typeof enumValue === 'string') { - return enumValue; - } - - return enumValue.to; - }) ?? []; - const renamedEnumValues = columnDefinition.enum?.filter( - (enumValue): enumValue is WorkspaceMigrationRenamedEnum => - typeof enumValue !== 'string', - ); - - const oldColumnName = `old_${v4()}`; - - // Rename old column - await this.renameColumn( - queryRunner, - schemaName, - tableName, - columnDefinition.columnName, - oldColumnName, - ); - await this.renameEnumType( - queryRunner, - schemaName, - oldEnumTypeName, - tempEnumTypeName, - ); - - await queryRunner.addColumn( - `${schemaName}.${tableName}`, - new TableColumn({ - name: columnDefinition.columnName, - type: columnDefinition.columnType, - default: columnDefinition.defaultValue, - enum: enumValues, - enumName: newEnumTypeName, - isArray: columnDefinition.isArray, - isNullable: columnDefinition.isNullable, - isUnique: columnDefinition.isUnique, - }), - ); - - await this.migrateEnumValues( - queryRunner, - schemaName, - migrationColumn, - tableName, - oldColumnName, - enumValues, - renamedEnumValues, - ); - - // Drop old column - await queryRunner.query(` - ALTER TABLE "${schemaName}"."${tableName}" - DROP COLUMN "${oldColumnName}" - `); - // Drop temp enum type - await this.dropOldEnumType(queryRunner, schemaName, tempEnumTypeName); - } - - private async renameColumn( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - oldColumnName: string, - newColumnName: string, - ) { - await queryRunner.query(` - ALTER TABLE "${schemaName}"."${tableName}" - RENAME COLUMN "${oldColumnName}" TO "${newColumnName}" - `); - } - - private migrateEnumValue({ - value, - renamedEnumValues, - allEnumValues, - defaultValueFallback, - }: { - value: string; - renamedEnumValues?: WorkspaceMigrationRenamedEnum[]; - allEnumValues?: string[]; - defaultValueFallback?: string; - }) { - if (renamedEnumValues?.find((enumVal) => enumVal?.from === value)?.to) { - return renamedEnumValues?.find((enumVal) => enumVal?.from === value)?.to; - } - - if (allEnumValues?.includes(value)) { - const isDestinationOfRename = renamedEnumValues?.some( - (enumVal) => enumVal.to === value, - ); - - if (!isDestinationOfRename) { - return value; - } - } - - if (isDefined(defaultValueFallback)) { - return defaultValueFallback; - } - - return null; - } - - private async migrateEnumValues( - queryRunner: QueryRunner, - schemaName: string, - migrationColumn: WorkspaceMigrationColumnAlter, - tableName: string, - oldColumnName: string, - enumValues: string[], - renamedEnumValues?: WorkspaceMigrationRenamedEnum[], - ) { - const columnDefinition = migrationColumn.alteredColumnDefinition; - - const values = await queryRunner.query( - `SELECT id, "${oldColumnName}" FROM "${schemaName}"."${tableName}"`, - ); - - for (const value of values) { - let val = value[oldColumnName]; - - if (/^\{.*\}$/.test(val)) { - val = serializeDefaultValue( - val - .slice(1, -1) - .split(',') - .map((v: string) => v.trim()) - .map((v: string) => - this.migrateEnumValue({ - value: v, - renamedEnumValues: renamedEnumValues, - allEnumValues: enumValues, - }), - ) - .filter((v: string | null) => isDefined(v)), - ); - } else if (typeof val === 'string') { - const migratedValue = this.migrateEnumValue({ - value: val, - renamedEnumValues: renamedEnumValues, - allEnumValues: enumValues, - defaultValueFallback: columnDefinition.isNullable - ? null - : unserializeDefaultValue(columnDefinition.defaultValue), - }); - - val = isDefined(migratedValue) ? `'${migratedValue}'` : null; - } - - await queryRunner.query(` - UPDATE "${schemaName}"."${tableName}" - SET "${columnDefinition.columnName}" = ${val} - WHERE id='${value.id}' - `); - } - } - - private async dropOldEnumType( - queryRunner: QueryRunner, - schemaName: string, - oldEnumTypeName: string, - ) { - await queryRunner.query( - `DROP TYPE IF EXISTS "${schemaName}"."${oldEnumTypeName}"`, - ); - } - - private async renameEnumType( - queryRunner: QueryRunner, - schemaName: string, - oldEnumTypeName: string, - newEnumTypeName: string, - ) { - await queryRunner.query(` - ALTER TYPE "${schemaName}"."${oldEnumTypeName}" - RENAME TO "${newEnumTypeName}" - `); - } - - private async getEnumTypeName( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - columnName: string, - ): Promise { - const [result] = await queryRunner.query( - `SELECT udt_name, data_type FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2 AND column_name = $3`, - [schemaName, tableName, columnName], - ); - - if (!result) { - throw new WorkspaceMigrationException( - `Enum type name not found for column ${columnName} in table ${tableName} while trying to alter enum`, - WorkspaceMigrationExceptionCode.ENUM_TYPE_NAME_NOT_FOUND, - ); - } - - const enumTypeName = - result.data_type === 'ARRAY' - ? result.udt_name.replace(/^_/, '') - : result.udt_name; - - return enumTypeName; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-type.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-type.service.ts deleted file mode 100644 index 26e4309945c..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-type.service.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type QueryRunner } from 'typeorm'; - -import { type WorkspaceMigrationColumnAlter } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; - -@Injectable() -export class WorkspaceMigrationTypeService { - constructor() {} - - async alterType( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - migrationColumn: WorkspaceMigrationColumnAlter, - ) { - const columnDefinition = migrationColumn.alteredColumnDefinition; - const computedColumnType = ` ${columnDefinition.columnType}${ - columnDefinition.columnType === 'timestamptz' ? `(3)` : '' - }`; - - // Update the column type - // If casting is not possible, the query will fail - await queryRunner.query(` - ALTER TABLE "${schemaName}"."${tableName}" - ALTER COLUMN "${columnDefinition.columnName}" TYPE ${computedColumnType} - USING "${columnDefinition.columnName}"::${computedColumnType} - `); - - // Update the column default value - if (columnDefinition.defaultValue) { - await queryRunner.query(` - ALTER TABLE "${schemaName}"."${tableName}" - ALTER COLUMN "${columnDefinition.columnName}" SET DEFAULT ${columnDefinition.defaultValue}::${columnDefinition.columnType}; - `); - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/types/postgres-query-runner.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/types/postgres-query-runner.type.ts deleted file mode 100644 index c28fa429e82..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/types/postgres-query-runner.type.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { type QueryRunner } from 'typeorm'; - -export type PostgresQueryRunner = QueryRunner & { - connection: QueryRunner['connection'] & { - driver: QueryRunner['connection']['driver'] & { - uuidGenerator: () => string; - }; - }; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util.spec.ts deleted file mode 100644 index 397a3270604..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util.spec.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { typeormBuildCreateColumnSql } from './typeorm-build-create-column-sql.util'; - -describe('typeormBuildCreateColumnSql', () => { - const table = { name: 'my_table' }; - - it('should generate SQL for a simple text column', () => { - const column = { - name: 'col1', - type: 'text', - isArray: false, - isNullable: false, - default: undefined, - generatedType: undefined, - asExpression: undefined, - }; - const sql = typeormBuildCreateColumnSql({ table, column }); - - expect(sql).toBe('"col1" text NOT NULL'); - }); - - it('should generate SQL for a text[] (array) column', () => { - const column = { - name: 'col2', - type: 'text', - isArray: true, - isNullable: true, - default: undefined, - generatedType: undefined, - asExpression: undefined, - }; - const sql = typeormBuildCreateColumnSql({ table, column }); - - expect(sql).toBe('"col2" text[]'); - }); - - it('should generate SQL for an enum column', () => { - const column = { - name: 'col3', - type: 'enum', - isArray: false, - isNullable: true, - default: undefined, - generatedType: undefined, - asExpression: undefined, - }; - const sql = typeormBuildCreateColumnSql({ table, column }); - - expect(sql).toBe('"col3" "my_table_col3_enum"'); - }); - - it('should generate SQL for an enum[] (array) column', () => { - const column = { - name: 'col4', - type: 'enum', - isArray: true, - isNullable: false, - default: undefined, - generatedType: undefined, - asExpression: undefined, - }; - const sql = typeormBuildCreateColumnSql({ table, column }); - - expect(sql).toBe('"col4" "my_table_col4_enum"[] NOT NULL'); - }); - - it('should include default and nullability', () => { - const column = { - name: 'col5', - type: 'text', - isArray: false, - isNullable: false, - default: "'default'", - generatedType: undefined, - asExpression: undefined, - }; - const sql = typeormBuildCreateColumnSql({ table, column }); - - expect(sql).toBe('"col5" text NOT NULL DEFAULT \'default\''); - }); - - it('should include generatedType and asExpression', () => { - const column = { - name: 'col6', - type: 'text', - isArray: false, - isNullable: true, - default: undefined, - generatedType: 'STORED' as const, - asExpression: 'lower(col6)', - }; - const sql = typeormBuildCreateColumnSql({ table, column }); - - expect(sql).toBe('"col6" text GENERATED ALWAYS AS (lower(col6)) STORED'); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util.ts deleted file mode 100644 index f2d842ecc7d..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/internal/typeorm-build-create-column-sql.util.ts +++ /dev/null @@ -1,48 +0,0 @@ -// This code is from TypeORM and is used to build the SQL for creating a column - -import { type Table, type TableColumn } from 'typeorm'; - -import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util'; - -// Do not modify: https://github.com/typeorm/typeorm/blob/master/src/driver/postgres/PostgresQueryRunner.ts#L4713 -export const typeormBuildCreateColumnSql = ({ - table, - column, -}: { - table: Pick; - column: Pick< - TableColumn, - | 'name' - | 'type' - | 'isArray' - | 'isNullable' - | 'default' - | 'generatedType' - | 'asExpression' - | 'precision' - >; -}): string => { - let columnSql = '"' + column.name + '"'; - - if (column.type === 'enum' || column.type === 'simple-enum') { - columnSql += ` "${computePostgresEnumName({ - tableName: table.name, - columnName: column.name, - })}"`; - } else { - columnSql += ' ' + column.type; - if (column.precision) columnSql += `(${column.precision})`; - } - - if (column.isArray) columnSql += '[]'; - - if (column.generatedType === 'STORED' && column.asExpression) { - columnSql += ` GENERATED ALWAYS AS (${column.asExpression}) STORED`; - } - - if (column.isNullable !== true) columnSql += ' NOT NULL'; - if (column.default !== undefined && column.default !== null) - columnSql += ' DEFAULT ' + column.default; - - return columnSql; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/table-default-column.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/table-default-column.util.ts deleted file mode 100644 index 157bb992e78..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/table-default-column.util.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { type TableColumnOptions } from 'typeorm'; - -export const tableDefaultColumns = (): TableColumnOptions[] => [ - { - name: 'id', - type: 'uuid', - isPrimary: true, - default: 'public.uuid_generate_v4()', - }, -]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module.ts deleted file mode 100644 index 9b0c0a19078..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { WorkspaceMigrationModule } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.module'; -import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { WorkspaceMigrationColumnService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service'; -import { WorkspaceMigrationEnumService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-enum.service'; -import { WorkspaceMigrationTypeService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-type.service'; - -import { WorkspaceMigrationRunnerService } from './workspace-migration-runner.service'; - -@Module({ - imports: [WorkspaceDataSourceModule, WorkspaceMigrationModule], - providers: [ - WorkspaceMigrationRunnerService, - WorkspaceMigrationEnumService, - WorkspaceMigrationTypeService, - WorkspaceMigrationColumnService, - ], - exports: [WorkspaceMigrationRunnerService], -}) -export class WorkspaceMigrationRunnerModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts deleted file mode 100644 index d11912680fe..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service.ts +++ /dev/null @@ -1,415 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { InjectDataSource } from '@nestjs/typeorm'; - -import { msg } from '@lingui/core/macro'; -import { isDefined } from 'twenty-shared/utils'; -import { DataSource, type QueryRunner, Table, type TableColumn } from 'typeorm'; - -import { - IndexMetadataException, - IndexMetadataExceptionCode, -} from 'src/engine/metadata-modules/index-metadata/index-field-metadata.exception'; -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { - type WorkspaceMigrationColumnAction, - WorkspaceMigrationColumnActionType, - type WorkspaceMigrationColumnCreate, - type WorkspaceMigrationForeignTable, - type WorkspaceMigrationIndexAction, - WorkspaceMigrationIndexActionType, - type WorkspaceMigrationTableAction, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationService } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.service'; -import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; -import { WorkspaceMigrationColumnService } from 'src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service'; -import { type PostgresQueryRunner } from 'src/engine/workspace-manager/workspace-migration-runner/types/postgres-query-runner.type'; -import { tableDefaultColumns } from 'src/engine/workspace-manager/workspace-migration-runner/utils/table-default-column.util'; - -export const RELATION_MIGRATION_PRIORITY_PREFIX = '1000'; - -@Injectable() -export class WorkspaceMigrationRunnerService { - private readonly logger = new Logger(WorkspaceMigrationRunnerService.name); - - constructor( - @InjectDataSource() - private readonly coreDataSource: DataSource, - private readonly workspaceMigrationService: WorkspaceMigrationService, - private readonly workspaceMigrationColumnService: WorkspaceMigrationColumnService, - ) {} - - public async executeMigrationFromPendingMigrationsWithinTransaction( - workspaceId: string, - transactionQueryRunner: QueryRunner, - ): Promise { - const pendingMigrations = - await this.workspaceMigrationService.getPendingMigrations( - workspaceId, - transactionQueryRunner, - ); - - if (pendingMigrations.length === 0) { - return []; - } - - const migrationActionsWithParent = pendingMigrations.flatMap( - (pendingMigration) => - (pendingMigration.migrations || []).map((tableAction) => ({ - tableAction, - parentMigrationId: pendingMigration.id, - })), - ); - - const schemaName = getWorkspaceSchemaName(workspaceId); - - await transactionQueryRunner.query( - `SET LOCAL search_path TO ${schemaName}`, - ); - - // temporary fix to skip view migrations issue during upgrade 1.8 -> 1.10 - const migrationActionsWithParentTmp = [ - ...migrationActionsWithParent.filter( - ({ tableAction }) => tableAction.name !== 'view', - ), - ...migrationActionsWithParent.filter( - ({ tableAction }) => tableAction.name === 'view', - ), - ]; - - for (const { - tableAction, - parentMigrationId, - } of migrationActionsWithParentTmp) { - await this.handleTableChanges( - transactionQueryRunner as PostgresQueryRunner, - schemaName, - tableAction, - ); - - await transactionQueryRunner.query( - `UPDATE "core"."workspaceMigration" SET "appliedAt" = NOW() WHERE "id" = $1 AND "workspaceId" = $2`, - [parentMigrationId, workspaceId], - ); - } - - return migrationActionsWithParentTmp.map((item) => item.tableAction); - } - - public async executeMigrationFromPendingMigrations( - workspaceId: string, - ): Promise { - const queryRunner = this.coreDataSource.createQueryRunner(); - - await queryRunner.connect(); - await queryRunner.startTransaction(); - - try { - const result = - await this.executeMigrationFromPendingMigrationsWithinTransaction( - workspaceId, - queryRunner, - ); - - await queryRunner.commitTransaction(); - - return result; - } catch (error) { - this.logger.error( - `Error executing migration: ${error.message}`, - error.stack, - ); - if (queryRunner.isTransactionActive) { - try { - await queryRunner.rollbackTransaction(); - } catch (error) { - // eslint-disable-next-line no-console - console.trace(`Failed to rollback transaction: ${error.message}`); - } - } - throw error; - } finally { - await queryRunner.release(); - } - } - - private async handleTableChanges( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableMigration: WorkspaceMigrationTableAction, - ) { - switch (tableMigration.action) { - case WorkspaceMigrationTableActionType.CREATE: - await this.createTable( - queryRunner, - schemaName, - tableMigration.name, - tableMigration.columns, - ); - break; - case WorkspaceMigrationTableActionType.ALTER: { - if (tableMigration.newName) { - await this.renameTable( - queryRunner, - schemaName, - tableMigration.name, - tableMigration.newName, - ); - - break; - } - - if (tableMigration.columns && tableMigration.columns.length > 0) { - await this.workspaceMigrationColumnService.handleColumnChanges( - queryRunner, - schemaName, - tableMigration.newName ?? tableMigration.name, - tableMigration.columns, - ); - - break; - } - - break; - } - case WorkspaceMigrationTableActionType.DROP: - await queryRunner.dropTable(`${schemaName}.${tableMigration.name}`); - break; - case 'create_foreign_table': - await this.createForeignTable( - queryRunner, - schemaName, - tableMigration.name, - tableMigration?.foreignTable, - ); - break; - case 'drop_foreign_table': - await queryRunner.query( - `DROP FOREIGN TABLE ${schemaName}."${tableMigration.name}"`, - ); - break; - case WorkspaceMigrationTableActionType.ALTER_FOREIGN_TABLE: - await this.alterForeignTable( - queryRunner, - schemaName, - tableMigration.name, - tableMigration.columns, - ); - break; - - case WorkspaceMigrationTableActionType.ALTER_INDEXES: - if (tableMigration.indexes && tableMigration.indexes.length > 0) { - const tableName = tableMigration.newName ?? tableMigration.name; - - await this.handleIndexesChanges( - queryRunner, - schemaName, - tableName, - tableMigration.indexes, - ); - } - break; - default: - throw new Error( - `Migration table action ${tableMigration.action} not supported`, - ); - } - } - - private async handleIndexesChanges( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - indexes: WorkspaceMigrationIndexAction[], - ) { - for (const index of indexes) { - switch (index.action) { - case WorkspaceMigrationIndexActionType.CREATE: - await this.createIndex(queryRunner, schemaName, tableName, index); - break; - case WorkspaceMigrationIndexActionType.DROP: - await this.dropIndex(queryRunner, schemaName, tableName, index.name); - break; - default: - throw new Error(`Migration index action not supported`); - } - } - } - - private async createIndex( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - index: WorkspaceMigrationIndexAction, - ) { - try { - if (isDefined(index.type) && index.type !== IndexType.BTREE) { - const quotedColumns = index.columns.map((column) => `"${column}"`); - - await queryRunner.query(` - CREATE INDEX IF NOT EXISTS "${index.name}" ON "${schemaName}"."${tableName}" USING ${index.type} (${quotedColumns.join(', ')}) - `); - } else { - const quotedColumns = index.columns.map((column) => `"${column}"`); - const isUnique = index.isUnique ? 'UNIQUE' : ''; - const whereClause = index.where ? `WHERE ${index.where}` : ''; - - await queryRunner.query(` - CREATE ${isUnique} INDEX IF NOT EXISTS "${index.name}" ON "${schemaName}"."${tableName}" (${quotedColumns.join(', ')}) ${whereClause} - `); - } - } catch (error) { - // Ignore error if index already exists - if (error.code === '42P07') { - return; - } - - if (error.code === '23505') { - throw new IndexMetadataException( - `Unique index creation failed because of unique constraint violation`, - IndexMetadataExceptionCode.INDEX_CREATION_FAILED, - { - userFriendlyMessage: msg`Cannot enable uniqueness due to existing duplicate values. Please review and fix your data first (including soft deleted records).`, - }, - ); - } - - throw error; - } - } - - private async dropIndex( - queryRunner: QueryRunner, - schemaName: string, - tableName: string, - indexName: string, - ) { - try { - await queryRunner.dropIndex(`${schemaName}.${tableName}`, indexName); - } catch (error) { - // Ignore error if index does not exist - if ( - error.message === - `Supplied index ${indexName} was not found in table ${schemaName}.${tableName}` - ) { - return; - } - throw error; - } - } - - private async createTable( - queryRunner: PostgresQueryRunner, - schemaName: string, - tableName: string, - columns?: WorkspaceMigrationColumnAction[], - ) { - const tableColumns: TableColumn[] = []; - - if (columns && columns.length > 0) { - const createColumns = columns.filter( - (column) => column.action === WorkspaceMigrationColumnActionType.CREATE, - ) as WorkspaceMigrationColumnCreate[]; - - for (const column of createColumns) { - tableColumns.push( - this.workspaceMigrationColumnService.createTableColumnFromMigration( - tableName, - column, - ), - ); - } - } - - await queryRunner.createTable( - new Table({ - name: tableName, - schema: schemaName, - columns: tableColumns.length > 0 ? tableColumns : tableDefaultColumns(), - }), - true, - ); - - if (columns && columns.length > 0) { - const nonCreateColumns = columns.filter( - (column) => column.action !== WorkspaceMigrationColumnActionType.CREATE, - ); - - if (nonCreateColumns.length > 0) { - await this.workspaceMigrationColumnService.handleColumnChanges( - queryRunner, - schemaName, - tableName, - nonCreateColumns, - ); - } - } - } - - private async renameTable( - queryRunner: QueryRunner, - schemaName: string, - oldTableName: string, - newTableName: string, - ) { - await queryRunner.renameTable( - `${schemaName}.${oldTableName}`, - newTableName, - ); - } - - private async createForeignTable( - queryRunner: QueryRunner, - schemaName: string, - name: string, - foreignTable: WorkspaceMigrationForeignTable | undefined, - ) { - if (!foreignTable) { - return; - } - - const foreignTableColumns = foreignTable.columns - .map( - (column) => - `"${column.columnName}" ${column.columnType} OPTIONS (column_name '${column.distantColumnName}')`, - ) - .join(', '); - - const serverOptions = Object.entries(foreignTable.referencedTable) - .map(([key, value]) => `${key} '${value}'`) - .join(', '); - - await queryRunner.query( - `CREATE FOREIGN TABLE ${schemaName}."${name}" (${foreignTableColumns}) SERVER "${foreignTable.foreignDataWrapperId}" OPTIONS (${serverOptions})`, - ); - - await queryRunner.query(` - COMMENT ON FOREIGN TABLE "${schemaName}"."${name}" IS '@graphql({"primary_key_columns": ["id"], "totalCount": {"enabled": true}})'; - `); - } - - private async alterForeignTable( - queryRunner: QueryRunner, - schemaName: string, - name: string, - columns: WorkspaceMigrationColumnAction[] | undefined, - ) { - const columnUpdatesQuery = columns - ?.map((column) => { - switch (column.action) { - case WorkspaceMigrationColumnActionType.DROP: - return `DROP COLUMN "${column.columnName}"`; - case WorkspaceMigrationColumnActionType.CREATE: - return `ADD COLUMN "${column.columnName}" ${column.columnType}`; - default: - return ''; - } - }) - .filter(Boolean) - .join(', '); - - await queryRunner.query( - `ALTER FOREIGN TABLE ${schemaName}."${name}" ${columnUpdatesQuery};`, - ); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts deleted file mode 100644 index 20aec2e2784..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service'; -import { WorkspaceMigrationV2AgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-actions-builder.service'; -import { WorkspaceMigrationV2SkillActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/workspace-migration-v2-skill-actions-builder.service'; -import { WorkspaceMigrationV2CronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service'; -import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service'; -import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service'; -import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service'; -import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service'; -import { WorkspaceMigrationV2PageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service'; -import { WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service'; -import { WorkspaceMigrationV2PageLayoutActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service'; -import { WorkspaceMigrationV2RoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service'; -import { WorkspaceMigrationV2RoleActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service'; -import { WorkspaceMigrationV2RouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service'; -import { WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/workspace-migration-v2-row-level-permission-predicate-group-actions-builder.service'; -import { WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/workspace-migration-v2-row-level-permission-predicate-actions-builder.service'; -import { WorkspaceMigrationV2ServerlessFunctionActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service'; -import { WorkspaceMigrationV2ViewFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service'; -import { WorkspaceMigrationV2ViewFilterActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/workspace-migration-v2-view-filter-actions-builder.service'; -import { WorkspaceMigrationV2ViewFilterGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/workspace-migration-v2-view-filter-group-actions-builder.service'; -import { WorkspaceMigrationV2ViewGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/workspace-migration-v2-view-group-actions-builder.service'; -import { WorkspaceMigrationV2ViewActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service'; -import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module'; - -@Module({ - imports: [FeatureFlagModule, WorkspaceMigrationBuilderValidatorsModule], - providers: [ - FlatFieldMetadataTypeValidatorService, - WorkspaceMigrationV2ObjectActionsBuilderService, - WorkspaceMigrationV2ViewActionsBuilderService, - WorkspaceMigrationV2ViewFieldActionsBuilderService, - WorkspaceMigrationV2ViewFilterActionsBuilderService, - WorkspaceMigrationV2ViewFilterGroupActionsBuilderService, - WorkspaceMigrationV2ViewGroupActionsBuilderService, - WorkspaceMigrationV2IndexActionsBuilderService, - WorkspaceMigrationV2ServerlessFunctionActionsBuilderService, - WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService, - WorkspaceMigrationV2FieldActionsBuilderService, - WorkspaceMigrationV2CronTriggerActionsBuilderService, - WorkspaceMigrationV2RouteTriggerActionsBuilderService, - WorkspaceMigrationV2RoleActionsBuilderService, - WorkspaceMigrationV2RoleTargetActionsBuilderService, - WorkspaceMigrationV2AgentActionsBuilderService, - WorkspaceMigrationV2SkillActionsBuilderService, - WorkspaceMigrationV2PageLayoutActionsBuilderService, - WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, - WorkspaceMigrationV2PageLayoutTabActionsBuilderService, - WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService, - WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService, - ], - exports: [ - WorkspaceMigrationV2ViewActionsBuilderService, - WorkspaceMigrationV2IndexActionsBuilderService, - WorkspaceMigrationV2ObjectActionsBuilderService, - WorkspaceMigrationV2ViewFieldActionsBuilderService, - WorkspaceMigrationV2ViewFilterActionsBuilderService, - WorkspaceMigrationV2ViewFilterGroupActionsBuilderService, - WorkspaceMigrationV2ViewGroupActionsBuilderService, - WorkspaceMigrationV2FieldActionsBuilderService, - WorkspaceMigrationV2ServerlessFunctionActionsBuilderService, - WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService, - WorkspaceMigrationV2CronTriggerActionsBuilderService, - WorkspaceMigrationV2RouteTriggerActionsBuilderService, - WorkspaceMigrationV2RoleActionsBuilderService, - WorkspaceMigrationV2RoleTargetActionsBuilderService, - WorkspaceMigrationV2AgentActionsBuilderService, - WorkspaceMigrationV2SkillActionsBuilderService, - WorkspaceMigrationV2PageLayoutActionsBuilderService, - WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, - WorkspaceMigrationV2PageLayoutTabActionsBuilderService, - WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService, - WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService, - FlatFieldMetadataTypeValidatorService, - ], -}) -export class WorkspaceMigrationBuilderV2Module {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts deleted file mode 100644 index 2e55ea5c242..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { WorkspaceSchemaManagerModule } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.module'; -import { CreateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/create-agent-action-handler.service'; -import { DeleteAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/delete-agent-action-handler.service'; -import { UpdateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/update-agent-action-handler.service'; -import { CreateSkillActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/create-skill-action-handler.service'; -import { DeleteSkillActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/delete-skill-action-handler.service'; -import { UpdateSkillActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/update-skill-action-handler.service'; -import { CreateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service'; -import { DeleteCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service'; -import { UpdateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service'; -import { CreateDatabaseEventTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service'; -import { DeleteDatabaseEventTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service'; -import { UpdateDatabaseEventTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service'; -import { CreateFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/create-field-action-handler.service'; -import { DeleteFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/delete-field-action-handler.service'; -import { UpdateFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service'; -import { CreateIndexActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service'; -import { DeleteIndexActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/delete-index-action-handler.service'; -import { UpdateIndexActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/update-index-action-handler.service'; -import { CreateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/create-object-action-handler.service'; -import { DeleteObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/delete-object-action-handler.service'; -import { UpdateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/update-object-action-handler.service'; -import { CreatePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service'; -import { DeletePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service'; -import { UpdatePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service'; -import { CreatePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service'; -import { DeletePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service'; -import { UpdatePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service'; -import { CreatePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service'; -import { DeletePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service'; -import { UpdatePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service'; -import { CreateRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/create-role-target-action-handler.service'; -import { DeleteRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/delete-role-target-action-handler.service'; -import { UpdateRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/update-role-target-action-handler.service'; -import { CreateRoleActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/create-role-action-handler.service'; -import { DeleteRoleActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/delete-role-action-handler.service'; -import { UpdateRoleActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/update-role-action-handler.service'; -import { CreateRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/create-route-trigger-action-handler.service'; -import { DeleteRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service'; -import { UpdateRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/update-route-trigger-action-handler.service'; -import { CreateRowLevelPermissionPredicateGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service'; -import { DeleteRowLevelPermissionPredicateGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service'; -import { UpdateRowLevelPermissionPredicateGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service'; -import { CreateRowLevelPermissionPredicateActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service'; -import { DeleteRowLevelPermissionPredicateActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service'; -import { UpdateRowLevelPermissionPredicateActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service'; -import { CreateServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/create-serverless-function-action-handler.service'; -import { DeleteServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service'; -import { UpdateServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/update-serverless-function-action-handler.service'; -import { CreateViewFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/create-view-field-action-handler.service'; -import { DeleteViewFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/delete-view-field-action-handler.service'; -import { UpdateViewFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-field/services/update-view-field-action-handler.service'; -import { CreateViewFilterActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/create-view-filter-action-handler.service'; -import { DeleteViewFilterActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/delete-view-filter-action-handler.service'; -import { UpdateViewFilterActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/update-view-filter-action-handler.service'; -import { CreateViewFilterGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service'; -import { DeleteViewFilterGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service'; -import { UpdateViewFilterGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service'; -import { CreateViewGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/create-view-group-action-handler.service'; -import { DeleteViewGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/delete-view-group-action-handler.service'; -import { UpdateViewGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/update-view-group-action-handler.service'; -import { CreateViewActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/create-view-action-handler.service'; -import { DeleteViewActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/delete-view-action-handler.service'; -import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/update-view-action-handler.service'; - -@Module({ - imports: [WorkspaceSchemaManagerModule], - providers: [ - CreateFieldActionHandlerService, - UpdateFieldActionHandlerService, - DeleteFieldActionHandlerService, - - CreateObjectActionHandlerService, - UpdateObjectActionHandlerService, - DeleteObjectActionHandlerService, - - CreateIndexActionHandlerService, - UpdateIndexActionHandlerService, - DeleteIndexActionHandlerService, - - CreateViewActionHandlerService, - UpdateViewActionHandlerService, - DeleteViewActionHandlerService, - - CreateViewFieldActionHandlerService, - UpdateViewFieldActionHandlerService, - DeleteViewFieldActionHandlerService, - - CreateViewFilterActionHandlerService, - UpdateViewFilterActionHandlerService, - DeleteViewFilterActionHandlerService, - - CreateViewFilterGroupActionHandlerService, - UpdateViewFilterGroupActionHandlerService, - DeleteViewFilterGroupActionHandlerService, - - CreateViewGroupActionHandlerService, - UpdateViewGroupActionHandlerService, - DeleteViewGroupActionHandlerService, - - CreateServerlessFunctionActionHandlerService, - DeleteServerlessFunctionActionHandlerService, - UpdateServerlessFunctionActionHandlerService, - - CreateDatabaseEventTriggerActionHandlerService, - DeleteDatabaseEventTriggerActionHandlerService, - UpdateDatabaseEventTriggerActionHandlerService, - - CreateCronTriggerActionHandlerService, - DeleteCronTriggerActionHandlerService, - UpdateCronTriggerActionHandlerService, - - CreateRouteTriggerActionHandlerService, - DeleteRouteTriggerActionHandlerService, - UpdateRouteTriggerActionHandlerService, - - CreateRoleActionHandlerService, - UpdateRoleActionHandlerService, - DeleteRoleActionHandlerService, - - CreateRoleTargetActionHandlerService, - DeleteRoleTargetActionHandlerService, - UpdateRoleTargetActionHandlerService, - - CreateAgentActionHandlerService, - UpdateAgentActionHandlerService, - DeleteAgentActionHandlerService, - - CreateSkillActionHandlerService, - UpdateSkillActionHandlerService, - DeleteSkillActionHandlerService, - - CreatePageLayoutActionHandlerService, - UpdatePageLayoutActionHandlerService, - DeletePageLayoutActionHandlerService, - - CreatePageLayoutWidgetActionHandlerService, - UpdatePageLayoutWidgetActionHandlerService, - DeletePageLayoutWidgetActionHandlerService, - - CreatePageLayoutTabActionHandlerService, - UpdatePageLayoutTabActionHandlerService, - DeletePageLayoutTabActionHandlerService, - - CreateRowLevelPermissionPredicateActionHandlerService, - UpdateRowLevelPermissionPredicateActionHandlerService, - DeleteRowLevelPermissionPredicateActionHandlerService, - - CreateRowLevelPermissionPredicateGroupActionHandlerService, - UpdateRowLevelPermissionPredicateGroupActionHandlerService, - DeleteRowLevelPermissionPredicateGroupActionHandlerService, - ], -}) -export class WorkspaceSchemaMigrationRunnerActionHandlersModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module.ts deleted file mode 100644 index e16ca23c6a4..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-v2.module.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; -import { WorkspaceMigrationBuildOrchestratorService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service'; -import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service'; -import { WorkspaceMigrationBuilderV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.module'; -import { WorkspaceMigrationRunnerV2Module } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/workspace-migration-runner-v2.module'; - -@Module({ - imports: [ - WorkspaceMigrationBuilderV2Module, - WorkspaceMigrationRunnerV2Module, - WorkspaceCacheModule, - ], - providers: [ - WorkspaceMigrationValidateBuildAndRunService, - WorkspaceMigrationBuildOrchestratorService, - ], - exports: [ - WorkspaceMigrationValidateBuildAndRunService, - WorkspaceMigrationBuildOrchestratorService, - ], -}) -export class WorkspaceMigrationV2Module {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/default-feature-flags.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/default-feature-flags.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/default-feature-flags.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/default-feature-flags.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant.ts index 41e1dfcf123..fa3502385d9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant.ts @@ -1,7 +1,7 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { getMetadataEmptyWorkspaceMigrationActionRecord } from 'src/engine/workspace-manager/workspace-migration-v2/utils/get-metadata-empty-workspace-migration-action-record.util'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { getMetadataEmptyWorkspaceMigrationActionRecord } from 'src/engine/workspace-manager/workspace-migration/utils/get-metadata-empty-workspace-migration-action-record.util'; export const createEmptyOrchestratorActionsReport = (): OrchestratorActionsReport => diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-failure-report.constant.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-failure-report.constant.ts similarity index 85% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-failure-report.constant.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-failure-report.constant.ts index 748e3a3f632..7e9f647c5d4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-failure-report.constant.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-failure-report.constant.ts @@ -1,6 +1,6 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { type OrchestratorFailureReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; +import { type OrchestratorFailureReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; export const EMPTY_ORCHESTRATOR_FAILURE_REPORT = (): OrchestratorFailureReport => diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-agent-ids.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-agent-ids.ts new file mode 100644 index 00000000000..5f1095fd71a --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-agent-ids.ts @@ -0,0 +1,3 @@ +export const HELPER_AGENT = { + standardId: '20202020-0002-0001-0001-000000000004', +} as const; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-field-ids.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-field-ids.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-object-icons.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/standard-object-icons.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/workspace-migration-additional-cache-data-maps-key.constant.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/workspace-migration-additional-cache-data-maps-key.constant.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/constant/workspace-migration-additional-cache-data-maps-key.constant.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/constant/workspace-migration-additional-cache-data-maps-key.constant.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception.ts index 625ca7b2ae5..e1639cb1a8e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception.ts @@ -1,11 +1,11 @@ -import { type WorkspaceMigrationOrchestratorFailedResult } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; +import { type WorkspaceMigrationOrchestratorFailedResult } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; -export class WorkspaceMigrationBuilderExceptionV2 extends Error { +export class WorkspaceMigrationBuilderException extends Error { constructor( public readonly failedWorkspaceMigrationBuildResult: WorkspaceMigrationOrchestratorFailedResult, message = 'Workspace migration builder failed', ) { super(message); - this.name = 'WorkspaceMigrationBuilderExceptionV2'; + this.name = 'WorkspaceMigrationBuilderException'; } } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts similarity index 82% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts index 30461dc5c38..17b608abe3b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util.ts @@ -1,12 +1,12 @@ import { type I18n } from '@lingui/core'; import { type MetadataValidationErrorResponse } from 'twenty-shared/metadata'; -import { type WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { translateOrchestratorFailureReportErrors } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/translate-orchestrator-failure-report-errors.util'; +import { type WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { translateOrchestratorFailureReportErrors } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/translate-orchestrator-failure-report-errors.util'; export const fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError = ( - workspaceMigrationBuilderException: WorkspaceMigrationBuilderExceptionV2, + workspaceMigrationBuilderException: WorkspaceMigrationBuilderException, i18n: I18n, ): MetadataValidationErrorResponse => { const translatedReport = translateOrchestratorFailureReportErrors( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/translate-orchestrator-failure-report-errors.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/utils/translate-orchestrator-failure-report-errors.util.ts similarity index 88% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/translate-orchestrator-failure-report-errors.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/utils/translate-orchestrator-failure-report-errors.util.ts index b078a49e7d2..7d82c575181 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/translate-orchestrator-failure-report-errors.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/utils/translate-orchestrator-failure-report-errors.util.ts @@ -1,8 +1,8 @@ import { type I18n, type MessageDescriptor } from '@lingui/core'; import { isDefined } from 'twenty-shared/utils'; -import { type OrchestratorFailureReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type OrchestratorFailureReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; const isMessageDescriptor = (obj: unknown): obj is MessageDescriptor => isDefined(obj) && diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-exception-v2-formatter.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-exception-formatter.ts similarity index 74% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-exception-v2-formatter.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-exception-formatter.ts index 77256ccd936..fdd16fb5948 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-exception-v2-formatter.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-exception-formatter.ts @@ -1,17 +1,17 @@ import { type I18n } from '@lingui/core'; import { msg } from '@lingui/core/macro'; -import { isDefined } from 'twenty-shared/utils'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; +import { isDefined } from 'twenty-shared/utils'; import { BaseGraphQLError, ErrorCode, } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; -import { type WorkspaceMigrationBuilderExceptionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/exceptions/workspace-migration-builder-exception-v2'; -import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration-v2/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; +import { type WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { fromWorkspaceMigrationBuilderExceptionToMetadataValidationResponseError } from 'src/engine/workspace-manager/workspace-migration/interceptors/utils/from-workspace-migration-builder-exception-to-metadata-validation-response-error.util'; -export const workspaceMigrationBuilderExceptionV2Formatter = ( - error: WorkspaceMigrationBuilderExceptionV2, +export const workspaceMigrationBuilderExceptionFormatter = ( + error: WorkspaceMigrationBuilderException, i18n: I18n, ) => { const { errors, summary } = diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor.ts similarity index 66% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor.ts index 7943316c864..fc8f16a2db8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/interceptors/workspace-migration-builder-graphql-api-exception.interceptor.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-graphql-api-exception.interceptor.ts @@ -10,8 +10,8 @@ import { type Observable, catchError } from 'rxjs'; import { SOURCE_LOCALE } from 'twenty-shared/translations'; import { I18nService } from 'src/engine/core-modules/i18n/i18n.service'; -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'; +import { WorkspaceMigrationBuilderException } from 'src/engine/workspace-manager/workspace-migration/exceptions/workspace-migration-builder-exception'; +import { workspaceMigrationBuilderExceptionFormatter } from 'src/engine/workspace-manager/workspace-migration/interceptors/workspace-migration-builder-exception-formatter'; @Injectable() export class WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor @@ -27,8 +27,8 @@ export class WorkspaceMigrationBuilderGraphqlApiExceptionInterceptor return next.handle().pipe( catchError((error) => { - if (error instanceof WorkspaceMigrationBuilderExceptionV2) { - workspaceMigrationBuilderExceptionV2Formatter(error, i18n); + if (error instanceof WorkspaceMigrationBuilderException) { + workspaceMigrationBuilderExceptionFormatter(error, i18n); } throw error; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/services/workspace-migration-build-orchestrator.service.ts similarity index 78% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/services/workspace-migration-build-orchestrator.service.ts index ec0c24ec97b..e589a472540 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/services/workspace-migration-build-orchestrator.service.ts @@ -6,60 +6,60 @@ import { isDefined } from 'twenty-shared/utils'; import { createEmptyAllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-all-flat-entity-maps.constant'; import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; import { type MetadataFlatEntityAndRelatedFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-related-types.type'; -import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant'; -import { EMPTY_ORCHESTRATOR_FAILURE_REPORT } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-failure-report.constant'; +import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant'; +import { EMPTY_ORCHESTRATOR_FAILURE_REPORT } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-failure-report.constant'; import { type WorkspaceMigrationOrchestratorBuildArgs, type WorkspaceMigrationOrchestratorFailedResult, type WorkspaceMigrationOrchestratorSuccessfulResult, -} from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { aggregateOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report.util'; -import { WorkspaceMigrationV2AgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-actions-builder.service'; -import { WorkspaceMigrationV2CronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service'; -import { WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service'; -import { WorkspaceMigrationV2FieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service'; -import { WorkspaceMigrationV2IndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service'; -import { WorkspaceMigrationV2ObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service'; -import { WorkspaceMigrationV2PageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service'; -import { WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service'; -import { WorkspaceMigrationV2PageLayoutActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service'; -import { WorkspaceMigrationV2RoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service'; -import { WorkspaceMigrationV2RoleActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service'; -import { WorkspaceMigrationV2RouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service'; -import { WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/workspace-migration-v2-row-level-permission-predicate-group-actions-builder.service'; -import { WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/workspace-migration-v2-row-level-permission-predicate-actions-builder.service'; -import { WorkspaceMigrationV2ServerlessFunctionActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service'; -import { WorkspaceMigrationV2SkillActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/workspace-migration-v2-skill-actions-builder.service'; -import { WorkspaceMigrationV2ViewFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/workspace-migration-v2-view-field-actions-builder.service'; -import { WorkspaceMigrationV2ViewFilterGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/workspace-migration-v2-view-filter-group-actions-builder.service'; -import { WorkspaceMigrationV2ViewFilterActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/workspace-migration-v2-view-filter-actions-builder.service'; -import { WorkspaceMigrationV2ViewGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/workspace-migration-v2-view-group-actions-builder.service'; -import { WorkspaceMigrationV2ViewActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service'; +} from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { aggregateOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report.util'; +import { WorkspaceMigrationAgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service'; +import { WorkspaceMigrationCronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service'; +import { WorkspaceMigrationDatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service'; +import { WorkspaceMigrationFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service'; +import { WorkspaceMigrationIndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/workspace-migration-index-actions-builder.service'; +import { WorkspaceMigrationObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/workspace-migration-object-actions-builder.service'; +import { WorkspaceMigrationPageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/workspace-migration-page-layout-tab-actions-builder.service'; +import { WorkspaceMigrationPageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/workspace-migration-page-layout-widget-actions-builder.service'; +import { WorkspaceMigrationPageLayoutActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/workspace-migration-page-layout-actions-builder.service'; +import { WorkspaceMigrationRoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/workspace-migration-role-target-actions-builder.service'; +import { WorkspaceMigrationRoleActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/workspace-migration-role-actions-builder.service'; +import { WorkspaceMigrationRouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/workspace-migration-route-trigger-actions-builder.service'; +import { WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/workspace-migration-row-level-permission-predicate-group-actions-builder.service'; +import { WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/workspace-migration-row-level-permission-predicate-actions-builder.service'; +import { WorkspaceMigrationServerlessFunctionActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/workspace-migration-serverless-function-actions-builder.service'; +import { WorkspaceMigrationSkillActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/workspace-migration-skill-actions-builder.service'; +import { WorkspaceMigrationViewFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/workspace-migration-view-field-actions-builder.service'; +import { WorkspaceMigrationViewFilterGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/workspace-migration-view-filter-group-actions-builder.service'; +import { WorkspaceMigrationViewFilterActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/workspace-migration-view-filter-actions-builder.service'; +import { WorkspaceMigrationViewGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/workspace-migration-view-group-actions-builder.service'; +import { WorkspaceMigrationViewActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/workspace-migration-view-actions-builder.service'; @Injectable() export class WorkspaceMigrationBuildOrchestratorService { constructor( - private readonly workspaceMigrationV2ObjectActionsBuilderService: WorkspaceMigrationV2ObjectActionsBuilderService, - private readonly workspaceMigrationV2IndexActionsBuilderService: WorkspaceMigrationV2IndexActionsBuilderService, - private readonly workspaceMigrationV2ViewActionsBuilderService: WorkspaceMigrationV2ViewActionsBuilderService, - private readonly workspaceMigrationV2ViewFieldActionsBuilderService: WorkspaceMigrationV2ViewFieldActionsBuilderService, - private readonly workspaceMigrationV2ViewFilterActionsBuilderService: WorkspaceMigrationV2ViewFilterActionsBuilderService, - private readonly workspaceMigrationV2ViewFilterGroupActionsBuilderService: WorkspaceMigrationV2ViewFilterGroupActionsBuilderService, - private readonly workspaceMigrationV2ViewGroupActionsBuilderService: WorkspaceMigrationV2ViewGroupActionsBuilderService, - private readonly workspaceMigrationV2ServerlessFunctionActionsBuilderService: WorkspaceMigrationV2ServerlessFunctionActionsBuilderService, - private readonly workspaceMigrationV2DatabaseEventTriggerActionsBuilderService: WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService, - private readonly workspaceMigrationV2CronTriggerActionsBuilderService: WorkspaceMigrationV2CronTriggerActionsBuilderService, - private readonly workspaceMigrationV2RouteTriggerActionsBuilderService: WorkspaceMigrationV2RouteTriggerActionsBuilderService, - private readonly workspaceMigrationV2RoleTargetActionsBuilderService: WorkspaceMigrationV2RoleTargetActionsBuilderService, - private readonly workspaceMigrationV2FieldActionsBuilderService: WorkspaceMigrationV2FieldActionsBuilderService, - private readonly workspaceMigrationV2RoleActionsBuilderService: WorkspaceMigrationV2RoleActionsBuilderService, - private readonly workspaceMigrationV2AgentActionsBuilderService: WorkspaceMigrationV2AgentActionsBuilderService, - private readonly workspaceMigrationV2SkillActionsBuilderService: WorkspaceMigrationV2SkillActionsBuilderService, - private readonly workspaceMigrationV2PageLayoutActionsBuilderService: WorkspaceMigrationV2PageLayoutActionsBuilderService, - private readonly workspaceMigrationV2PageLayoutWidgetActionsBuilderService: WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService, - private readonly workspaceMigrationV2PageLayoutTabActionsBuilderService: WorkspaceMigrationV2PageLayoutTabActionsBuilderService, - private readonly workspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService: WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService, - private readonly workspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService: WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService, + private readonly workspaceMigrationObjectActionsBuilderService: WorkspaceMigrationObjectActionsBuilderService, + private readonly workspaceMigrationIndexActionsBuilderService: WorkspaceMigrationIndexActionsBuilderService, + private readonly workspaceMigrationViewActionsBuilderService: WorkspaceMigrationViewActionsBuilderService, + private readonly workspaceMigrationViewFieldActionsBuilderService: WorkspaceMigrationViewFieldActionsBuilderService, + private readonly workspaceMigrationViewFilterActionsBuilderService: WorkspaceMigrationViewFilterActionsBuilderService, + private readonly workspaceMigrationViewFilterGroupActionsBuilderService: WorkspaceMigrationViewFilterGroupActionsBuilderService, + private readonly workspaceMigrationViewGroupActionsBuilderService: WorkspaceMigrationViewGroupActionsBuilderService, + private readonly workspaceMigrationServerlessFunctionActionsBuilderService: WorkspaceMigrationServerlessFunctionActionsBuilderService, + private readonly workspaceMigrationDatabaseEventTriggerActionsBuilderService: WorkspaceMigrationDatabaseEventTriggerActionsBuilderService, + private readonly workspaceMigrationCronTriggerActionsBuilderService: WorkspaceMigrationCronTriggerActionsBuilderService, + private readonly workspaceMigrationRouteTriggerActionsBuilderService: WorkspaceMigrationRouteTriggerActionsBuilderService, + private readonly workspaceMigrationRoleTargetActionsBuilderService: WorkspaceMigrationRoleTargetActionsBuilderService, + private readonly workspaceMigrationFieldActionsBuilderService: WorkspaceMigrationFieldActionsBuilderService, + private readonly workspaceMigrationRoleActionsBuilderService: WorkspaceMigrationRoleActionsBuilderService, + private readonly workspaceMigrationAgentActionsBuilderService: WorkspaceMigrationAgentActionsBuilderService, + private readonly workspaceMigrationSkillActionsBuilderService: WorkspaceMigrationSkillActionsBuilderService, + private readonly workspaceMigrationPageLayoutActionsBuilderService: WorkspaceMigrationPageLayoutActionsBuilderService, + private readonly workspaceMigrationPageLayoutWidgetActionsBuilderService: WorkspaceMigrationPageLayoutWidgetActionsBuilderService, + private readonly workspaceMigrationPageLayoutTabActionsBuilderService: WorkspaceMigrationPageLayoutTabActionsBuilderService, + private readonly workspaceMigrationRowLevelPermissionPredicateActionsBuilderService: WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService, + private readonly workspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService: WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService, ) {} private setupOptimisticCache({ @@ -166,7 +166,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatObjectMetadataMaps; const objectResult = - await this.workspaceMigrationV2ObjectActionsBuilderService.validateAndBuild( + await this.workspaceMigrationObjectActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, buildOptions, @@ -220,7 +220,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatFieldMetadataMaps, to: toFlatFieldMetadataMaps } = flatFieldMetadataMaps; const fieldResult = - await this.workspaceMigrationV2FieldActionsBuilderService.validateAndBuild( + await this.workspaceMigrationFieldActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatFieldMetadataMaps, @@ -252,7 +252,7 @@ export class WorkspaceMigrationBuildOrchestratorService { if (isDefined(flatIndexMaps)) { const { from: fromFlatIndexMaps, to: toFlatIndexMaps } = flatIndexMaps; const indexResult = - await this.workspaceMigrationV2IndexActionsBuilderService.validateAndBuild( + await this.workspaceMigrationIndexActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatIndexMaps, @@ -286,7 +286,7 @@ export class WorkspaceMigrationBuildOrchestratorService { if (isDefined(flatViewMaps)) { const { from: fromFlatViewMaps, to: toFlatViewMaps } = flatViewMaps; const viewResult = - await this.workspaceMigrationV2ViewActionsBuilderService.validateAndBuild( + await this.workspaceMigrationViewActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, dependencyOptimisticFlatEntityMaps: { @@ -321,7 +321,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatViewFieldMaps, to: toFlatViewFieldMaps } = flatViewFieldMaps; const viewFieldResult = - await this.workspaceMigrationV2ViewFieldActionsBuilderService.validateAndBuild( + await this.workspaceMigrationViewFieldActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatViewFieldMaps, @@ -360,7 +360,7 @@ export class WorkspaceMigrationBuildOrchestratorService { } = flatViewFilterGroupMaps; const viewFilterGroupResult = - await this.workspaceMigrationV2ViewFilterGroupActionsBuilderService.validateAndBuild( + await this.workspaceMigrationViewFilterGroupActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatViewFilterGroupMaps, @@ -395,7 +395,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatViewFilterMaps, to: toFlatViewFilterMaps } = flatViewFilterMaps; const viewFilterResult = - await this.workspaceMigrationV2ViewFilterActionsBuilderService.validateAndBuild( + await this.workspaceMigrationViewFilterActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatViewFilterMaps, @@ -431,7 +431,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatViewGroupMaps, to: toFlatViewGroupMaps } = flatViewGroupMaps; const viewGroupResult = - await this.workspaceMigrationV2ViewGroupActionsBuilderService.validateAndBuild( + await this.workspaceMigrationViewGroupActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatViewGroupMaps, @@ -467,7 +467,7 @@ export class WorkspaceMigrationBuildOrchestratorService { to: toFlatRowLevelPermissionPredicateGroupMaps, } = flatRowLevelPermissionPredicateGroupMaps; const rowLevelPermissionPredicateGroupResult = - await this.workspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService.validateAndBuild( + await this.workspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatRowLevelPermissionPredicateGroupMaps, @@ -504,7 +504,7 @@ export class WorkspaceMigrationBuildOrchestratorService { to: toFlatRowLevelPermissionPredicateMaps, } = flatRowLevelPermissionPredicateMaps; const rowLevelPermissionPredicateResult = - await this.workspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService.validateAndBuild( + await this.workspaceMigrationRowLevelPermissionPredicateActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatRowLevelPermissionPredicateMaps, @@ -548,7 +548,7 @@ export class WorkspaceMigrationBuildOrchestratorService { } = flatServerlessFunctionMaps; const serverlessFunctionResult = - await this.workspaceMigrationV2ServerlessFunctionActionsBuilderService.validateAndBuild( + await this.workspaceMigrationServerlessFunctionActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatServerlessFunctionMaps, @@ -584,7 +584,7 @@ export class WorkspaceMigrationBuildOrchestratorService { } = flatDatabaseEventTriggerMaps; const databaseEventTriggerResult = - await this.workspaceMigrationV2DatabaseEventTriggerActionsBuilderService.validateAndBuild( + await this.workspaceMigrationDatabaseEventTriggerActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatDatabaseEventTriggerMaps, @@ -621,7 +621,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatCronTriggerMaps; const cronTriggerResult = - await this.workspaceMigrationV2CronTriggerActionsBuilderService.validateAndBuild( + await this.workspaceMigrationCronTriggerActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatCronTriggerMaps, @@ -655,7 +655,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatRouteTriggerMaps; const routeTriggerResult = - await this.workspaceMigrationV2RouteTriggerActionsBuilderService.validateAndBuild( + await this.workspaceMigrationRouteTriggerActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatRouteTriggerMaps, @@ -690,7 +690,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatRoleMaps, to: toFlatRoleMaps } = flatRoleMaps; const roleResult = - await this.workspaceMigrationV2RoleActionsBuilderService.validateAndBuild( + await this.workspaceMigrationRoleActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatRoleMaps, @@ -721,7 +721,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatRoleTargetMaps; const roleTargetResult = - await this.workspaceMigrationV2RoleTargetActionsBuilderService.validateAndBuild( + await this.workspaceMigrationRoleTargetActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatRoleTargetMaps, @@ -754,7 +754,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatAgentMaps, to: toFlatAgentMaps } = flatAgentMaps; const agentResult = - await this.workspaceMigrationV2AgentActionsBuilderService.validateAndBuild( + await this.workspaceMigrationAgentActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatAgentMaps, @@ -786,7 +786,7 @@ export class WorkspaceMigrationBuildOrchestratorService { const { from: fromFlatSkillMaps, to: toFlatSkillMaps } = flatSkillMaps; const skillResult = - await this.workspaceMigrationV2SkillActionsBuilderService.validateAndBuild( + await this.workspaceMigrationSkillActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatSkillMaps, @@ -817,7 +817,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatPageLayoutMaps; const pageLayoutResult = - await this.workspaceMigrationV2PageLayoutActionsBuilderService.validateAndBuild( + await this.workspaceMigrationPageLayoutActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatPageLayoutMaps, @@ -854,7 +854,7 @@ export class WorkspaceMigrationBuildOrchestratorService { flatPageLayoutTabMaps; const pageLayoutTabResult = - await this.workspaceMigrationV2PageLayoutTabActionsBuilderService.validateAndBuild( + await this.workspaceMigrationPageLayoutTabActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatPageLayoutTabMaps, @@ -892,7 +892,7 @@ export class WorkspaceMigrationBuildOrchestratorService { } = flatPageLayoutWidgetMaps; const pageLayoutWidgetResult = - await this.workspaceMigrationV2PageLayoutWidgetActionsBuilderService.validateAndBuild( + await this.workspaceMigrationPageLayoutWidgetActionsBuilderService.validateAndBuild( { additionalCacheDataMaps, from: fromFlatPageLayoutWidgetMaps, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service.ts index d25b0997fee..7af9ef61646 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-validate-build-and-run-service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service.ts @@ -13,17 +13,17 @@ import { FlatEntityToCreateDeleteUpdate } from 'src/engine/metadata-modules/flat import { computeFlatEntityMapsFromTo } from 'src/engine/metadata-modules/flat-entity/utils/compute-flat-entity-maps-from-to.util'; import { getMetadataFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-flat-entity-maps-key.util'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -import { WORKSPACE_MIGRATION_ADDITIONAL_CACHE_DATA_MAPS_KEY } from 'src/engine/workspace-manager/workspace-migration-v2/constant/workspace-migration-additional-cache-data-maps-key.constant'; -import { WorkspaceMigrationBuildOrchestratorService } from 'src/engine/workspace-manager/workspace-migration-v2/services/workspace-migration-build-orchestrator.service'; -import { WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type'; +import { WorkspaceMigrationV2Exception } from 'src/engine/workspace-manager/workspace-migration.exception'; +import { WORKSPACE_MIGRATION_ADDITIONAL_CACHE_DATA_MAPS_KEY } from 'src/engine/workspace-manager/workspace-migration/constant/workspace-migration-additional-cache-data-maps-key.constant'; +import { WorkspaceMigrationBuildOrchestratorService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-build-orchestrator.service'; +import { WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type'; import { FromToAllFlatEntityMaps, WorkspaceMigrationOrchestratorBuildArgs, WorkspaceMigrationOrchestratorFailedResult, -} from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { InferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/infer-deletion-from-missing-entities.type'; -import { WorkspaceMigrationRunnerV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/services/workspace-migration-runner-v2.service'; -import { WorkspaceMigrationV2Exception } from 'src/engine/workspace-manager/workspace-migration.exception'; +} from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { InferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/infer-deletion-from-missing-entities.type'; +import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service'; type ValidateBuildAndRunWorkspaceMigrationFromMatriceArgs = { workspaceId: string; @@ -40,7 +40,7 @@ export class WorkspaceMigrationValidateBuildAndRunService { ); constructor( - private readonly workspaceMigrationRunnerV2Service: WorkspaceMigrationRunnerV2Service, + private readonly workspaceMigrationRunnerService: WorkspaceMigrationRunnerService, private readonly workspaceMigrationBuildOrchestratorService: WorkspaceMigrationBuildOrchestratorService, private readonly workspaceCacheService: WorkspaceCacheService, ) {} @@ -196,7 +196,7 @@ export class WorkspaceMigrationValidateBuildAndRunService { return; } - await this.workspaceMigrationRunnerV2Service + await this.workspaceMigrationRunnerService .run(validateAndBuildResult.workspaceMigration) .catch((error) => { this.logger.error(error); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/entity-relation.interface.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/entity-relation.interface.ts index dfea3fccff8..62c5b74e0cc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/entity-relation.interface.ts @@ -2,4 +2,4 @@ * Wrapper type used to circumvent ESM modules circular dependency issue * caused by reflection metadata saving the type of the property. */ -export type Relation = T; +export type EntityRelation = T; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/property-update.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/property-update.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/property-update.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/property-update.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type.ts similarity index 85% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type.ts index acde6591fdc..a93772d7b18 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type.ts @@ -1,6 +1,6 @@ import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; export type AggregateOrchestratorActionsReportArgs = { orchestratorActionsReport: OrchestratorActionsReport; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type.ts index 5114dc3f06d..87e8daaf801 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type.ts @@ -1,5 +1,5 @@ import { type AdditionalCacheDataMaps } from 'src/engine/workspace-cache/types/workspace-cache-key.type'; -import { type WORKSPACE_MIGRATION_ADDITIONAL_CACHE_DATA_MAPS_KEY } from 'src/engine/workspace-manager/workspace-migration-v2/constant/workspace-migration-additional-cache-data-maps-key.constant'; +import { type WORKSPACE_MIGRATION_ADDITIONAL_CACHE_DATA_MAPS_KEY } from 'src/engine/workspace-manager/workspace-migration/constant/workspace-migration-additional-cache-data-maps-key.constant'; export type WorkspaceMigrationBuilderAdditionalCacheDataMaps = Pick< AdditionalCacheDataMaps, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type.ts index 4917b535510..982e5fc4cfa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type.ts @@ -3,13 +3,13 @@ import { type FromTo } from 'twenty-shared/types'; import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; import { - type WorkspaceMigrationActionType, type MetadataWorkspaceMigrationActionsRecord, + type WorkspaceMigrationActionType, } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; -import { type WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; -import { type WorkspaceMigrationV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-v2'; +import { type WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration'; export type FromToAllFlatEntityMaps = { [P in keyof AllFlatEntityMaps]?: FromTo; @@ -41,5 +41,5 @@ export type WorkspaceMigrationOrchestratorFailedResult = { export type WorkspaceMigrationOrchestratorSuccessfulResult = { status: 'success'; - workspaceMigration: WorkspaceMigrationV2; + workspaceMigration: WorkspaceMigration; }; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/__snapshots__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts.snap diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.spec.ts similarity index 97% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.spec.ts index 56a33de59ed..e4bbc4b6320 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.spec.ts @@ -6,11 +6,11 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock'; import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock'; -import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util'; -import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { type CreateObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util'; +import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { type CreateObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; type CreateAggregationTestCase = EachTestingContext<{ input: OrchestratorActionsReport; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-delete-object-and-delete-field-actions.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-delete-object-and-delete-field-actions.util.spec.ts similarity index 94% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-delete-object-and-delete-field-actions.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-delete-object-and-delete-field-actions.util.spec.ts index 21f730bd4d2..b7848a1b3ab 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-delete-object-and-delete-field-actions.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-delete-object-and-delete-field-actions.util.spec.ts @@ -3,11 +3,11 @@ import { type EachTestingContext, } from 'twenty-shared/testing'; -import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util'; -import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { type DeleteObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util'; +import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { type DeleteObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; type DeleteAggregationTestCase = EachTestingContext<{ input: OrchestratorActionsReport; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.spec.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.spec.ts index 84f1bea2534..6a399659439 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.spec.ts @@ -6,9 +6,9 @@ import { addFlatEntityToFlatEntityMapsOrThrow } from 'src/engine/metadata-module import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; -import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/constant/empty-orchestrator-actions-report.constant'; -import { aggregateOrchestratorActionsReportDeprioritizeSearchVectorUpdateFieldActions } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util'; -import { type UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; +import { createEmptyOrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/constant/empty-orchestrator-actions-report.constant'; +import { aggregateOrchestratorActionsReportDeprioritizeSearchVectorUpdateFieldActions } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util'; +import { type UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; describe('aggregateOrchestratorActionsReportDeprioritizeSearchVectorUpdateFieldActions', () => { it('should move searchVector update actions to the end of the update list', () => { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts similarity index 96% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts index 59b00ae303a..c62f1d82713 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/flat-entity-deleted-created-updated-matrix-dispatcher.util.spec.ts @@ -6,8 +6,8 @@ import { FieldMetadataType, type FromTo } from 'twenty-shared/types'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock'; -import { flatEntityDeletedCreatedUpdatedMatrixDispatcher } from 'src/engine/workspace-manager/workspace-migration-v2/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { flatEntityDeletedCreatedUpdatedMatrixDispatcher } from 'src/engine/workspace-manager/workspace-migration/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; type TestContext = FromTo[]> & { metadataName: 'fieldMetadata'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/validate-flat-entity-circular-dependency.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/validate-flat-entity-circular-dependency.util.spec.ts similarity index 98% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/validate-flat-entity-circular-dependency.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/validate-flat-entity-circular-dependency.util.spec.ts index 4aeabe850f8..5c3f22829bf 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/__tests__/validate-flat-entity-circular-dependency.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/__tests__/validate-flat-entity-circular-dependency.util.spec.ts @@ -5,7 +5,7 @@ import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity import { type CircularDependencyValidationResult, validateFlatEntityCircularDependency, -} from 'src/engine/workspace-manager/workspace-migration-v2/utils/validate-flat-entity-circular-dependency.util'; +} from 'src/engine/workspace-manager/workspace-migration/utils/validate-flat-entity-circular-dependency.util'; type TestFlatEntity = SyncableFlatEntity & { parentId: string | null; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.ts index c78891cae57..a863a0e21f0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util.ts @@ -2,10 +2,10 @@ import { isDefined } from 'twenty-shared/utils'; import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util'; -import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { type CreateObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { type CreateObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; type AggregatedActions = { createdFieldActionByObjectMetadataId: Record; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util.ts similarity index 82% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util.ts index 075eb69e65f..f056ea8de97 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util.ts @@ -1,9 +1,9 @@ import { isDefined } from 'twenty-shared/utils'; -import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { type DeleteObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; +import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { type DeleteObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; type AggregatedActions = { deleteFieldActionByFieldMetadataId: Record; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.ts similarity index 87% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.ts index 0baeff31c16..883e3b2ef4e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util.ts @@ -2,9 +2,9 @@ import { assertIsDefinedOrThrow } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; -import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; -import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-orchestrator.type'; -import { type UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; +import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; +import { type OrchestratorActionsReport } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-orchestrator.type'; +import { type UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; export const aggregateOrchestratorActionsReportDeprioritizeSearchVectorUpdateFieldActions = ({ diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report.util.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report.util.ts index 8959df7e6c7..0382d69e9bc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report.util.ts @@ -1,7 +1,7 @@ -import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; -import { aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util'; -import { aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util'; -import { aggregateOrchestratorActionsReportDeprioritizeSearchVectorUpdateFieldActions } from 'src/engine/workspace-manager/workspace-migration-v2/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util'; +import { type AggregateOrchestratorActionsReportArgs } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-aggregate-orchestrator-actions-report-args.type'; +import { aggregateOrchestratorActionsReportCreateObjectAndCreateFieldActions } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-create-object-and-create-field-actions.util'; +import { aggregateOrchestratorActionsReportDeleteObjectAndDeleteFieldActions } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-delete-object-and-delete-field.util'; +import { aggregateOrchestratorActionsReportDeprioritizeSearchVectorUpdateFieldActions } from 'src/engine/workspace-manager/workspace-migration/utils/aggregate-orchestrator-actions-report-deprioritize-search-vector-update-field-actions.util'; export const aggregateOrchestratorActionsReport = ({ orchestratorActionsReport, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util.ts similarity index 83% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util.ts index 2ecaa9bf2ca..eef94c46f1f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util.ts @@ -1,4 +1,4 @@ -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; type ComputePostgresEnumNameParams = { tableName: string; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/convert-on-delete-action-to-on-delete.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/convert-on-delete-action-to-on-delete.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/convert-on-delete-action-to-on-delete.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/convert-on-delete-action-to-on-delete.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util.ts similarity index 95% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util.ts index f2cc438650e..8385e329291 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util.ts @@ -4,7 +4,7 @@ import { type FlatEntityPropertiesToCompare } from 'src/engine/metadata-modules/ import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type'; import { type FlatEntityPropertyUpdate } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-property-update.type'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; -import { isPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/is-property-update.util'; +import { isPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/is-property-update.util'; export const findFlatEntityPropertyUpdate = < T extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util.ts similarity index 92% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util.ts index db2fb2a0aaf..9e246757d15 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util.ts @@ -10,9 +10,9 @@ import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/fl import { type MetadataFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity-maps.type'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; import { compareTwoFlatEntity } from 'src/engine/metadata-modules/flat-entity/utils/compare-two-flat-entity.util'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; -import { shouldInferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration-v2/utils/should-infer-deletion-from-missing-entities.util'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { shouldInferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration/utils/should-infer-deletion-from-missing-entities.util'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; export type DeletedCreatedUpdatedMatrix = { createdFlatEntityMaps: MetadataFlatEntityMaps; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/get-metadata-empty-workspace-migration-action-record.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/get-metadata-empty-workspace-migration-action-record.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/get-metadata-empty-workspace-migration-action-record.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/get-metadata-empty-workspace-migration-action-record.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/is-property-update.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/is-property-update.util.ts similarity index 82% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/is-property-update.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/is-property-update.util.ts index 662e7a2aaa9..3858f8a09aa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/is-property-update.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/is-property-update.util.ts @@ -1,4 +1,4 @@ -import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type'; +import { type PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/types/property-update.type'; export const isPropertyUpdate = ( update: PropertyUpdate, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util.ts similarity index 78% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util.ts index 2ab7a46f5fb..2e06da0a9c4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util.ts @@ -1,7 +1,7 @@ import { type FlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-maps.type'; import { type SyncableFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/flat-entity.type'; -import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; -import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; +import { addFlatEntityToFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/add-flat-entity-to-flat-entity-maps-through-mutation-or-throw.util'; +import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; export type ReplaceFlatEntityInFlatEntityMapsThroughMutationOrThrowArgs< T extends SyncableFlatEntity, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/should-infer-deletion-from-missing-entities.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/should-infer-deletion-from-missing-entities.util.ts similarity index 79% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/should-infer-deletion-from-missing-entities.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/should-infer-deletion-from-missing-entities.util.ts index 0373544ceeb..175380b8bda 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/should-infer-deletion-from-missing-entities.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/should-infer-deletion-from-missing-entities.util.ts @@ -1,6 +1,6 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; export const shouldInferDeletionFromMissingEntities = ({ buildOptions, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/validate-flat-entity-circular-dependency.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/validate-flat-entity-circular-dependency.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/utils/validate-flat-entity-circular-dependency.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/utils/validate-flat-entity-circular-dependency.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service.ts similarity index 52% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service.ts index ab38a0ae7be..3c603c90422 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateAgentAction = BaseCreateWorkspaceMigrationAction<'agent'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service.ts index 869bccb3234..c36299006c4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/workspace-migration-v2-agent-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatAgentValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service'; +import { UpdateAgentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatAgentValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-agent-validator.service'; @Injectable() -export class WorkspaceMigrationV2AgentActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationAgentActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.agent > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type.ts index def4a874641..41946b8f595 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateCronTriggerAction = BaseCreateWorkspaceMigrationAction<'cronTrigger'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service.ts index 9cca300fc2d..319b8d9bbc2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/workspace-migration-v2-cron-trigger-action-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatCronTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service'; +import { UpdateCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatCronTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-cron-trigger-validator.service'; @Injectable() -export class WorkspaceMigrationV2CronTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationCronTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.cronTrigger > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type.ts similarity index 57% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type.ts index c63cb30a0ca..aa4ba4c0329 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateDatabaseEventTriggerAction = BaseCreateWorkspaceMigrationAction<'databaseEventTrigger'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service.ts index 40f3f7c290e..eaa3ba1fb30 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/workspace-migration-v2-database-event-trigger-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatDatabaseEventTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service'; +import { UpdateDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatDatabaseEventTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-database-event-trigger-validator.service'; @Injectable() -export class WorkspaceMigrationV2DatabaseEventTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationDatabaseEventTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.databaseEventTrigger > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action.ts similarity index 66% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action.ts index b09cb82143e..1bd2034ea9f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action.ts @@ -1,7 +1,7 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateFieldAction = Omit< BaseCreateWorkspaceMigrationAction<'fieldMetadata'>, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service.ts index caccedb7c80..2dfe274725a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/workspace-migration-v2-field-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service.ts @@ -3,15 +3,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; -import { UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service'; +import { UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service'; @Injectable() -export class WorkspaceMigrationV2FieldActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationFieldActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.fieldMetadata > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action.ts index c822c9fe39c..9fa0fd9618b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action.ts @@ -1,6 +1,6 @@ import { type FlatIndexMetadata } from 'src/engine/metadata-modules/flat-index-metadata/types/flat-index-metadata.type'; -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; export type CreateIndexAction = BaseCreateWorkspaceMigrationAction<'index'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/workspace-migration-index-actions-builder.service.ts similarity index 84% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/workspace-migration-index-actions-builder.service.ts index 019d0a91d12..1ee3f21d886 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/workspace-migration-v2-index-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/workspace-migration-index-actions-builder.service.ts @@ -7,16 +7,16 @@ import { isDefined } from 'twenty-shared/utils'; import { createEmptyFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/constant/create-empty-flat-entity-maps.constant'; import { FlatEntityMapsExceptionCode } from 'src/engine/metadata-modules/flat-entity/exceptions/flat-entity-maps.exception'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; -import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatIndexValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatIndexValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-index-metadata-validator.service'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() -export class WorkspaceMigrationV2IndexActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationIndexActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.index > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action.ts similarity index 62% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action.ts index 9fd8f34c6b6..0bb56868aa0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action.ts @@ -1,7 +1,7 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/types/flat-field-metadata.type'; -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateObjectAction = BaseCreateWorkspaceMigrationAction<'objectMetadata'> & { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/workspace-migration-object-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/workspace-migration-object-actions-builder.service.ts index cb2d4c20198..3331cc6fde2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/workspace-migration-v2-object-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/workspace-migration-object-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service'; +import { UpdateObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-object-metadata-validator.service'; @Injectable() -export class WorkspaceMigrationV2ObjectActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationObjectActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.objectMetadata > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type.ts similarity index 55% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type.ts index 6764eb017b1..08f414e5915 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreatePageLayoutTabAction = BaseCreateWorkspaceMigrationAction<'pageLayoutTab'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/workspace-migration-page-layout-tab-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/workspace-migration-page-layout-tab-actions-builder.service.ts index aba38a0c2bc..6793551a6cc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/workspace-migration-v2-page-layout-tab-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/workspace-migration-page-layout-tab-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatPageLayoutTabValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service'; +import { UpdatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatPageLayoutTabValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-tab-validator.service'; @Injectable() -export class WorkspaceMigrationV2PageLayoutTabActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationPageLayoutTabActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.pageLayoutTab > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type.ts similarity index 56% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type.ts index 74604224d22..5bedc3aba0c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreatePageLayoutWidgetAction = BaseCreateWorkspaceMigrationAction<'pageLayoutWidget'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/workspace-migration-page-layout-widget-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/workspace-migration-page-layout-widget-actions-builder.service.ts index ee5fee9be0c..088cc552bb3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/workspace-migration-v2-page-layout-widget-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/workspace-migration-page-layout-widget-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatPageLayoutWidgetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service'; +import { UpdatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatPageLayoutWidgetValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-widget-validator.service'; @Injectable() -export class WorkspaceMigrationV2PageLayoutWidgetActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationPageLayoutWidgetActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.pageLayoutWidget > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type.ts index 5e169c45996..2e56b022aa6 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreatePageLayoutAction = BaseCreateWorkspaceMigrationAction<'pageLayout'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/workspace-migration-page-layout-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/workspace-migration-page-layout-actions-builder.service.ts index c42febe88fa..44fa9362c4a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/workspace-migration-v2-page-layout-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/workspace-migration-page-layout-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatPageLayoutValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service'; +import { UpdatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatPageLayoutValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-validator.service'; @Injectable() -export class WorkspaceMigrationV2PageLayoutActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationPageLayoutActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.pageLayout > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type.ts index d6045c31133..62160c801e9 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateRoleTargetAction = BaseCreateWorkspaceMigrationAction<'roleTarget'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/workspace-migration-role-target-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/workspace-migration-role-target-actions-builder.service.ts index 7d3c775b26b..07285f3c4fa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/workspace-migration-v2-role-target-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/workspace-migration-role-target-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatRoleTargetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-target-validator.service'; +import { UpdateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatRoleTargetValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-target-validator.service'; @Injectable() -export class WorkspaceMigrationV2RoleTargetActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationRoleTargetActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.roleTarget > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type.ts similarity index 52% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type.ts index b6bedc99290..9395cad6324 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateRoleAction = BaseCreateWorkspaceMigrationAction<'role'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/workspace-migration-role-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/workspace-migration-role-actions-builder.service.ts index cbad2fc1d94..73d4fc48fb4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/workspace-migration-v2-role-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/workspace-migration-role-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateRoleAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatRoleValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service'; +import { UpdateRoleAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatRoleValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-validator.service'; @Injectable() -export class WorkspaceMigrationV2RoleActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationRoleActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.role > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type.ts similarity index 55% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type.ts index c0e81edb443..481db92da78 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateRouteTriggerAction = BaseCreateWorkspaceMigrationAction<'routeTrigger'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/workspace-migration-route-trigger-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/workspace-migration-route-trigger-actions-builder.service.ts index ef88b235463..ce2fb2b6de3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/workspace-migration-v2-route-trigger-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/workspace-migration-route-trigger-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service'; +import { UpdateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-route-trigger-validator.service'; @Injectable() -export class WorkspaceMigrationV2RouteTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationRouteTriggerActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.routeTrigger > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type.ts similarity index 61% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type.ts index bb61b01438c..b6a41a9b83c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type.ts @@ -1,8 +1,8 @@ /* @license Enterprise */ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateRowLevelPermissionPredicateGroupAction = BaseCreateWorkspaceMigrationAction<'rowLevelPermissionPredicateGroup'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/workspace-migration-v2-row-level-permission-predicate-group-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/workspace-migration-row-level-permission-predicate-group-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/workspace-migration-v2-row-level-permission-predicate-group-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/workspace-migration-row-level-permission-predicate-group-actions-builder.service.ts index b64b674f971..e9484338312 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/workspace-migration-v2-row-level-permission-predicate-group-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/workspace-migration-row-level-permission-predicate-group-actions-builder.service.ts @@ -4,15 +4,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatRowLevelPermissionPredicateGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-group-validator.service'; +import { UpdateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatRowLevelPermissionPredicateGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-group-validator.service'; @Injectable() -export class WorkspaceMigrationV2RowLevelPermissionPredicateGroupActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.rowLevelPermissionPredicateGroup > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type.ts similarity index 60% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type.ts index e7f5379df5b..2b61c4e41c7 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type.ts @@ -1,8 +1,8 @@ /* @license Enterprise */ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateRowLevelPermissionPredicateAction = BaseCreateWorkspaceMigrationAction<'rowLevelPermissionPredicate'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/workspace-migration-v2-row-level-permission-predicate-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/workspace-migration-row-level-permission-predicate-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/workspace-migration-v2-row-level-permission-predicate-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/workspace-migration-row-level-permission-predicate-actions-builder.service.ts index d5a010a75bc..69aacd9aaea 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/workspace-migration-v2-row-level-permission-predicate-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/workspace-migration-row-level-permission-predicate-actions-builder.service.ts @@ -4,15 +4,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatRowLevelPermissionPredicateValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-validator.service'; +import { UpdateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatRowLevelPermissionPredicateValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-validator.service'; @Injectable() -export class WorkspaceMigrationV2RowLevelPermissionPredicateActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.rowLevelPermissionPredicate > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type.ts similarity index 60% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type.ts index 0b195a0c7c0..3a3e0eac126 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type.ts @@ -1,8 +1,8 @@ import { type Sources } from 'twenty-shared/types'; -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateServerlessFunctionAction = BaseCreateWorkspaceMigrationAction<'serverlessFunction'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/workspace-migration-serverless-function-actions-builder.service.ts similarity index 81% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/workspace-migration-serverless-function-actions-builder.service.ts index 6d4a95b7342..3838b9117d8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/workspace-migration-v2-serverless-function-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/workspace-migration-serverless-function-actions-builder.service.ts @@ -3,19 +3,19 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; -import { UpdateServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-action-v2.type'; +import { UpdateServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type'; import { ValidateAndBuildArgs, ValidateAndBuildReturnType, - WorkspaceEntityMigrationBuilderV2Service, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatServerlessFunctionValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-serverless-function-validator.service'; + WorkspaceEntityMigrationBuilderService, +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatServerlessFunctionValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-serverless-function-validator.service'; @Injectable() -export class WorkspaceMigrationV2ServerlessFunctionActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationServerlessFunctionActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.serverlessFunction > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type.ts similarity index 52% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type.ts index 00572b1352f..9b59820aa63 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateSkillAction = BaseCreateWorkspaceMigrationAction<'skill'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/workspace-migration-v2-skill-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/workspace-migration-skill-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/workspace-migration-v2-skill-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/workspace-migration-skill-actions-builder.service.ts index ed91f3170e2..742f53d4229 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/workspace-migration-v2-skill-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/workspace-migration-skill-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateSkillAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatSkillValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-skill-validator.service'; +import { UpdateSkillAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatSkillValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-skill-validator.service'; @Injectable() -export class WorkspaceMigrationV2SkillActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationSkillActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.skill > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type.ts index 999ac0bd2a8..56e64d2d9ee 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type.ts @@ -2,7 +2,7 @@ import { type MessageDescriptor } from '@lingui/core'; import { type AllMetadataName } from 'twenty-shared/metadata'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; -import { type WorkspaceMigrationActionTypeV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2'; +import { type WorkspaceMigrationActionType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common'; export type FlatEntityValidationError = { code: TCode; @@ -13,7 +13,7 @@ export type FlatEntityValidationError = { export type FailedFlatEntityValidation< TMetadataName extends AllMetadataName, - TAcionType extends WorkspaceMigrationActionTypeV2, + TAcionType extends WorkspaceMigrationActionType, > = { type: TAcionType; metadataName: TMetadataName; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util.ts similarity index 86% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util.ts index 22057d1a671..76bb4a8c621 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util.ts @@ -1,7 +1,7 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const getEmptyFlatEntityValidationError = < TMetadataName extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/workspace-migration-view-field-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/workspace-migration-view-field-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type.ts index 0093f397860..66d3eed72ea 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/workspace-migration-view-field-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateViewFieldAction = BaseCreateWorkspaceMigrationAction<'viewField'>; 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/workspace-migration-builder/builders/view-field/workspace-migration-view-field-actions-builder.service.ts similarity index 75% rename from 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 rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/workspace-migration-view-field-actions-builder.service.ts index 405835bae7e..7e3191ddf8f 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/workspace-migration-builder/builders/view-field/workspace-migration-view-field-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-field/types/workspace-migration-view-field-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatViewFieldValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service'; +import { UpdateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatViewFieldValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-field-validator.service'; @Injectable() -export class WorkspaceMigrationV2ViewFieldActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationViewFieldActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.viewField > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type.ts similarity index 56% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type.ts index 9c44741bcc5..9d5e70a2e30 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateViewFilterGroupAction = BaseCreateWorkspaceMigrationAction<'viewFilterGroup'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/workspace-migration-v2-view-filter-group-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/workspace-migration-view-filter-group-actions-builder.service.ts similarity index 76% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/workspace-migration-v2-view-filter-group-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/workspace-migration-view-filter-group-actions-builder.service.ts index 073c9def792..751908fc02b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/workspace-migration-v2-view-filter-group-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/workspace-migration-view-filter-group-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { type UpdateViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { type FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatViewFilterGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-group-validator.service'; +import { type UpdateViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { type FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatViewFilterGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-group-validator.service'; @Injectable() -export class WorkspaceMigrationV2ViewFilterGroupActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationViewFilterGroupActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.viewFilterGroup > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type.ts index 746da90d8f9..5a3a5d3a63d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateViewFilterAction = BaseCreateWorkspaceMigrationAction<'viewFilter'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/workspace-migration-v2-view-filter-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/workspace-migration-view-filter-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/workspace-migration-v2-view-filter-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/workspace-migration-view-filter-actions-builder.service.ts index d6df56854dd..06aa3a1c83e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/workspace-migration-v2-view-filter-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/workspace-migration-view-filter-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateViewFilterAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatViewFilterValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-validator.service'; +import { UpdateViewFilterAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatViewFilterValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-validator.service'; @Injectable() -export class WorkspaceMigrationV2ViewFilterActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationViewFilterActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.viewFilter > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type.ts index 2d1d5d09f8d..5bd21ab588d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateViewGroupAction = BaseCreateWorkspaceMigrationAction<'viewGroup'>; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/workspace-migration-v2-view-group-actions-builder.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/workspace-migration-view-group-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/workspace-migration-v2-view-group-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/workspace-migration-view-group-actions-builder.service.ts index 09572a115a6..2710273ff81 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/workspace-migration-v2-view-group-actions-builder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/workspace-migration-view-group-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateViewGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatViewGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-group-validator.service'; +import { UpdateViewGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatViewGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-group-validator.service'; @Injectable() -export class WorkspaceMigrationV2ViewGroupActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationViewGroupActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.viewGroup > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/types/workspace-migration-view-action-v2.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type.ts similarity index 52% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/types/workspace-migration-view-action-v2.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type.ts index 743a57eab56..fa49c093709 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/types/workspace-migration-view-action-v2.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type.ts @@ -1,6 +1,6 @@ -import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type'; -import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type'; -import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type'; +import { type BaseCreateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type'; +import { type BaseDeleteWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type'; +import { type BaseUpdateWorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type'; export type CreateViewAction = BaseCreateWorkspaceMigrationAction<'view'>; 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/workspace-migration-builder/builders/view/workspace-migration-view-actions-builder.service.ts similarity index 75% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/workspace-migration-v2-view-actions-builder.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/workspace-migration-view-actions-builder.service.ts index cb24439e721..2079a0f28a6 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/workspace-migration-builder/builders/view/workspace-migration-view-actions-builder.service.ts @@ -2,15 +2,15 @@ import { Injectable } from '@nestjs/common'; import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; -import { UpdateViewAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view/types/workspace-migration-view-action-v2.type'; -import { WorkspaceEntityMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service'; +import { UpdateViewAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type'; +import { WorkspaceEntityMigrationBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-validator.service'; @Injectable() -export class WorkspaceMigrationV2ViewActionsBuilderService extends WorkspaceEntityMigrationBuilderV2Service< +export class WorkspaceMigrationViewActionsBuilderService extends WorkspaceEntityMigrationBuilderService< typeof ALL_METADATA_NAME.view > { constructor( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service.ts similarity index 87% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service.ts index 2c46f191b6b..5370b9c46a0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/services/workspace-entity-migration-builder-v2.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/services/workspace-entity-migration-builder.service.ts @@ -16,19 +16,19 @@ import { addFlatEntityToFlatEntityAndRelatedEntityMapsThroughMutationOrThrow } f import { deleteFlatEntityFromFlatEntityAndRelatedEntityMapsThroughMutationOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { getMetadataFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-flat-entity-maps-key.util'; -import { WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type'; -import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; -import { flatEntityDeletedCreatedUpdatedMatrixDispatcher } from 'src/engine/workspace-manager/workspace-migration-v2/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util'; -import { getMetadataEmptyWorkspaceMigrationActionRecord } from 'src/engine/workspace-manager/workspace-migration-v2/utils/get-metadata-empty-workspace-migration-action-record.util'; -import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; -import { shouldInferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration-v2/utils/should-infer-deletion-from-missing-entities.util'; -import { FailedFlatEntityValidateAndBuild } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/failed-flat-entity-validate-and-build.type'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type'; -import { SuccessfulFlatEntityValidateAndBuild } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/successful-flat-entity-validate-and-build.type'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type'; +import { deleteFlatEntityFromFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/delete-flat-entity-from-flat-entity-maps-through-mutation-or-throw.util'; +import { flatEntityDeletedCreatedUpdatedMatrixDispatcher } from 'src/engine/workspace-manager/workspace-migration/utils/flat-entity-deleted-created-updated-matrix-dispatcher.util'; +import { getMetadataEmptyWorkspaceMigrationActionRecord } from 'src/engine/workspace-manager/workspace-migration/utils/get-metadata-empty-workspace-migration-action-record.util'; +import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; +import { shouldInferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration/utils/should-infer-deletion-from-missing-entities.util'; +import { FailedFlatEntityValidateAndBuild } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/failed-flat-entity-validate-and-build.type'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { FlatEntityValidationReturnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type'; +import { SuccessfulFlatEntityValidateAndBuild } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/successful-flat-entity-validate-and-build.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; export type ValidateAndBuildArgs = { buildOptions: WorkspaceMigrationBuilderOptions; @@ -41,7 +41,7 @@ export type ValidateAndBuildReturnType = Promise< SuccessfulFlatEntityValidateAndBuild | FailedFlatEntityValidateAndBuild >; -export abstract class WorkspaceEntityMigrationBuilderV2Service< +export abstract class WorkspaceEntityMigrationBuilderService< T extends AllMetadataName, > { @Inject(LoggerService) diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-create-workspace-migration-action.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-create-workspace-migration-action.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-delete-workspace-migration-action.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-delete-workspace-migration-action.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/base-update-workspace-migration-action.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/base-update-workspace-migration-action.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/convert-action-type-to-camel-case.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/convert-action-type-to-camel-case.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/convert-action-type-to-camel-case.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/convert-action-type-to-camel-case.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/failed-flat-entity-validate-and-build.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/failed-flat-entity-validate-and-build.type.ts similarity index 84% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/failed-flat-entity-validate-and-build.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/failed-flat-entity-validate-and-build.type.ts index 499658a0045..83d7340ddb0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/failed-flat-entity-validate-and-build.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/failed-flat-entity-validate-and-build.type.ts @@ -2,7 +2,7 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type MetadataFlatEntityAndRelatedFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-related-types.type'; import { type WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export type FailedFlatEntityValidateAndBuild = { status: 'fail'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type.ts similarity index 82% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type.ts index 72fbe44cfbe..7eba2d3b4ae 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type.ts @@ -1,7 +1,7 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type FlatEntityPropertiesUpdates } from 'src/engine/metadata-modules/flat-entity/types/flat-entity-properties-updates.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; export type FlatEntityUpdateValidationArgs = Omit< FlatEntityValidationArgs, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type.ts similarity index 81% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type.ts index c38f2d0ab1b..e799c910ce2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type.ts @@ -3,8 +3,8 @@ import { type AllMetadataName } from 'twenty-shared/metadata'; import { type MetadataFlatEntityAndRelatedFlatEntityMapsForValidation } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity-and-related-flat-entity-maps-for-validation.type'; import { type MetadataFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity-maps.type'; import { type MetadataFlatEntity } from 'src/engine/metadata-modules/flat-entity/types/metadata-flat-entity.type'; -import { type WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration-v2/types/workspace-migration-builder-additional-cache-data-maps.type'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type WorkspaceMigrationBuilderAdditionalCacheDataMaps } from 'src/engine/workspace-manager/workspace-migration/types/workspace-migration-builder-additional-cache-data-maps.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; export type FlatEntityValidationArgs = { additionalCacheDataMaps: WorkspaceMigrationBuilderAdditionalCacheDataMaps; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type.ts similarity index 86% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type.ts index 07ad54836ac..7b7f0bc3da0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-result.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-result.type.ts @@ -4,7 +4,7 @@ import { type MetadataWorkspaceMigrationAction, type WorkspaceMigrationActionType, } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export type FlatEntityValidationReturnType< TMetadataName extends AllMetadataName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/infer-deletion-from-missing-entities.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/infer-deletion-from-missing-entities.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/infer-deletion-from-missing-entities.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/infer-deletion-from-missing-entities.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/remove-suffix.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/remove-suffix.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/remove-suffix.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/remove-suffix.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/successful-flat-entity-validate-and-build.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/successful-flat-entity-validate-and-build.type.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/successful-flat-entity-validate-and-build.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/successful-flat-entity-validate-and-build.type.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common.ts index 7785e854ae9..77553b07fda 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common.ts @@ -5,12 +5,12 @@ import { type WorkspaceMigrationActionType, } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; -export type WorkspaceMigrationActionV2 = MetadataWorkspaceMigrationAction< +export type WorkspaceMigrationAction = MetadataWorkspaceMigrationAction< AllMetadataName, WorkspaceMigrationActionType >; -export type WorkspaceMigrationActionTypeV2 = WorkspaceMigrationActionType; +export { WorkspaceMigrationActionType }; export type WorkspaceMigrationActionHandlerKey = `${WorkspaceMigrationActionType}_${AllMetadataName}`; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type.ts similarity index 63% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type.ts index 7c95e099525..80b076e89e3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type.ts @@ -1,4 +1,4 @@ -import { type InferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/infer-deletion-from-missing-entities.type'; +import { type InferDeletionFromMissingEntities } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/infer-deletion-from-missing-entities.type'; export type WorkspaceMigrationBuilderOptions = { inferDeletionFromMissingEntities?: InferDeletionFromMissingEntities; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-v2.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration.ts similarity index 54% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-v2.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration.ts index b1f9dcbca9e..3b710329274 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-v2.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration.ts @@ -1,8 +1,8 @@ import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; -import { type WorkspaceMigrationActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2'; +import { type WorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common'; -export type WorkspaceMigrationV2< - TActions extends WorkspaceMigrationActionV2 = WorkspaceMigrationActionV2, +export type WorkspaceMigration< + TActions extends WorkspaceMigrationAction = WorkspaceMigrationAction, > = { actions: TActions[]; workspaceId: string; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/serialize-default-value-v2.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/utils/serialize-default-value.util.ts similarity index 94% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/serialize-default-value-v2.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/utils/serialize-default-value.util.ts index d11bdbfdacd..3b33248266a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/serialize-default-value-v2.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/utils/serialize-default-value.util.ts @@ -8,22 +8,22 @@ import { } from 'src/engine/metadata-modules/field-metadata/field-metadata.exception'; import { isFunctionDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/is-function-default-value.util'; import { serializeFunctionDefaultValue } from 'src/engine/metadata-modules/field-metadata/utils/serialize-function-default-value.util'; -import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration-runner/utils/remove-sql-injection.util'; +import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-migration/utils/remove-sql-injection.util'; -type SerializeDefaultValueV2Args = { +type SerializeDefaultValueArgs = { defaultValue?: FieldMetadataDefaultSerializableValue; columnType?: ColumnType; schemaName: string; tableName: string; columnName: string; }; -export const serializeDefaultValueV2 = ({ +export const serializeDefaultValue = ({ columnType, defaultValue, schemaName, tableName, columnName, -}: SerializeDefaultValueV2Args) => { +}: SerializeDefaultValueArgs) => { const safeSchemaName = removeSqlDDLInjection(schemaName); const safeTableName = removeSqlDDLInjection(tableName); const safeColumnName = removeSqlDDLInjection(columnName); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-agent-validator.service.ts similarity index 86% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-agent-validator.service.ts index 92ecd861f32..01782a106d0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-agent-validator.service.ts @@ -8,14 +8,14 @@ import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agen import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { validateAgentNameUniqueness } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-name-uniqueness.util'; -import { validateAgentRequiredProperties } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-required-properties.util'; -import { validateAgentResponseFormat } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-response-format.util'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { validateAgentNameUniqueness } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-name-uniqueness.util'; +import { validateAgentRequiredProperties } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-required-properties.util'; +import { validateAgentResponseFormat } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-response-format.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatAgentValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-cron-trigger-validator.service.ts similarity index 88% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-cron-trigger-validator.service.ts index 27654d652af..72749922113 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-cron-trigger-validator.service.ts @@ -5,11 +5,11 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { isDefined } from 'twenty-shared/utils'; import { CronTriggerExceptionCode } from 'src/engine/metadata-modules/cron-trigger/exceptions/cron-trigger.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatCronTriggerValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-database-event-trigger-validator.service.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-database-event-trigger-validator.service.ts index 0479900a215..c286950e73c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-database-event-trigger-validator.service.ts @@ -5,11 +5,11 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { isDefined } from 'twenty-shared/utils'; import { DatabaseEventTriggerExceptionCode } from 'src/engine/metadata-modules/database-event-trigger/exceptions/database-event-trigger.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; // TODO: validate settings integrity @Injectable() diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service.ts similarity index 95% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service.ts index 8e05d876802..1167ad0416e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service.ts @@ -14,12 +14,12 @@ import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/ import { validateFlatFieldMetadataNameAvailability } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name-availability.util'; import { validateFlatFieldMetadataName } from 'src/engine/metadata-modules/flat-field-metadata/validators/utils/validate-flat-field-metadata-name.util'; import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatFieldMetadataValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-index-metadata-validator.service.ts similarity index 95% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-index-metadata-validator.service.ts index cbcc002bc7f..fc79cae31df 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-index-metadata-validator.service.ts @@ -12,9 +12,9 @@ import { FlatEntityMapsExceptionCode } from 'src/engine/metadata-modules/flat-en import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-composite-flat-field-metadata.util'; import { IndexExceptionCode } from 'src/engine/metadata-modules/flat-index-metadata/exceptions/index-exception-code'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; @Injectable() export class FlatIndexValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-object-metadata-validator.service.ts similarity index 92% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-object-metadata-validator.service.ts index 382535cb83e..69e7acafa6c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-object-metadata-validator.service.ts @@ -8,11 +8,11 @@ import { validateFlatObjectMetadataIdentifiers } from 'src/engine/metadata-modul import { validateFlatObjectMetadataNameAndLabels } from 'src/engine/metadata-modules/flat-object-metadata/validators/utils/validate-flat-object-metadata-name-and-labels.util'; import { ObjectMetadataExceptionCode } from 'src/engine/metadata-modules/object-metadata/object-metadata.exception'; import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatObjectMetadataValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-tab-validator.service.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-tab-validator.service.ts index 898549df42c..6da16266734 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-tab-validator.service.ts @@ -6,10 +6,10 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { PageLayoutExceptionCode } from 'src/engine/metadata-modules/page-layout/exceptions/page-layout.exception'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; const PAGE_LAYOUT_TAB_EXCEPTION_CODE = { PAGE_LAYOUT_TAB_NOT_FOUND: 'PAGE_LAYOUT_TAB_NOT_FOUND', diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-validator.service.ts similarity index 88% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-validator.service.ts index 42a547afd0e..3ba32cb9cdc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-validator.service.ts @@ -5,10 +5,10 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; const PAGE_LAYOUT_EXCEPTION_CODE = { PAGE_LAYOUT_NOT_FOUND: 'PAGE_LAYOUT_NOT_FOUND', diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-widget-validator.service.ts similarity index 94% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-widget-validator.service.ts index 77fee92667e..bb4afe05b8f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-widget-validator.service.ts @@ -17,11 +17,11 @@ import { validateWidgetGridPosition } from 'src/engine/metadata-modules/page-lay import { FailedFlatEntityValidation, FlatEntityValidationError, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatPageLayoutWidgetValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-target-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-target-validator.service.ts similarity index 86% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-target-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-target-validator.service.ts index 1deb255ed81..016678605bb 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-target-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-target-validator.service.ts @@ -6,13 +6,13 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { RoleTargetExceptionCode } from 'src/engine/metadata-modules/role/exceptions/role-target.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { validateFlatRoleTargetAssignationAvailability } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-assignation-availability.util'; -import { validateFlatRoleTargetTargetsOnlyOneEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-targets-only-one-entity.util'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { validateFlatRoleTargetAssignationAvailability } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-assignation-availability.util'; +import { validateFlatRoleTargetTargetsOnlyOneEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-targets-only-one-entity.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatRoleTargetValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-validator.service.ts similarity index 81% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-validator.service.ts index f7d2e7e20d1..af0722b8198 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-validator.service.ts @@ -5,16 +5,16 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { isDefined } from 'twenty-shared/utils'; import { PermissionsExceptionCode } from 'src/engine/metadata-modules/permissions/permissions.exception'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { validateRoleIsEditable } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-is-editable.util'; -import { validateRoleLabelUniqueness } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-label-uniqueness.util'; -import { validateRoleReadWritePermissionsConsistency } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-read-write-permissions-consistency.util'; -import { validateRoleRequiredPropertiesAreDefined } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-required-properties-are-defined.util'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { validateRoleIsEditable } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-is-editable.util'; +import { validateRoleLabelUniqueness } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-label-uniqueness.util'; +import { validateRoleReadWritePermissionsConsistency } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-read-write-permissions-consistency.util'; +import { validateRoleRequiredPropertiesAreDefined } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-required-properties-are-defined.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatRoleValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-route-trigger-validator.service.ts similarity index 89% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-route-trigger-validator.service.ts index 169b5e4c1b9..06d44f24984 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-route-trigger-validator.service.ts @@ -5,11 +5,11 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { isDefined } from 'twenty-shared/utils'; import { RouteTriggerExceptionCode } from 'src/engine/metadata-modules/route-trigger/exceptions/route-trigger.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatRouteTriggerValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-group-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-group-validator.service.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-group-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-group-validator.service.ts index 7134b9ed85f..8ea0010b270 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-group-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-group-validator.service.ts @@ -8,11 +8,11 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { RowLevelPermissionPredicateGroupExceptionCode } from 'src/engine/metadata-modules/row-level-permission-predicate/exceptions/row-level-permission-predicate-group.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatRowLevelPermissionPredicateGroupValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-validator.service.ts similarity index 94% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-validator.service.ts index 8635ae2325b..ec902c2c6c6 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-validator.service.ts @@ -8,11 +8,11 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { RowLevelPermissionPredicateExceptionCode } from 'src/engine/metadata-modules/row-level-permission-predicate/exceptions/row-level-permission-predicate.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatRowLevelPermissionPredicateValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-serverless-function-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-serverless-function-validator.service.ts similarity index 89% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-serverless-function-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-serverless-function-validator.service.ts index 73f803382d1..edd7dd35cc4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-serverless-function-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-serverless-function-validator.service.ts @@ -5,10 +5,10 @@ import { ALL_METADATA_NAME } from 'twenty-shared/metadata'; import { isDefined } from 'twenty-shared/utils'; import { ServerlessFunctionExceptionCode } from 'src/engine/metadata-modules/serverless-function/serverless-function.exception'; -import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; @Injectable() export class FlatServerlessFunctionValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-skill-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-skill-validator.service.ts similarity index 87% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-skill-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-skill-validator.service.ts index d2f0615631f..b9aa4b8c294 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-skill-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-skill-validator.service.ts @@ -8,18 +8,18 @@ import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/ import { type FlatSkill } from 'src/engine/metadata-modules/flat-skill/types/flat-skill.type'; import { SkillExceptionCode } from 'src/engine/metadata-modules/skill/skill.exception'; import { isStandardMetadata } from 'src/engine/metadata-modules/utils/is-standard-metadata.util'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { validateSkillNameUniqueness } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-name-uniqueness.util'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { validateSkillNameUniqueness } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-name-uniqueness.util'; import { validateSkillContentIsDefined, validateSkillLabelIsDefined, validateSkillRequiredProperties, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-required-properties.util'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-required-properties.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatSkillValidatorService { 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/workspace-migration-builder/validators/services/flat-view-field-validator.service.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-field-validator.service.ts index b24be2433dd..df7c4bf6873 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/workspace-migration-builder/validators/services/flat-view-field-validator.service.ts @@ -8,12 +8,12 @@ import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/ import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; 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 { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { 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'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { validateLabelIdentifierFieldMetadataIdFlatViewField } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatViewFieldValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-group-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-group-validator.service.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-group-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-group-validator.service.ts index fda55c7b656..7f972bed9d8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-group-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-group-validator.service.ts @@ -7,15 +7,15 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { type FlatViewFilterGroupMaps } from 'src/engine/metadata-modules/flat-view-filter-group/types/flat-view-filter-group-maps.type'; import { ViewFilterGroupExceptionCode } from 'src/engine/metadata-modules/view-filter-group/exceptions/view-filter-group.exception'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { validateFlatEntityCircularDependency } from 'src/engine/workspace-manager/workspace-migration-v2/utils/validate-flat-entity-circular-dependency.util'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { validateFlatEntityCircularDependency } from 'src/engine/workspace-manager/workspace-migration/utils/validate-flat-entity-circular-dependency.util'; import { type FailedFlatEntityValidation, type FlatEntityValidationError, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; // View filter groups can have at most 2 levels of nesting (root and one child level) const VIEW_FILTER_GROUP_MAX_DEPTH = 2; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-validator.service.ts similarity index 91% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-validator.service.ts index eb429c0c5fd..1befad89e7d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-validator.service.ts @@ -6,11 +6,11 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.util'; import { ViewFilterExceptionCode } from 'src/engine/metadata-modules/view-filter/exceptions/view-filter.exception'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatViewFilterValidatorService { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-group-validator.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-group-validator.service.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-group-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-group-validator.service.ts index b9591b2d41c..6250e47fade 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-group-validator.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-group-validator.service.ts @@ -6,11 +6,11 @@ import { isDefined } from 'twenty-shared/utils'; import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps.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 { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class FlatViewGroupValidatorService { 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/workspace-migration-builder/validators/services/flat-view-validator.service.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-validator.service.ts index 38d7b2bfba4..bee7f9c08d3 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/workspace-migration-builder/validators/services/flat-view-validator.service.ts @@ -7,12 +7,12 @@ import { findFlatEntityByIdInFlatEntityMaps } from 'src/engine/metadata-modules/ import { type FlatView } from 'src/engine/metadata-modules/flat-view/types/flat-view.type'; import { ViewType } from 'src/engine/metadata-modules/view/enums/view-type.enum'; import { ViewExceptionCode } from 'src/engine/metadata-modules/view/exceptions/view.exception'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/utils/get-flat-entity-validation-error.util'; -import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-update-validation-args.type'; -import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/flat-entity-validation-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { type FailedFlatEntityValidation } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { getEmptyFlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/utils/get-flat-entity-validation-error.util'; +import { type FlatEntityUpdateValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-update-validation-args.type'; +import { type FlatEntityValidationArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/flat-entity-validation-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; export class FlatViewValidatorService { constructor() {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-name-uniqueness.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-name-uniqueness.util.ts similarity index 87% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-name-uniqueness.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-name-uniqueness.util.ts index d9977e81b0a..00fcdc7c058 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-name-uniqueness.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-name-uniqueness.util.ts @@ -2,7 +2,7 @@ import { msg, t } from '@lingui/core/macro'; import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception'; import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateAgentNameUniqueness = ({ name, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-required-properties.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-required-properties.util.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-required-properties.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-required-properties.util.ts index 9d4b4ef3a3b..543a0842ee4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-required-properties.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-required-properties.util.ts @@ -3,7 +3,7 @@ import { isNonEmptyString } from '@sniptt/guards'; import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception'; import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; type ValidateAgentRequiredPropertiesArgs = { flatAgent: FlatAgent; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-response-format.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-response-format.util.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-response-format.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-response-format.util.ts index 935c84faa5b..6e6edd5ffeb 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-agent-response-format.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-agent-response-format.util.ts @@ -3,10 +3,10 @@ import { isDefined } from 'twenty-shared/utils'; import { AgentExceptionCode } from 'src/engine/metadata-modules/ai/ai-agent/agent.exception'; import { - type AgentResponseFormat, type AgentJsonResponseFormat, + type AgentResponseFormat, } from 'src/engine/metadata-modules/ai/ai-agent/types/agent-response-format.type'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateAgentResponseFormat = ({ responseFormat, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-assignation-availability.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-assignation-availability.util.ts similarity index 94% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-assignation-availability.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-assignation-availability.util.ts index 9382ccee766..99a6ebb6abe 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-assignation-availability.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-assignation-availability.util.ts @@ -4,7 +4,7 @@ import { isDefined } from 'class-validator'; import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type'; import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; import { RoleTargetExceptionCode } from 'src/engine/metadata-modules/role/exceptions/role-target.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; type ValidateFlatRoleTargetAssignationAvailabilityArgs = { flatRole: FlatRole; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-targets-only-one-entity.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-targets-only-one-entity.util.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-targets-only-one-entity.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-targets-only-one-entity.util.ts index 9ce0356665e..32b9414a839 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-flat-role-target-targets-only-one-entity.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-flat-role-target-targets-only-one-entity.util.ts @@ -3,7 +3,7 @@ import { isDefined } from 'twenty-shared/utils'; import { type FlatRoleTarget } from 'src/engine/metadata-modules/flat-role-target/types/flat-role-target.type'; import { RoleTargetExceptionCode } from 'src/engine/metadata-modules/role/exceptions/role-target.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateFlatRoleTargetTargetsOnlyOneEntity = ({ flatRoleTarget, 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/workspace-migration-builder/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts similarity index 91% rename from 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 rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts index 4ab61a023d3..5e5c66c6759 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/workspace-migration-builder/validators/utils/validate-label-identifier-field-metadata-id-flat-view-field.util.ts @@ -1,10 +1,10 @@ -import { t, msg } from '@lingui/core/macro'; +import { msg, t } from '@lingui/core/macro'; import { isDefined } from 'twenty-shared/utils'; 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'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; type ValidateLabelIdentifierFieldMetadataIdFlatViewFieldArgs = { otherFlatViewFields: FlatViewField[]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-is-editable.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-is-editable.util.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-is-editable.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-is-editable.util.ts index 37f44127641..db6558a3ed3 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-is-editable.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-is-editable.util.ts @@ -5,8 +5,8 @@ import { PermissionsExceptionCode, PermissionsExceptionMessage, } from 'src/engine/metadata-modules/permissions/permissions.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; -import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-builder-options.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; +import { type WorkspaceMigrationBuilderOptions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-builder-options.type'; export const validateRoleIsEditable = ({ flatRole, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-label-uniqueness.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-label-uniqueness.util.ts similarity index 88% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-label-uniqueness.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-label-uniqueness.util.ts index 8db572b8981..82ddb447eae 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-label-uniqueness.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-label-uniqueness.util.ts @@ -5,7 +5,7 @@ import { PermissionsExceptionCode, PermissionsExceptionMessage, } from 'src/engine/metadata-modules/permissions/permissions.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateRoleLabelUniqueness = ({ label, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-read-write-permissions-consistency.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-read-write-permissions-consistency.util.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-read-write-permissions-consistency.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-read-write-permissions-consistency.util.ts index e3c86016f4a..fac6634ef5b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-read-write-permissions-consistency.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-read-write-permissions-consistency.util.ts @@ -5,7 +5,7 @@ import { PermissionsExceptionCode, PermissionsExceptionMessage, } from 'src/engine/metadata-modules/permissions/permissions.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateRoleReadWritePermissionsConsistency = ({ flatRole, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-required-properties-are-defined.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-required-properties-are-defined.util.ts similarity index 90% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-required-properties-are-defined.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-required-properties-are-defined.util.ts index 44ee59d1597..fc02504e360 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-role-required-properties-are-defined.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-role-required-properties-are-defined.util.ts @@ -4,7 +4,7 @@ import { isDefined } from 'twenty-shared/utils'; import { FLAT_ROLE_REQUIRED_PROPERTIES } from 'src/engine/metadata-modules/flat-role/constants/flat-role-required-properties.constants'; import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; import { PermissionsExceptionCode } from 'src/engine/metadata-modules/permissions/permissions.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateRoleRequiredPropertiesAreDefined = ({ flatRole, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-name-uniqueness.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-name-uniqueness.util.ts similarity index 87% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-name-uniqueness.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-name-uniqueness.util.ts index bfb7f74f90f..1799826e93c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-name-uniqueness.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-name-uniqueness.util.ts @@ -1,8 +1,8 @@ import { msg, t } from '@lingui/core/macro'; -import { SkillExceptionCode } from 'src/engine/metadata-modules/skill/skill.exception'; import { type FlatSkill } from 'src/engine/metadata-modules/flat-skill/types/flat-skill.type'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { SkillExceptionCode } from 'src/engine/metadata-modules/skill/skill.exception'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateSkillNameUniqueness = ({ name, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-required-properties.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-required-properties.util.ts similarity index 92% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-required-properties.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-required-properties.util.ts index 5fdd019f2b9..d6a476e7b51 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/utils/validate-skill-required-properties.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/utils/validate-skill-required-properties.util.ts @@ -3,7 +3,7 @@ import { isNonEmptyString } from '@sniptt/guards'; import { type FlatSkill } from 'src/engine/metadata-modules/flat-skill/types/flat-skill.type'; import { SkillExceptionCode } from 'src/engine/metadata-modules/skill/skill.exception'; -import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/types/failed-flat-entity-validation.type'; +import { type FlatEntityValidationError } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/types/failed-flat-entity-validation.type'; export const validateSkillLabelIsDefined = ({ flatSkill, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/workspace-migration-builder-validators.module.ts similarity index 57% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/workspace-migration-builder-validators.module.ts index bf9cb5701a4..318f53b2ab7 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/workspace-migration-builder-validators.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/workspace-migration-builder-validators.module.ts @@ -3,27 +3,27 @@ import { Module } from '@nestjs/common'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service'; import { FlatPageLayoutWidgetTypeValidatorService } from 'src/engine/metadata-modules/flat-page-layout-widget/services/flat-page-layout-widget-type-validator.service'; -import { FlatAgentValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-agent-validator.service'; -import { FlatCronTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-cron-trigger-validator.service'; -import { FlatDatabaseEventTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-database-event-trigger-validator.service'; -import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-field-metadata-validator.service'; -import { FlatIndexValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-index-metadata-validator.service'; -import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-object-metadata-validator.service'; -import { FlatPageLayoutTabValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-tab-validator.service'; -import { FlatPageLayoutValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-validator.service'; -import { FlatPageLayoutWidgetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-page-layout-widget-validator.service'; -import { FlatRoleTargetValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-target-validator.service'; -import { FlatRoleValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-role-validator.service'; -import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-route-trigger-validator.service'; -import { FlatRowLevelPermissionPredicateGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-group-validator.service'; -import { FlatRowLevelPermissionPredicateValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-row-level-permission-predicate-validator.service'; -import { FlatServerlessFunctionValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-serverless-function-validator.service'; -import { FlatSkillValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-skill-validator.service'; -import { FlatViewFieldValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-field-validator.service'; -import { FlatViewFilterGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-group-validator.service'; -import { FlatViewFilterValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-filter-validator.service'; -import { FlatViewGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-group-validator.service'; -import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/validators/services/flat-view-validator.service'; +import { FlatAgentValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-agent-validator.service'; +import { FlatCronTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-cron-trigger-validator.service'; +import { FlatDatabaseEventTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-database-event-trigger-validator.service'; +import { FlatFieldMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-field-metadata-validator.service'; +import { FlatIndexValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-index-metadata-validator.service'; +import { FlatObjectMetadataValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-object-metadata-validator.service'; +import { FlatPageLayoutTabValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-tab-validator.service'; +import { FlatPageLayoutValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-validator.service'; +import { FlatPageLayoutWidgetValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-page-layout-widget-validator.service'; +import { FlatRoleTargetValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-target-validator.service'; +import { FlatRoleValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-role-validator.service'; +import { FlatRouteTriggerValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-route-trigger-validator.service'; +import { FlatRowLevelPermissionPredicateGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-group-validator.service'; +import { FlatRowLevelPermissionPredicateValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-row-level-permission-predicate-validator.service'; +import { FlatServerlessFunctionValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-serverless-function-validator.service'; +import { FlatSkillValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-skill-validator.service'; +import { FlatViewFieldValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-field-validator.service'; +import { FlatViewFilterGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-group-validator.service'; +import { FlatViewFilterValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-filter-validator.service'; +import { FlatViewGroupValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-group-validator.service'; +import { FlatViewValidatorService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/services/flat-view-validator.service'; @Module({ imports: [FeatureFlagModule], diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/workspace-migration-builder.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/workspace-migration-builder.module.ts new file mode 100644 index 00000000000..5323879d714 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-builder/workspace-migration-builder.module.ts @@ -0,0 +1,79 @@ +import { Module } from '@nestjs/common'; + +import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; +import { FlatFieldMetadataTypeValidatorService } from 'src/engine/metadata-modules/flat-field-metadata/services/flat-field-metadata-type-validator.service'; +import { WorkspaceMigrationAgentActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/workspace-migration-agent-actions-builder.service'; +import { WorkspaceMigrationCronTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/workspace-migration-cron-trigger-action-builder.service'; +import { WorkspaceMigrationDatabaseEventTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/workspace-migration-database-event-trigger-actions-builder.service'; +import { WorkspaceMigrationFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/workspace-migration-field-actions-builder.service'; +import { WorkspaceMigrationIndexActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/workspace-migration-index-actions-builder.service'; +import { WorkspaceMigrationObjectActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/workspace-migration-object-actions-builder.service'; +import { WorkspaceMigrationPageLayoutTabActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/workspace-migration-page-layout-tab-actions-builder.service'; +import { WorkspaceMigrationPageLayoutWidgetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/workspace-migration-page-layout-widget-actions-builder.service'; +import { WorkspaceMigrationPageLayoutActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/workspace-migration-page-layout-actions-builder.service'; +import { WorkspaceMigrationRoleTargetActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/workspace-migration-role-target-actions-builder.service'; +import { WorkspaceMigrationRoleActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/workspace-migration-role-actions-builder.service'; +import { WorkspaceMigrationRouteTriggerActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/workspace-migration-route-trigger-actions-builder.service'; +import { WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/workspace-migration-row-level-permission-predicate-group-actions-builder.service'; +import { WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/workspace-migration-row-level-permission-predicate-actions-builder.service'; +import { WorkspaceMigrationServerlessFunctionActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/workspace-migration-serverless-function-actions-builder.service'; +import { WorkspaceMigrationSkillActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/workspace-migration-skill-actions-builder.service'; +import { WorkspaceMigrationViewFieldActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/workspace-migration-view-field-actions-builder.service'; +import { WorkspaceMigrationViewFilterGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/workspace-migration-view-filter-group-actions-builder.service'; +import { WorkspaceMigrationViewFilterActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/workspace-migration-view-filter-actions-builder.service'; +import { WorkspaceMigrationViewGroupActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/workspace-migration-view-group-actions-builder.service'; +import { WorkspaceMigrationViewActionsBuilderService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/workspace-migration-view-actions-builder.service'; +import { WorkspaceMigrationBuilderValidatorsModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/validators/workspace-migration-builder-validators.module'; + +@Module({ + imports: [FeatureFlagModule, WorkspaceMigrationBuilderValidatorsModule], + providers: [ + FlatFieldMetadataTypeValidatorService, + WorkspaceMigrationObjectActionsBuilderService, + WorkspaceMigrationViewActionsBuilderService, + WorkspaceMigrationViewFieldActionsBuilderService, + WorkspaceMigrationViewFilterActionsBuilderService, + WorkspaceMigrationViewFilterGroupActionsBuilderService, + WorkspaceMigrationViewGroupActionsBuilderService, + WorkspaceMigrationIndexActionsBuilderService, + WorkspaceMigrationServerlessFunctionActionsBuilderService, + WorkspaceMigrationDatabaseEventTriggerActionsBuilderService, + WorkspaceMigrationFieldActionsBuilderService, + WorkspaceMigrationCronTriggerActionsBuilderService, + WorkspaceMigrationRouteTriggerActionsBuilderService, + WorkspaceMigrationRoleActionsBuilderService, + WorkspaceMigrationRoleTargetActionsBuilderService, + WorkspaceMigrationAgentActionsBuilderService, + WorkspaceMigrationSkillActionsBuilderService, + WorkspaceMigrationPageLayoutActionsBuilderService, + WorkspaceMigrationPageLayoutWidgetActionsBuilderService, + WorkspaceMigrationPageLayoutTabActionsBuilderService, + WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService, + WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService, + ], + exports: [ + WorkspaceMigrationViewActionsBuilderService, + WorkspaceMigrationIndexActionsBuilderService, + WorkspaceMigrationObjectActionsBuilderService, + WorkspaceMigrationViewFieldActionsBuilderService, + WorkspaceMigrationViewFilterActionsBuilderService, + WorkspaceMigrationViewFilterGroupActionsBuilderService, + WorkspaceMigrationViewGroupActionsBuilderService, + WorkspaceMigrationFieldActionsBuilderService, + WorkspaceMigrationServerlessFunctionActionsBuilderService, + WorkspaceMigrationDatabaseEventTriggerActionsBuilderService, + WorkspaceMigrationCronTriggerActionsBuilderService, + WorkspaceMigrationRouteTriggerActionsBuilderService, + WorkspaceMigrationRoleActionsBuilderService, + WorkspaceMigrationRoleTargetActionsBuilderService, + WorkspaceMigrationAgentActionsBuilderService, + WorkspaceMigrationSkillActionsBuilderService, + WorkspaceMigrationPageLayoutActionsBuilderService, + WorkspaceMigrationPageLayoutWidgetActionsBuilderService, + WorkspaceMigrationPageLayoutTabActionsBuilderService, + WorkspaceMigrationRowLevelPermissionPredicateActionsBuilderService, + WorkspaceMigrationRowLevelPermissionPredicateGroupActionsBuilderService, + FlatFieldMetadataTypeValidatorService, + ], +}) +export class WorkspaceMigrationBuilderModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/create-agent-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/create-agent-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/create-agent-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/create-agent-action-handler.service.ts index ec2309b223f..b4cc7b78cda 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/create-agent-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/create-agent-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; -import { CreateAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { CreateAgentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateAgentActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/delete-agent-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/delete-agent-action-handler.service.ts similarity index 71% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/delete-agent-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/delete-agent-action-handler.service.ts index 5845d4b237a..353d7d1c926 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/delete-agent-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/delete-agent-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; -import { DeleteAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { DeleteAgentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteAgentActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/update-agent-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/update-agent-action-handler.service.ts similarity index 67% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/update-agent-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/update-agent-action-handler.service.ts index 199f4c62540..cea153c74fc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/agent/services/update-agent-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/update-agent-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; -import { UpdateAgentAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/agent/types/workspace-migration-v2-agent-action-builder.service'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateAgentAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/agent/types/workspace-migration-agent-action-builder.service'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateAgentActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service.ts similarity index 70% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service.ts index 9577094f71f..45bf58b4021 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { CronTriggerEntity } from 'src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity'; -import { CreateCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-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 { CreateCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateCronTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service.ts similarity index 70% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service.ts index dd39cbdd6a6..3469677c914 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { CronTriggerEntity } from 'src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity'; -import { DeleteCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-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 { DeleteCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteCronTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service.ts similarity index 65% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service.ts index 9d8f980af8c..b3ac28c07ac 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { CronTriggerEntity } from 'src/engine/metadata-modules/cron-trigger/entities/cron-trigger.entity'; -import { UpdateCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/cron-trigger/types/workspace-migration-cron-trigger-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateCronTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/cron-trigger/types/workspace-migration-cron-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateCronTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service.ts similarity index 71% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service.ts index 601dfbb0cd8..4adbc41f905 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { DatabaseEventTriggerEntity } from 'src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity'; -import { CreateDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-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 { CreateDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateDatabaseEventTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service.ts similarity index 70% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service.ts index f3473d9c35c..0059541d133 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { DatabaseEventTriggerEntity } from 'src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity'; -import { DeleteDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-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 { DeleteDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteDatabaseEventTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service.ts similarity index 66% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service.ts index 26aa5ab8280..94ee8020aaa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { DatabaseEventTriggerEntity } from 'src/engine/metadata-modules/database-event-trigger/entities/database-event-trigger.entity'; -import { UpdateDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateDatabaseEventTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/database-event-trigger/types/workspace-migration-database-event-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateDatabaseEventTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/create-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/create-field-action-handler.service.ts similarity index 84% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/create-field-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/create-field-action-handler.service.ts index 718ee3abfae..29b428100c8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/create-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/create-field-action-handler.service.ts @@ -3,23 +3,23 @@ import { Injectable } from '@nestjs/common'; import { RelationType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; -import { convertOnDeleteActionToOnDelete } from 'src/engine/workspace-manager/workspace-migration-runner/utils/convert-on-delete-action-to-on-delete.util'; -import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +import { convertOnDeleteActionToOnDelete } from 'src/engine/workspace-manager/workspace-migration/utils/convert-on-delete-action-to-on-delete.util'; +import { type CreateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; import { collectEnumOperationsForField, EnumOperation, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; @Injectable() export class CreateFieldActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/delete-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/delete-field-action-handler.service.ts similarity index 80% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/delete-field-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/delete-field-action-handler.service.ts index effd929622b..9974fb2f620 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/delete-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/delete-field-action-handler.service.ts @@ -2,20 +2,20 @@ import { Injectable } from '@nestjs/common'; import { In } from 'typeorm'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +import { type DeleteFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; import { collectEnumOperationsForField, EnumOperation, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; @Injectable() export class DeleteFieldActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/update-field-action-handler.service.ts similarity index 89% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/update-field-action-handler.service.ts index 429f3321033..09816ad5413 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/field/services/update-field-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/update-field-action-handler.service.ts @@ -4,7 +4,7 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { ColumnType, type QueryRunner } from 'typeorm'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { computeCompositeColumnName } from 'src/engine/metadata-modules/field-metadata/utils/compute-column-name.util'; @@ -17,27 +17,27 @@ import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-f import { isEnumFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-enum-flat-field-metadata.util'; import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util'; import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; import { isMorphOrRelationFieldMetadataType } from 'src/engine/utils/is-morph-or-relation-field-metadata-type.util'; -import { PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/types/property-update.type'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { isPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/is-property-update.util'; -import { type UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/field/types/workspace-migration-field-action-v2'; -import { serializeDefaultValueV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/serialize-default-value-v2.util'; +import { PropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/types/property-update.type'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { isPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/is-property-update.util'; +import { type UpdateFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/field/types/workspace-migration-field-action'; +import { serializeDefaultValue } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/utils/serialize-default-value.util'; import { WorkspaceMigrationRunnerException, WorkspaceMigrationRunnerExceptionCode, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; -import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fieldMetadataTypeToColumnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/field-metadata-type-to-column-type.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; import { collectEnumOperationsForField, EnumOperation, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; type UpdateFieldPropertyUpdateHandlerArgs< P extends FlatEntityPropertiesToCompare<'fieldMetadata'>, @@ -315,7 +315,7 @@ export class UpdateFieldActionHandlerService extends WorkspaceMigrationRunnerAct // @ts-expect-error - TODO: fix this let compositeDefaultValue = update.to?.[property.name]; // not valid should be serialized - const serializedNewDefaultValue = serializeDefaultValueV2({ + const serializedNewDefaultValue = serializeDefaultValue({ columnName: compositeColumnName, schemaName, tableName, @@ -341,7 +341,7 @@ export class UpdateFieldActionHandlerService extends WorkspaceMigrationRunnerAct flatFieldMetadata.type, ) as ColumnType; - const serializedNewDefaultValue = serializeDefaultValueV2({ + const serializedNewDefaultValue = serializeDefaultValue({ columnName: flatFieldMetadata.name, schemaName, tableName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/create-index-action-handler.service.ts similarity index 77% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/create-index-action-handler.service.ts index b6ad9c4c4e5..0afa64c0afe 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/create-index-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/create-index-action-handler.service.ts @@ -1,15 +1,15 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { type CreateIndexAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2'; +import { type CreateIndexAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action'; import { createIndexInWorkspaceSchema, insertIndexMetadata, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/utils/index-action-handler.utils'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/utils/index-action-handler.utils'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateIndexActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/delete-index-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/delete-index-action-handler.service.ts similarity index 78% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/delete-index-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/delete-index-action-handler.service.ts index c72b34cdb43..82fbf960536 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/delete-index-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/delete-index-action-handler.service.ts @@ -1,16 +1,16 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; -import { type DeleteIndexAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2'; +import { type DeleteIndexAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action'; import { deleteIndexMetadata, dropIndexFromWorkspaceSchema, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/utils/index-action-handler.utils'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/utils/index-action-handler.utils'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteIndexActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/update-index-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/update-index-action-handler.service.ts similarity index 83% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/update-index-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/update-index-action-handler.service.ts index 1c394c9f63d..9d3288bc244 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/services/update-index-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/update-index-action-handler.service.ts @@ -1,18 +1,18 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; -import { type UpdateIndexAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/index/types/workspace-migration-index-action-v2'; +import { type UpdateIndexAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/index/types/workspace-migration-index-action'; import { createIndexInWorkspaceSchema, deleteIndexMetadata, dropIndexFromWorkspaceSchema, insertIndexMetadata, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/utils/index-action-handler.utils'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/utils/index-action-handler.utils'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class UpdateIndexActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/utils/index-action-handler.utils.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/utils/index-action-handler.utils.ts similarity index 98% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/utils/index-action-handler.utils.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/utils/index-action-handler.utils.ts index a53cf42085d..a1ef9c2c1cc 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/index/utils/index-action-handler.utils.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/utils/index-action-handler.utils.ts @@ -1,6 +1,6 @@ -import { type QueryRunner } from 'typeorm'; import { compositeTypeDefinitions } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; +import { type QueryRunner } from 'typeorm'; import { WorkspaceQueryRunnerException, @@ -24,7 +24,7 @@ import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; import { type WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; export const computeFlatIndexFieldColumnNames = ({ flatIndexFieldMetadatas, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/create-object-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/create-object-action-handler.service.ts similarity index 83% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/create-object-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/create-object-action-handler.service.ts index fa57b557cd9..3edc07879c5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/create-object-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/create-object-action-handler.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; @@ -8,15 +8,15 @@ import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-f import { isEnumFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-enum-flat-field-metadata.util'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { type CreateObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +import { type CreateObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; import { collectEnumOperationsForObject, EnumOperation, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; @Injectable() export class CreateObjectActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/delete-object-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/delete-object-action-handler.service.ts similarity index 83% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/delete-object-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/delete-object-action-handler.service.ts index 6cf9ab345fc..a44815d90f5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/delete-object-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/delete-object-action-handler.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; @@ -8,14 +8,14 @@ import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-f import { isEnumFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-enum-flat-field-metadata.util'; import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { type DeleteObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +import { type DeleteObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; import { collectEnumOperationsForObject, EnumOperation, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; @Injectable() export class DeleteObjectActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/update-object-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/update-object-action-handler.service.ts similarity index 83% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/update-object-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/update-object-action-handler.service.ts index f8e81062dd0..c9919c43081 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/object/services/update-object-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/update-object-action-handler.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { isDefined } from 'twenty-shared/utils'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { findManyFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-many-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; @@ -12,16 +12,16 @@ import { FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-meta import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; import { computeObjectTargetTable } from 'src/engine/utils/compute-object-target-table.util'; -import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration-v2/utils/find-flat-entity-property-update.util'; -import { type UpdateObjectAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/object/types/workspace-migration-object-action-v2'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +import { findFlatEntityPropertyUpdate } from 'src/engine/workspace-manager/workspace-migration/utils/find-flat-entity-property-update.util'; +import { type UpdateObjectAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/object/types/workspace-migration-object-action'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; import { collectEnumOperationsForObject, EnumOperation, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; @Injectable() export class UpdateObjectActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts similarity index 73% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts index edf90329886..8736616c9ac 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity'; -import { CreatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { CreatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreatePageLayoutTabActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts similarity index 73% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts index 3d75a470359..7a8e0e441ce 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity'; -import { DeletePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { DeletePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeletePageLayoutTabActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts index e20f62e3e98..195f30f0e0b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutTabEntity } from 'src/engine/metadata-modules/page-layout-tab/entities/page-layout-tab.entity'; -import { UpdatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdatePageLayoutTabAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-tab/types/workspace-migration-page-layout-tab-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdatePageLayoutTabActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts similarity index 73% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts index 291891b70a9..808a0aaf0f0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity'; -import { CreatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { CreatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreatePageLayoutWidgetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts index 1306915323b..5b0e4f1616e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity'; -import { DeletePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { DeletePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeletePageLayoutWidgetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts similarity index 70% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts index 65347a0bcc3..b8db8750db2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutWidgetEntity } from 'src/engine/metadata-modules/page-layout-widget/entities/page-layout-widget.entity'; -import { UpdatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdatePageLayoutWidgetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout-widget/types/workspace-migration-page-layout-widget-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdatePageLayoutWidgetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts similarity index 73% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts index aaf3fb5e600..439352d60ad 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/create-page-layout-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; -import { CreatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { CreatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreatePageLayoutActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts index 7e173bf7715..d429e29e334 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/delete-page-layout-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; -import { DeletePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { DeletePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeletePageLayoutActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts index ecb16e9cf71..9d574191dae 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/update-page-layout-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { PageLayoutEntity } from 'src/engine/metadata-modules/page-layout/entities/page-layout.entity'; -import { UpdatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/page-layout/types/workspace-migration-page-layout-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdatePageLayoutAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/page-layout/types/workspace-migration-page-layout-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdatePageLayoutActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/create-role-target-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/create-role-target-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/create-role-target-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/create-role-target-action-handler.service.ts index e68bf55c10c..4c496fa6558 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/create-role-target-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/create-role-target-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; -import { CreateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-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 { CreateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateRoleTargetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/delete-role-target-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/delete-role-target-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/delete-role-target-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/delete-role-target-action-handler.service.ts index 8dc6d54cd12..bbf7f1414bd 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/delete-role-target-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/delete-role-target-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; -import { DeleteRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-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 { DeleteRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteRoleTargetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/update-role-target-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/update-role-target-action-handler.service.ts similarity index 67% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/update-role-target-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/update-role-target-action-handler.service.ts index 08c91e705ef..248bcaf3c68 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role-target/services/update-role-target-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/update-role-target-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; -import { UpdateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role-target/types/workspace-migration-role-target-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateRoleTargetAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role-target/types/workspace-migration-role-target-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateRoleTargetActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/create-role-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/create-role-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/create-role-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/create-role-action-handler.service.ts index d634fff950a..aaa6347edc2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/create-role-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/create-role-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { CreateRoleAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-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 { CreateRoleAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateRoleActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/delete-role-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/delete-role-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/delete-role-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/delete-role-action-handler.service.ts index 9a0d682be6c..e0ec078248e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/delete-role-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/delete-role-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { DeleteRoleAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-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 { DeleteRoleAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteRoleActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/update-role-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/update-role-action-handler.service.ts similarity index 67% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/update-role-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/update-role-action-handler.service.ts index 1244b15a40e..ff9c847109d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/role/services/update-role-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/update-role-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { UpdateRoleAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/role/types/workspace-migration-role-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateRoleAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/role/types/workspace-migration-role-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateRoleActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/create-route-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/create-route-trigger-action-handler.service.ts similarity index 70% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/create-route-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/create-route-trigger-action-handler.service.ts index 0bf9dddfab2..ffb4823e03c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/create-route-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/create-route-trigger-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity'; -import { CreateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-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 { CreateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateRouteTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service.ts similarity index 69% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service.ts index cccdce1a1c3..349adb49d11 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity'; -import { DeleteRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-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 { DeleteRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteRouteTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/update-route-trigger-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/update-route-trigger-action-handler.service.ts similarity index 65% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/update-route-trigger-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/update-route-trigger-action-handler.service.ts index cdffa08c6ac..a9ad7a47017 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/route-trigger/services/update-route-trigger-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/update-route-trigger-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RouteTriggerEntity } from 'src/engine/metadata-modules/route-trigger/route-trigger.entity'; -import { UpdateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/route-trigger/types/workspace-migration-route-trigger-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateRouteTriggerAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/route-trigger/types/workspace-migration-route-trigger-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateRouteTriggerActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service.ts index 57f248adb0d..8da47183f3b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service.ts @@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity'; -import { CreateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-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 { CreateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateRowLevelPermissionPredicateGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service.ts index 5cd9b65536d..be93609cbe8 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service.ts @@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity'; -import { DeleteRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-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 { DeleteRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteRowLevelPermissionPredicateGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service.ts index 1779647085d..6a05fb630c5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service.ts @@ -2,12 +2,12 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RowLevelPermissionPredicateGroupEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate-group.entity'; -import { UpdateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateRowLevelPermissionPredicateGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate-group/types/workspace-migration-row-level-permission-predicate-group-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateRowLevelPermissionPredicateGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service.ts index 65cd9200483..bed7b456120 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service.ts @@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity'; -import { CreateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-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 { CreateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateRowLevelPermissionPredicateActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service.ts index b4d3d44f9ec..0a7605f0f95 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service.ts @@ -2,11 +2,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity'; -import { DeleteRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-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 { DeleteRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteRowLevelPermissionPredicateActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service.ts index b52d214333f..0e250e041b4 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service.ts @@ -2,12 +2,12 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { RowLevelPermissionPredicateEntity } from 'src/engine/metadata-modules/row-level-permission-predicate/entities/row-level-permission-predicate.entity'; -import { UpdateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateRowLevelPermissionPredicateAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/row-level-permission-predicate/types/workspace-migration-row-level-permission-predicate-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateRowLevelPermissionPredicateActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/create-serverless-function-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/create-serverless-function-action-handler.service.ts similarity index 84% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/create-serverless-function-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/create-serverless-function-action-handler.service.ts index c0f01f6d560..a0c310845fa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/create-serverless-function-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/create-serverless-function-action-handler.service.ts @@ -4,14 +4,14 @@ import { join } from 'path'; import { isDefined } from 'twenty-shared/utils'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service'; import { getBaseTypescriptProjectFiles } from 'src/engine/core-modules/serverless/drivers/utils/get-base-typescript-project-files'; import { getServerlessFolder } from 'src/engine/core-modules/serverless/utils/serverless-get-folder.utils'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { CreateServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-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 { CreateServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateServerlessFunctionActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service.ts similarity index 87% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service.ts index 11db974b35e..61bc655b953 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service.ts @@ -1,13 +1,13 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service'; import { getServerlessFolder } from 'src/engine/core-modules/serverless/utils/serverless-get-folder.utils'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; -import { DeleteServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-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 { DeleteServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteServerlessFunctionActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/update-serverless-function-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/update-serverless-function-action-handler.service.ts similarity index 84% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/update-serverless-function-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/update-serverless-function-action-handler.service.ts index e8f39efc600..df15270459f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/serverless-function/services/update-serverless-function-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/update-serverless-function-action-handler.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@nestjs/common'; -import { isDefined } from 'twenty-shared/utils'; import { type Sources } from 'twenty-shared/types'; +import { isDefined } from 'twenty-shared/utils'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service'; import { ServerlessService } from 'src/engine/core-modules/serverless/serverless.service'; @@ -11,9 +11,9 @@ import { getServerlessFolder } from 'src/engine/core-modules/serverless/utils/se import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { ServerlessFunctionEntity } from 'src/engine/metadata-modules/serverless-function/serverless-function.entity'; import { FlatServerlessFunction } from 'src/engine/metadata-modules/serverless-function/types/flat-serverless-function.type'; -import { UpdateServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/serverless-function/types/workspace-migration-serverless-function-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateServerlessFunctionAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/serverless-function/types/workspace-migration-serverless-function-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateServerlessFunctionActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/create-skill-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/create-skill-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/create-skill-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/create-skill-action-handler.service.ts index 64f9a19e704..6194c7b4566 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/create-skill-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/create-skill-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { SkillEntity } from 'src/engine/metadata-modules/skill/entities/skill.entity'; -import { CreateSkillAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { CreateSkillAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateSkillActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/delete-skill-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/delete-skill-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/delete-skill-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/delete-skill-action-handler.service.ts index deb0baee01c..e70080b78c7 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/delete-skill-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/delete-skill-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { SkillEntity } from 'src/engine/metadata-modules/skill/entities/skill.entity'; -import { DeleteSkillAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { DeleteSkillAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteSkillActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/update-skill-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/update-skill-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/update-skill-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/update-skill-action-handler.service.ts index 36f1f7391a8..56708d4fc5d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/skill/services/update-skill-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/update-skill-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { SkillEntity } from 'src/engine/metadata-modules/skill/entities/skill.entity'; -import { UpdateSkillAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/skill/types/workspace-migration-v2-skill-action.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateSkillAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/skill/types/workspace-migration-skill-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateSkillActionHandlerService extends WorkspaceMigrationRunnerActionHandler( 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/workspace-migration-runner/action-handlers/view-field/services/create-view-field-action-handler.service.ts similarity index 72% rename from 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 rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-field/services/create-view-field-action-handler.service.ts index 7ed0337d244..700e44c9d1e 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/workspace-migration-runner/action-handlers/view-field/services/create-view-field-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; 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/builders/view-field/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 { CreateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateViewFieldActionHandlerService extends WorkspaceMigrationRunnerActionHandler( 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/workspace-migration-runner/action-handlers/view-field/services/delete-view-field-action-handler.service.ts similarity index 72% rename from 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 rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-field/services/delete-view-field-action-handler.service.ts index 728a08de469..37317188ddc 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/workspace-migration-runner/action-handlers/view-field/services/delete-view-field-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; 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/builders/view-field/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 { DeleteViewFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteViewFieldActionHandlerService extends WorkspaceMigrationRunnerActionHandler( 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/workspace-migration-runner/action-handlers/view-field/services/update-view-field-action-handler.service.ts similarity index 68% rename from 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 rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-field/services/update-view-field-action-handler.service.ts index 5de989bcfea..a61e8748aed 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/workspace-migration-runner/action-handlers/view-field/services/update-view-field-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; 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/builders/view-field/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 { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateViewFieldAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-field/types/workspace-migration-view-field-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateViewFieldActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service.ts index 1d75ada3e0d..852028f01c0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; -import { type CreateViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { type CreateViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateViewFilterGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service.ts index e7c19704c5b..a04ee89e519 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; -import { type DeleteViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +import { type DeleteViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteViewFilterGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service.ts index 1459b62575e..e32f6e23970 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewFilterGroupEntity } from 'src/engine/metadata-modules/view-filter-group/entities/view-filter-group.entity'; -import { type UpdateViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter-group/types/workspace-migration-view-filter-group-action-v2.type'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { type UpdateViewFilterGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter-group/types/workspace-migration-view-filter-group-action.type'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateViewFilterGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/create-view-filter-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/create-view-filter-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/create-view-filter-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/create-view-filter-action-handler.service.ts index f6c682c6e6d..7f25b4fe5ed 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/create-view-filter-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/create-view-filter-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; -import { CreateViewFilterAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-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 { CreateViewFilterAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateViewFilterActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/delete-view-filter-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/delete-view-filter-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/delete-view-filter-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/delete-view-filter-action-handler.service.ts index 886ba6906cb..84e4476ff7a 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/delete-view-filter-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/delete-view-filter-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; -import { DeleteViewFilterAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-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 { DeleteViewFilterAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteViewFilterActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/update-view-filter-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/update-view-filter-action-handler.service.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/update-view-filter-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/update-view-filter-action-handler.service.ts index f16eaca2797..67bcb04fada 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-filter/services/update-view-filter-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/update-view-filter-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewFilterEntity } from 'src/engine/metadata-modules/view-filter/entities/view-filter.entity'; -import { UpdateViewFilterAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-filter/types/workspace-migration-view-filter-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateViewFilterAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-filter/types/workspace-migration-view-filter-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateViewFilterActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/create-view-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/create-view-group-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/create-view-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/create-view-group-action-handler.service.ts index 47606283c89..61edb518e90 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/create-view-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/create-view-group-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; -import { CreateViewGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-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 { CreateViewGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateViewGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/delete-view-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/delete-view-group-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/delete-view-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/delete-view-group-action-handler.service.ts index c430e5f826a..b1668896f9f 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/delete-view-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/delete-view-group-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; -import { DeleteViewGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-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 { DeleteViewGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteViewGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/update-view-group-action-handler.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/update-view-group-action-handler.service.ts similarity index 67% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/update-view-group-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/update-view-group-action-handler.service.ts index 4e9c1825994..04469d23d5e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view-group/services/update-view-group-action-handler.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/update-view-group-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { ViewGroupEntity } from 'src/engine/metadata-modules/view-group/entities/view-group.entity'; -import { UpdateViewGroupAction } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/builders/view-group/types/workspace-migration-view-group-action-v2.type'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateViewGroupAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view-group/types/workspace-migration-view-group-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateViewGroupActionHandlerService extends WorkspaceMigrationRunnerActionHandler( 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/workspace-migration-runner/action-handlers/view/services/create-view-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/create-view-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view/services/create-view-action-handler.service.ts index 6e88d27eedf..a14c02bc18d 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/workspace-migration-runner/action-handlers/view/services/create-view-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; 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/builders/view/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 { CreateViewAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class CreateViewActionHandlerService extends WorkspaceMigrationRunnerActionHandler( 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/workspace-migration-runner/action-handlers/view/services/delete-view-action-handler.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/delete-view-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view/services/delete-view-action-handler.service.ts index ba0908e708b..98c3774bd57 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/workspace-migration-runner/action-handlers/view/services/delete-view-action-handler.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; 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/builders/view/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 { DeleteViewAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class DeleteViewActionHandlerService extends WorkspaceMigrationRunnerActionHandler( 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/workspace-migration-runner/action-handlers/view/services/update-view-action-handler.service.ts similarity index 67% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/view/services/update-view-action-handler.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view/services/update-view-action-handler.service.ts index ac45b2615a9..e1cd505f769 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/workspace-migration-runner/action-handlers/view/services/update-view-action-handler.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@nestjs/common'; -import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { WorkspaceMigrationRunnerActionHandler } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; 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/builders/view/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 { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { UpdateViewAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/builders/view/types/workspace-migration-view-action.type'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; @Injectable() export class UpdateViewActionHandlerService extends WorkspaceMigrationRunnerActionHandler( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts new file mode 100644 index 00000000000..df9d06ae548 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/workspace-schema-migration-runner-action-handlers.module.ts @@ -0,0 +1,156 @@ +import { Module } from '@nestjs/common'; + +import { WorkspaceSchemaManagerModule } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.module'; +import { CreateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/create-agent-action-handler.service'; +import { DeleteAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/delete-agent-action-handler.service'; +import { UpdateAgentActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/agent/services/update-agent-action-handler.service'; +import { CreateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/create-cron-trigger-action-handler.service'; +import { DeleteCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/delete-cron-trigger-action-handler.service'; +import { UpdateCronTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/cron-trigger/services/update-cron-trigger-action-handler.service'; +import { CreateDatabaseEventTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/create-database-event-trigger-action-handler.service'; +import { DeleteDatabaseEventTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/delete-database-event-trigger-action-handler.service'; +import { UpdateDatabaseEventTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/database-event-trigger/services/update-database-event-trigger-action-handler.service'; +import { CreateFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/create-field-action-handler.service'; +import { DeleteFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/delete-field-action-handler.service'; +import { UpdateFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/field/services/update-field-action-handler.service'; +import { CreateIndexActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/create-index-action-handler.service'; +import { DeleteIndexActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/delete-index-action-handler.service'; +import { UpdateIndexActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/index/services/update-index-action-handler.service'; +import { CreateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/create-object-action-handler.service'; +import { DeleteObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/delete-object-action-handler.service'; +import { UpdateObjectActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/object/services/update-object-action-handler.service'; +import { CreatePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/create-page-layout-tab-action-handler.service'; +import { DeletePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/delete-page-layout-tab-action-handler.service'; +import { UpdatePageLayoutTabActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-tab/services/update-page-layout-tab-action-handler.service'; +import { CreatePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/create-page-layout-widget-action-handler.service'; +import { DeletePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/delete-page-layout-widget-action-handler.service'; +import { UpdatePageLayoutWidgetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout-widget/services/update-page-layout-widget-action-handler.service'; +import { CreatePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/create-page-layout-action-handler.service'; +import { DeletePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/delete-page-layout-action-handler.service'; +import { UpdatePageLayoutActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/page-layout/services/update-page-layout-action-handler.service'; +import { CreateRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/create-role-target-action-handler.service'; +import { DeleteRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/delete-role-target-action-handler.service'; +import { UpdateRoleTargetActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role-target/services/update-role-target-action-handler.service'; +import { CreateRoleActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/create-role-action-handler.service'; +import { DeleteRoleActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/delete-role-action-handler.service'; +import { UpdateRoleActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/role/services/update-role-action-handler.service'; +import { CreateRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/create-route-trigger-action-handler.service'; +import { DeleteRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/delete-route-trigger-action-handler.service'; +import { UpdateRouteTriggerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/route-trigger/services/update-route-trigger-action-handler.service'; +import { CreateRowLevelPermissionPredicateGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/create-row-level-permission-predicate-group-action-handler.service'; +import { DeleteRowLevelPermissionPredicateGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/delete-row-level-permission-predicate-group-action-handler.service'; +import { UpdateRowLevelPermissionPredicateGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate-group/services/update-row-level-permission-predicate-group-action-handler.service'; +import { CreateRowLevelPermissionPredicateActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/create-row-level-permission-predicate-action-handler.service'; +import { DeleteRowLevelPermissionPredicateActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/delete-row-level-permission-predicate-action-handler.service'; +import { UpdateRowLevelPermissionPredicateActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/row-level-permission-predicate/services/update-row-level-permission-predicate-action-handler.service'; +import { CreateServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/create-serverless-function-action-handler.service'; +import { DeleteServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/delete-serverless-function-action-handler.service'; +import { UpdateServerlessFunctionActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/serverless-function/services/update-serverless-function-action-handler.service'; +import { CreateSkillActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/create-skill-action-handler.service'; +import { DeleteSkillActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/delete-skill-action-handler.service'; +import { UpdateSkillActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/skill/services/update-skill-action-handler.service'; +import { CreateViewFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-field/services/create-view-field-action-handler.service'; +import { DeleteViewFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-field/services/delete-view-field-action-handler.service'; +import { UpdateViewFieldActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-field/services/update-view-field-action-handler.service'; +import { CreateViewFilterGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/create-view-filter-group-action-handler.service'; +import { DeleteViewFilterGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/delete-view-filter-group-action-handler.service'; +import { UpdateViewFilterGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter-group/services/update-view-filter-group-action-handler.service'; +import { CreateViewFilterActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/create-view-filter-action-handler.service'; +import { DeleteViewFilterActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/delete-view-filter-action-handler.service'; +import { UpdateViewFilterActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-filter/services/update-view-filter-action-handler.service'; +import { CreateViewGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/create-view-group-action-handler.service'; +import { DeleteViewGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/delete-view-group-action-handler.service'; +import { UpdateViewGroupActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view-group/services/update-view-group-action-handler.service'; +import { CreateViewActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view/services/create-view-action-handler.service'; +import { DeleteViewActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view/services/delete-view-action-handler.service'; +import { UpdateViewActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/view/services/update-view-action-handler.service'; + +@Module({ + imports: [WorkspaceSchemaManagerModule], + providers: [ + CreateFieldActionHandlerService, + UpdateFieldActionHandlerService, + DeleteFieldActionHandlerService, + + CreateObjectActionHandlerService, + UpdateObjectActionHandlerService, + DeleteObjectActionHandlerService, + + CreateIndexActionHandlerService, + UpdateIndexActionHandlerService, + DeleteIndexActionHandlerService, + + CreateViewActionHandlerService, + UpdateViewActionHandlerService, + DeleteViewActionHandlerService, + + CreateViewFieldActionHandlerService, + UpdateViewFieldActionHandlerService, + DeleteViewFieldActionHandlerService, + + CreateViewFilterActionHandlerService, + UpdateViewFilterActionHandlerService, + DeleteViewFilterActionHandlerService, + + CreateViewFilterGroupActionHandlerService, + UpdateViewFilterGroupActionHandlerService, + DeleteViewFilterGroupActionHandlerService, + + CreateViewGroupActionHandlerService, + UpdateViewGroupActionHandlerService, + DeleteViewGroupActionHandlerService, + + CreateServerlessFunctionActionHandlerService, + DeleteServerlessFunctionActionHandlerService, + UpdateServerlessFunctionActionHandlerService, + + CreateDatabaseEventTriggerActionHandlerService, + DeleteDatabaseEventTriggerActionHandlerService, + UpdateDatabaseEventTriggerActionHandlerService, + + CreateCronTriggerActionHandlerService, + DeleteCronTriggerActionHandlerService, + UpdateCronTriggerActionHandlerService, + + CreateRouteTriggerActionHandlerService, + DeleteRouteTriggerActionHandlerService, + UpdateRouteTriggerActionHandlerService, + + CreateRoleActionHandlerService, + UpdateRoleActionHandlerService, + DeleteRoleActionHandlerService, + + CreateRoleTargetActionHandlerService, + DeleteRoleTargetActionHandlerService, + UpdateRoleTargetActionHandlerService, + + CreateAgentActionHandlerService, + UpdateAgentActionHandlerService, + DeleteAgentActionHandlerService, + + CreateSkillActionHandlerService, + UpdateSkillActionHandlerService, + DeleteSkillActionHandlerService, + + CreatePageLayoutActionHandlerService, + UpdatePageLayoutActionHandlerService, + DeletePageLayoutActionHandlerService, + + CreatePageLayoutWidgetActionHandlerService, + UpdatePageLayoutWidgetActionHandlerService, + DeletePageLayoutWidgetActionHandlerService, + + CreatePageLayoutTabActionHandlerService, + UpdatePageLayoutTabActionHandlerService, + DeletePageLayoutTabActionHandlerService, + + CreateRowLevelPermissionPredicateActionHandlerService, + UpdateRowLevelPermissionPredicateActionHandlerService, + DeleteRowLevelPermissionPredicateActionHandlerService, + + CreateRowLevelPermissionPredicateGroupActionHandlerService, + UpdateRowLevelPermissionPredicateGroupActionHandlerService, + DeleteRowLevelPermissionPredicateGroupActionHandlerService, + ], +}) +export class WorkspaceSchemaMigrationRunnerActionHandlersModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/constants/workspace-migration-action-handler-metadata-key.constant.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/constants/workspace-migration-action-handler-metadata-key.constant.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/constants/workspace-migration-action-handler-metadata-key.constant.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/constants/workspace-migration-action-handler-metadata-key.constant.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception.ts similarity index 92% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception.ts index 9e5725a798d..dc2ad09c36b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception.ts @@ -15,6 +15,7 @@ export const WorkspaceMigrationRunnerExceptionCode = appendCommonExceptionCode({ NOT_SUPPORTED: 'NOT_SUPPORTED', INVALID_ACTION_TYPE: 'INVALID_ACTION_TYPE', FLAT_ENTITY_NOT_FOUND: 'FLAT_ENTITY_NOT_FOUND', + UNSUPPORTED_FIELD_METADATA_TYPE: 'UNSUPPORTED_FIELD_METADATA_TYPE', } as const); const getWorkspaceMigrationRunnerExceptionUserFriendlyMessage = ( @@ -37,6 +38,8 @@ const getWorkspaceMigrationRunnerExceptionUserFriendlyMessage = ( return msg`Entity not found.`; case WorkspaceMigrationRunnerExceptionCode.INTERNAL_SERVER_ERROR: return msg`An unexpected error occurred.`; + case WorkspaceMigrationRunnerExceptionCode.UNSUPPORTED_FIELD_METADATA_TYPE: + return msg`Unsupported field metadata type.`; default: assertUnreachable(code); } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface.ts similarity index 82% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface.ts index 438e5667808..6cc3673acec 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface.ts @@ -10,16 +10,16 @@ import { MetadataToFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-en import { WorkspaceMigrationActionType } from 'src/engine/metadata-modules/flat-entity/types/metadata-workspace-migration-action.type'; import { buildActionHandlerKey, - type WorkspaceMigrationActionV2, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2'; -import { WORKSPACE_MIGRATION_ACTION_HANDLER_METADATA_KEY } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/constants/workspace-migration-action-handler-metadata-key.constant'; -import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; -import { optimisticallyApplyCreateActionOnAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-create-action-on-all-flat-entity-maps.util'; -import { optimisticallyApplyDeleteActionOnAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-delete-action-on-all-flat-entity-maps.util'; -import { optimisticallyApplyUpdateActionOnAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util'; + type WorkspaceMigrationAction, +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common'; +import { WORKSPACE_MIGRATION_ACTION_HANDLER_METADATA_KEY } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/constants/workspace-migration-action-handler-metadata-key.constant'; +import { type WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; +import { optimisticallyApplyCreateActionOnAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-create-action-on-all-flat-entity-maps.util'; +import { optimisticallyApplyDeleteActionOnAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-delete-action-on-all-flat-entity-maps.util'; +import { optimisticallyApplyUpdateActionOnAllFlatEntityMaps } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util'; type OptimisticallyApplyActionOnAllFlatEntityMapsArgs< - TActionType extends WorkspaceMigrationActionV2, + TActionType extends WorkspaceMigrationAction, > = Pick< WorkspaceMigrationActionRunnerArgs, 'allFlatEntityMaps' | 'action' @@ -29,7 +29,7 @@ export abstract class BaseWorkspaceMigrationRunnerActionHandlerService< TActionType extends WorkspaceMigrationActionType, TMetadataName extends AllMetadataName, TAction extends - WorkspaceMigrationActionV2 = AllFlatEntityTypesByMetadataName[TMetadataName]['actions'][TActionType], + WorkspaceMigrationAction = AllFlatEntityTypesByMetadataName[TMetadataName]['actions'][TActionType], > { public actionType: TActionType; public metadataName: TMetadataName; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/registry/workspace-migration-runner-action-handler-registry.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/registry/workspace-migration-runner-action-handler-registry.service.ts similarity index 72% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/registry/workspace-migration-runner-action-handler-registry.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/registry/workspace-migration-runner-action-handler-registry.service.ts index 09f6575f522..2072fa58a6d 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/registry/workspace-migration-runner-action-handler-registry.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/registry/workspace-migration-runner-action-handler-registry.service.ts @@ -3,21 +3,21 @@ import { DiscoveryService } from '@nestjs/core'; import { isDefined } from 'twenty-shared/utils'; -import { BaseWorkspaceMigrationRunnerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/interfaces/workspace-migration-runner-action-handler-service.interface'; +import { BaseWorkspaceMigrationRunnerActionHandlerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/interfaces/workspace-migration-runner-action-handler-service.interface'; import { AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; import { buildActionHandlerKey, type WorkspaceMigrationActionHandlerKey, - type WorkspaceMigrationActionV2, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2'; -import { WorkspaceSchemaMigrationRunnerActionHandlersModule } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module'; -import { WORKSPACE_MIGRATION_ACTION_HANDLER_METADATA_KEY } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/constants/workspace-migration-action-handler-metadata-key.constant'; + type WorkspaceMigrationAction, +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common'; +import { WorkspaceSchemaMigrationRunnerActionHandlersModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/workspace-schema-migration-runner-action-handlers.module'; +import { WORKSPACE_MIGRATION_ACTION_HANDLER_METADATA_KEY } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/constants/workspace-migration-action-handler-metadata-key.constant'; import { WorkspaceMigrationRunnerException, WorkspaceMigrationRunnerExceptionCode, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception'; -import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception'; +import { WorkspaceMigrationActionRunnerArgs } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type'; @Injectable() export class WorkspaceMigrationRunnerActionHandlerRegistryService @@ -56,7 +56,7 @@ export class WorkspaceMigrationRunnerActionHandlerRegistryService }); } - async executeActionHandler({ + async executeActionHandler({ action, context, rollback, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/services/workspace-migration-runner-v2.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts similarity index 94% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/services/workspace-migration-runner-v2.service.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts index 4fbfa31c6e3..072e0e0256b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/services/workspace-migration-runner-v2.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service.ts @@ -17,11 +17,11 @@ import { FIND_ALL_CORE_VIEWS_GRAPHQL_OPERATION } from 'src/engine/metadata-modul import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/services/workspace-metadata-version.service'; import { WorkspaceCacheStorageService } from 'src/engine/workspace-cache-storage/workspace-cache-storage.service'; import { WorkspaceCacheService } from 'src/engine/workspace-cache/services/workspace-cache.service'; -import { WorkspaceMigrationV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-v2'; -import { WorkspaceMigrationRunnerActionHandlerRegistryService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/registry/workspace-migration-runner-action-handler-registry.service'; +import { WorkspaceMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration'; +import { WorkspaceMigrationRunnerActionHandlerRegistryService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/registry/workspace-migration-runner-action-handler-registry.service'; @Injectable() -export class WorkspaceMigrationRunnerV2Service { +export class WorkspaceMigrationRunnerService { constructor( private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService, @InjectDataSource() @@ -36,7 +36,7 @@ export class WorkspaceMigrationRunnerV2Service { private getLegacyCacheInvalidationPromises({ workspaceMigration: { actions, workspaceId }, }: { - workspaceMigration: Omit; + workspaceMigration: Omit; }): Promise[] { const asyncOperations: Promise[] = []; const shouldIncrementMetadataGraphqlSchemaVersion = actions.some( @@ -108,7 +108,7 @@ export class WorkspaceMigrationRunnerV2Service { actions, workspaceId, relatedFlatEntityMapsKeys, - }: WorkspaceMigrationV2): Promise => { + }: WorkspaceMigration): Promise => { this.logger.time('Runner', 'Total execution'); this.logger.time('Runner', 'Initial cache retrieval'); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type.ts similarity index 59% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type.ts index 4ab73c60aa3..26f372fd3a6 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/types/workspace-migration-action-runner-args.type.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/types/workspace-migration-action-runner-args.type.ts @@ -1,10 +1,10 @@ import { type QueryRunner } from 'typeorm'; import { type AllFlatEntityMaps } from 'src/engine/metadata-modules/flat-entity/types/all-flat-entity-maps.type'; -import { type WorkspaceMigrationActionV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/types/workspace-migration-action-common-v2'; +import { type WorkspaceMigrationAction } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/types/workspace-migration-action-common'; export type WorkspaceMigrationActionRunnerArgs< - T extends WorkspaceMigrationActionV2, + T extends WorkspaceMigrationAction, > = { queryRunner: QueryRunner; action: T; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/__tests__/generate-column-definitions.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/__tests__/generate-column-definitions.util.spec.ts similarity index 99% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/__tests__/generate-column-definitions.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/__tests__/generate-column-definitions.util.spec.ts index 4800282a8e6..2ed8e998558 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/__tests__/generate-column-definitions.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/__tests__/generate-column-definitions.util.spec.ts @@ -3,7 +3,7 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock'; import { getFlatObjectMetadataMock } from 'src/engine/metadata-modules/flat-object-metadata/__mocks__/get-flat-object-metadata.mock'; import { getWorkspaceSchemaName } from 'src/engine/workspace-datasource/utils/get-workspace-schema-name.util'; -import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util'; +import { generateColumnDefinitions } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util'; describe('Generate Column Definitions', () => { const mockObjectMetadata = getFlatObjectMetadataMock({ diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/__tests__/workspace-schema-enum-operations.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/__tests__/workspace-schema-enum-operations.util.spec.ts similarity index 96% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/__tests__/workspace-schema-enum-operations.util.spec.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/__tests__/workspace-schema-enum-operations.util.spec.ts index 9364372d5bb..daa3ae5b7e1 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/__tests__/workspace-schema-enum-operations.util.spec.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/__tests__/workspace-schema-enum-operations.util.spec.ts @@ -3,13 +3,13 @@ import { type QueryRunner } from 'typeorm'; import { getFlatFieldMetadataMock } from 'src/engine/metadata-modules/flat-field-metadata/__mocks__/get-flat-field-metadata.mock'; import { type WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { WorkspaceMigrationRunnerException } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception'; +import { WorkspaceMigrationRunnerException } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception'; import { collectEnumOperationsForField, EnumOperation, type EnumOperationSpec, executeBatchEnumOperations, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util'; describe('WorkspaceSchemaEnumOperations', () => { let mockSchemaManagerService: jest.Mocked; diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/field-metadata-type-to-column-type.util.ts similarity index 71% rename from packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/field-metadata-type-to-column-type.util.ts index 8d03984769d..46f60c09a2a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/field-metadata-type-to-column-type.util.ts @@ -1,10 +1,10 @@ import { FieldMetadataType } from 'twenty-shared/types'; -import { isTextColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/is-text-column-type.util'; import { - WorkspaceMigrationException, - WorkspaceMigrationExceptionCode, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.exception'; + WorkspaceMigrationRunnerException, + WorkspaceMigrationRunnerExceptionCode, +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception'; +import { isTextColumnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/is-text-column-type.util'; export const fieldMetadataTypeToColumnType = ( fieldMetadataType: Type, @@ -40,9 +40,9 @@ export const fieldMetadataTypeToColumnType = ( case FieldMetadataType.TS_VECTOR: return 'tsvector'; default: - throw new WorkspaceMigrationException( + throw new WorkspaceMigrationRunnerException( `Cannot convert ${fieldMetadataType} to column type.`, - WorkspaceMigrationExceptionCode.INVALID_FIELD_METADATA, + WorkspaceMigrationRunnerExceptionCode.UNSUPPORTED_FIELD_METADATA_TYPE, ); } }; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util.ts similarity index 89% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util.ts index 048eb635c4f..2d754342bc2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/generate-column-definitions.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/generate-column-definitions.util.ts @@ -12,15 +12,15 @@ import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-f import { isFlatFieldMetadataOfType } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-flat-field-metadata-of-type.util'; import { isMorphOrRelationFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-morph-or-relation-flat-field-metadata.util'; import { type FlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/types/flat-object-metadata.type'; -import { fieldMetadataTypeToColumnType } from 'src/engine/metadata-modules/workspace-migration/utils/field-metadata-type-to-column-type.util'; import { type WorkspaceSchemaColumnDefinition } from 'src/engine/twenty-orm/workspace-schema-manager/types/workspace-schema-column-definition.type'; -import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util'; -import { serializeDefaultValueV2 } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/utils/serialize-default-value-v2.util'; +import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util'; +import { serializeDefaultValue } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/utils/serialize-default-value.util'; import { WorkspaceMigrationRunnerException, WorkspaceMigrationRunnerExceptionCode, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception'; -import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception'; +import { fieldMetadataTypeToColumnType } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/field-metadata-type-to-column-type.util'; +import { getWorkspaceSchemaContextForMigration } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util'; export const generateCompositeColumnDefinition = ({ compositeProperty, @@ -54,7 +54,7 @@ export const generateCompositeColumnDefinition = ({ // @ts-expect-error - TODO: fix this parentFieldMetadata.defaultValue?.[compositeProperty.name]; const columnType = fieldMetadataTypeToColumnType(compositeProperty.type); - const serializedDefaultValue = serializeDefaultValueV2({ + const serializedDefaultValue = serializeDefaultValue({ columnName, schemaName, tableName, @@ -139,7 +139,7 @@ const generateColumnDefinition = ({ const columnType = fieldMetadataTypeToColumnType( flatFieldMetadata.type, ) as ColumnType; - const serializedDefaultValue = serializeDefaultValueV2({ + const serializedDefaultValue = serializeDefaultValue({ columnName, schemaName, tableName, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/get-workspace-schema-context-for-migration.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/get-workspace-schema-context-for-migration.util.ts diff --git a/packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/is-text-column-type.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/is-text-column-type.util.ts similarity index 100% rename from packages/twenty-server/src/engine/metadata-modules/workspace-migration/utils/is-text-column-type.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/is-text-column-type.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-create-action-on-all-flat-entity-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-create-action-on-all-flat-entity-maps.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-create-action-on-all-flat-entity-maps.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-create-action-on-all-flat-entity-maps.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-delete-action-on-all-flat-entity-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-delete-action-on-all-flat-entity-maps.util.ts similarity index 100% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-delete-action-on-all-flat-entity-maps.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-delete-action-on-all-flat-entity-maps.util.ts diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util.ts similarity index 93% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util.ts index 55883a4d585..dc0bc7912c5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/optimistically-apply-update-action-on-all-flat-entity-maps.util.ts @@ -8,8 +8,8 @@ import { addFlatEntityToFlatEntityAndRelatedEntityMapsThroughMutationOrThrow } f import { deleteFlatEntityFromFlatEntityAndRelatedEntityMapsThroughMutationOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/delete-flat-entity-from-flat-entity-and-related-entity-maps-through-mutation-or-throw.util'; import { findFlatEntityByIdInFlatEntityMapsOrThrow } from 'src/engine/metadata-modules/flat-entity/utils/find-flat-entity-by-id-in-flat-entity-maps-or-throw.util'; import { getMetadataFlatEntityMapsKey } from 'src/engine/metadata-modules/flat-entity/utils/get-metadata-flat-entity-maps-key.util'; -import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration-v2/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; -import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; +import { replaceFlatEntityInFlatEntityMapsThroughMutationOrThrow } from 'src/engine/workspace-manager/workspace-migration/utils/replace-flat-entity-in-flat-entity-maps-through-mutation-or-throw.util'; +import { fromFlatEntityPropertiesUpdatesToPartialFlatEntity } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/from-flat-entity-properties-updates-to-partial-flat-entity'; type UpdateAction = AllFlatEntityTypesByMetadataName[TMetadataName]['actions']['update']; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util.ts similarity index 97% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util.ts index 0311de1cd44..318b0e5314c 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/utils/workspace-schema-enum-operations.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/utils/workspace-schema-enum-operations.util.ts @@ -10,11 +10,11 @@ import { type FlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-m import { isCompositeFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-composite-flat-field-metadata.util'; import { isEnumFlatFieldMetadata } from 'src/engine/metadata-modules/flat-field-metadata/utils/is-enum-flat-field-metadata.util'; import { type WorkspaceSchemaManagerService } from 'src/engine/twenty-orm/workspace-schema-manager/workspace-schema-manager.service'; -import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration-runner/utils/compute-postgres-enum-name.util'; +import { computePostgresEnumName } from 'src/engine/workspace-manager/workspace-migration/utils/compute-postgres-enum-name.util'; import { WorkspaceMigrationRunnerException, WorkspaceMigrationRunnerExceptionCode, -} from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/exceptions/workspace-migration-runner.exception'; +} from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/exceptions/workspace-migration-runner.exception'; export interface CreateEnumOperationSpec { operation: EnumOperation.CREATE; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/workspace-migration-runner-v2.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/workspace-migration-runner.module.ts similarity index 68% rename from packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/workspace-migration-runner-v2.module.ts rename to packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/workspace-migration-runner.module.ts index 2101f424e69..608da845d16 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/workspace-migration-runner-v2.module.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration-runner/workspace-migration-runner.module.ts @@ -8,9 +8,9 @@ import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; -import { WorkspaceSchemaMigrationRunnerActionHandlersModule } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/action-handlers/workspace-schema-migration-runner-action-handlers.module'; -import { WorkspaceMigrationRunnerActionHandlerRegistryService } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/registry/workspace-migration-runner-action-handler-registry.service'; -import { WorkspaceMigrationRunnerV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/services/workspace-migration-runner-v2.service'; +import { WorkspaceSchemaMigrationRunnerActionHandlersModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/action-handlers/workspace-schema-migration-runner-action-handlers.module'; +import { WorkspaceMigrationRunnerActionHandlerRegistryService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/registry/workspace-migration-runner-action-handler-registry.service'; +import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/services/workspace-migration-runner.service'; @Module({ imports: [ @@ -25,9 +25,9 @@ import { WorkspaceMigrationRunnerV2Service } from 'src/engine/workspace-manager/ WorkspaceCacheModule, ], providers: [ - WorkspaceMigrationRunnerV2Service, + WorkspaceMigrationRunnerService, WorkspaceMigrationRunnerActionHandlerRegistryService, ], - exports: [WorkspaceMigrationRunnerV2Service], + exports: [WorkspaceMigrationRunnerService], }) -export class WorkspaceMigrationRunnerV2Module {} +export class WorkspaceMigrationRunnerModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration.module.ts new file mode 100644 index 00000000000..7ff8a4720d4 --- /dev/null +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration/workspace-migration.module.ts @@ -0,0 +1,24 @@ +import { Module } from '@nestjs/common'; + +import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; +import { WorkspaceMigrationBuildOrchestratorService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-build-orchestrator.service'; +import { WorkspaceMigrationValidateBuildAndRunService } from 'src/engine/workspace-manager/workspace-migration/services/workspace-migration-validate-build-and-run-service'; +import { WorkspaceMigrationBuilderModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-builder/workspace-migration-builder.module'; +import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration-runner/workspace-migration-runner.module'; + +@Module({ + imports: [ + WorkspaceMigrationBuilderModule, + WorkspaceMigrationRunnerModule, + WorkspaceCacheModule, + ], + providers: [ + WorkspaceMigrationValidateBuildAndRunService, + WorkspaceMigrationBuildOrchestratorService, + ], + exports: [ + WorkspaceMigrationValidateBuildAndRunService, + WorkspaceMigrationBuildOrchestratorService, + ], +}) +export class WorkspaceMigrationModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.module.ts deleted file mode 100644 index 2ac0ec229e5..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.module.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Module } from '@nestjs/common'; - -import { SyncWorkspaceLoggerService } from 'src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.service'; - -@Module({ - providers: [SyncWorkspaceLoggerService], - exports: [SyncWorkspaceLoggerService], -}) -export class SyncWorkspaceLoggerModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.service.ts deleted file mode 100644 index 4c61570578e..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.service.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { CommandLogger } from 'src/command/command-logger'; -import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; - -@Injectable() -export class SyncWorkspaceLoggerService { - private readonly commandLogger = new CommandLogger( - SyncWorkspaceLoggerService.name, - ); - - constructor() {} - - async saveLogs( - workspaceId: string, - storage: WorkspaceSyncStorage, - workspaceMigrations: WorkspaceMigrationEntity[], - ) { - // Create sub directory - await this.commandLogger.createSubDirectory(workspaceId); - - // Save workspace migrations - await this.commandLogger.writeLog( - `${workspaceId}/workspace-migrations`, - workspaceMigrations, - ); - - // Save object metadata create collection - await this.commandLogger.writeLog( - `${workspaceId}/object-metadata-create-collection`, - storage.objectMetadataCreateCollection, - ); - - // Save object metadata update collection - await this.commandLogger.writeLog( - `${workspaceId}/object-metadata-update-collection`, - storage.objectMetadataUpdateCollection, - ); - - // Save object metadata delete collection - await this.commandLogger.writeLog( - `${workspaceId}/object-metadata-delete-collection`, - storage.objectMetadataDeleteCollection, - ); - - // Save field metadata create collection - await this.commandLogger.writeLog( - `${workspaceId}/field-metadata-create-collection`, - storage.fieldMetadataCreateCollection, - ); - - // Save field metadata update collection - await this.commandLogger.writeLog( - `${workspaceId}/field-metadata-update-collection`, - storage.fieldMetadataUpdateCollection, - ); - - // Save field metadata delete collection - await this.commandLogger.writeLog( - `${workspaceId}/field-metadata-delete-collection`, - storage.fieldMetadataDeleteCollection, - ); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command.ts deleted file mode 100644 index e2f87060e38..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { InjectRepository } from '@nestjs/typeorm'; - -import { Command } from 'nest-commander'; -import { Repository } from 'typeorm'; - -import { ActiveOrSuspendedWorkspacesMigrationCommandRunner } from 'src/database/commands/command-runners/active-or-suspended-workspaces-migration.command-runner'; -import { RunOnWorkspaceArgs } from 'src/database/commands/command-runners/workspaces-migration.command-runner'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; -import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager'; -import { WorkspaceSyncMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service'; - -import { SyncWorkspaceLoggerService } from './services/sync-workspace-logger.service'; - -@Command({ - name: 'workspace:sync-metadata', - description: 'Sync metadata', -}) -export class SyncWorkspaceMetadataCommand extends ActiveOrSuspendedWorkspacesMigrationCommandRunner { - constructor( - @InjectRepository(WorkspaceEntity) - protected readonly workspaceRepository: Repository, - private readonly workspaceSyncMetadataService: WorkspaceSyncMetadataService, - protected readonly dataSourceService: DataSourceService, - private readonly syncWorkspaceLoggerService: SyncWorkspaceLoggerService, - private readonly featureFlagService: FeatureFlagService, - protected readonly globalWorkspaceOrmManager: GlobalWorkspaceOrmManager, - ) { - super(workspaceRepository, globalWorkspaceOrmManager, dataSourceService); - } - - override async runOnWorkspace({ - workspaceId, - options, - index, - total, - }: RunOnWorkspaceArgs): Promise { - this.logger.log( - `Running workspace sync for workspace: ${workspaceId} (${index} out of ${total})`, - ); - - const dataSourceMetadata = - await this.dataSourceService.getLastDataSourceMetadataFromWorkspaceIdOrFail( - workspaceId, - ); - - const featureFlags = - await this.featureFlagService.getWorkspaceFeatureFlagsMap(workspaceId); - - const { storage, workspaceMigrations } = - await this.workspaceSyncMetadataService.synchronize( - { - workspaceId, - dataSourceId: dataSourceMetadata.id, - featureFlags, - }, - { applyChanges: !options.dryRun }, - ); - - if (options.dryRun) { - await this.syncWorkspaceLoggerService.saveLogs( - workspaceId, - storage, - workspaceMigrations, - ); - } - - this.logger.log(`Finished synchronizing workspace.`); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/workspace-sync-metadata-commands.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/workspace-sync-metadata-commands.module.ts deleted file mode 100644 index 8af5486778f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/commands/workspace-sync-metadata-commands.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; - -import { ApplicationModule } from 'src/engine/core-modules/application/application.module'; -import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceModule } from 'src/engine/core-modules/workspace/workspace.module'; -import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module'; -import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { SyncWorkspaceLoggerModule } from 'src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.module'; -import { WorkspaceSyncMetadataModule } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.module'; - -import { SyncWorkspaceMetadataCommand } from './sync-workspace-metadata.command'; - -@Module({ - imports: [ - WorkspaceSyncMetadataModule, - WorkspaceModule, - DataSourceModule, - WorkspaceDataSourceModule, - FeatureFlagModule, - TypeOrmModule.forFeature([WorkspaceEntity]), - SyncWorkspaceLoggerModule, - ApplicationModule, - ], - providers: [SyncWorkspaceMetadataCommand], - exports: [SyncWorkspaceMetadataCommand], -}) -export class WorkspaceSyncMetadataCommandsModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/__tests__/workspace-field.comparator.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/__tests__/workspace-field.comparator.spec.ts deleted file mode 100644 index 3df3f57398f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/__tests__/workspace-field.comparator.spec.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; - -import { WorkspaceFieldComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator'; - -describe('WorkspaceFieldComparator', () => { - let comparator: WorkspaceFieldComparator; - - beforeEach(() => { - // Initialize the comparator before each test - comparator = new WorkspaceFieldComparator(); - }); - - function createMockFieldMetadata(values: any) { - return { - workspaceId: 'some-workspace-id', - type: 'TEXT', - name: 'DefaultFieldName', - label: 'Default Field Label', - defaultValue: null, - description: 'Default description', - isCustom: false, - isSystem: false, - isNullable: true, - ...values, - }; - } - - it('should generate CREATE action for new fields', () => { - const original = { fields: [] } as any; - const standard = { - fields: [ - createMockFieldMetadata({ - standardId: 'no-field-1', - name: 'New Field', - }), - ], - } as any; - - const result = comparator.compare('', original.fields, standard.fields); - - expect(result).toEqual([ - { - action: ComparatorAction.CREATE, - object: expect.objectContaining(standard.fields[0]), - }, - ]); - }); - - it('should generate UPDATE action for modified fields', () => { - const original = { - fields: [ - createMockFieldMetadata({ - standardId: '1', - id: '1', - isNullable: true, - }), - ], - } as any; - const standard = { - fields: [ - createMockFieldMetadata({ - standardId: '1', - isNullable: false, - }), - ], - } as any; - - const result = comparator.compare('', original.fields, standard.fields); - - expect(result).toEqual([ - { - action: ComparatorAction.UPDATE, - object: expect.objectContaining({ id: '1', isNullable: false }), - }, - ]); - }); - - it('should generate DELETE action for removed fields', () => { - const original = { - fields: [ - createMockFieldMetadata({ - standardId: '1', - id: '1', - name: 'Removed Field', - isActive: true, - }), - ], - } as any; - const standard = { fields: [] } as any; - - const result = comparator.compare('', original.fields, standard.fields); - - expect(result).toEqual([ - { - action: ComparatorAction.DELETE, - object: expect.objectContaining({ name: 'Removed Field' }), - }, - ]); - }); - - it('should not generate any action for identical fields', () => { - const original = { - fields: [ - createMockFieldMetadata({ standardId: '1', id: '1', isActive: true }), - ], - } as any; - const standard = { - fields: [createMockFieldMetadata({ standardId: '1' })], - } as any; - - const result = comparator.compare('', original.fields, standard.fields); - - expect(result).toHaveLength(0); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/__tests__/workspace-object.comparator.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/__tests__/workspace-object.comparator.spec.ts deleted file mode 100644 index 8e3456752e7..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/__tests__/workspace-object.comparator.spec.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; - -import { WorkspaceObjectComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator'; - -describe('WorkspaceObjectComparator', () => { - let comparator: WorkspaceObjectComparator; - - beforeEach(() => { - // Initialize the comparator before each test - comparator = new WorkspaceObjectComparator(); - }); - - function createMockObjectMetadata(values: any) { - return { - nameSingular: 'TestObject', - namePlural: 'TestObjects', - labelSingular: 'Test Object', - labelPlural: 'Test Objects', - ...values, - }; - } - - it('should generate CREATE action for new objects', () => { - const standardObjectMetadata = createMockObjectMetadata({ - standardId: 'no-object-1', - description: 'A standard object', - }); - - const result = comparator.compare(undefined, standardObjectMetadata); - - expect(result).toEqual({ - action: ComparatorAction.CREATE, - object: standardObjectMetadata, - }); - }); - - it('should generate UPDATE action for objects with differences', () => { - const originalObjectMetadata = createMockObjectMetadata({ - standardId: '1', - id: '1', - description: 'Original description', - }); - const standardObjectMetadata = createMockObjectMetadata({ - standardId: '1', - description: 'Updated description', - }); - - const result = comparator.compare( - originalObjectMetadata, - standardObjectMetadata, - ); - - expect(result).toEqual({ - action: ComparatorAction.UPDATE, - object: expect.objectContaining({ - id: '1', - description: 'Updated description', - }), - }); - }); - - it('should generate SKIP action for identical objects', () => { - const originalObjectMetadata = createMockObjectMetadata({ - standardId: '1', - id: '1', - description: 'Same description', - }); - const standardObjectMetadata = createMockObjectMetadata({ - standardId: '1', - description: 'Same description', - }); - - const result = comparator.compare( - originalObjectMetadata, - standardObjectMetadata, - ); - - expect(result).toEqual({ - action: ComparatorAction.SKIP, - }); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/index.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/index.ts deleted file mode 100644 index 7146c8f2914..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { WorkspaceAgentComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-agent.comparator'; -import { WorkspaceFieldRelationComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator'; -import { WorkspaceIndexComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-index.comparator'; -import { WorkspaceRoleComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-role.comparator'; - -import { WorkspaceFieldComparator } from './workspace-field.comparator'; -import { WorkspaceObjectComparator } from './workspace-object.comparator'; - -export const workspaceSyncMetadataComparators = [ - WorkspaceFieldComparator, - WorkspaceFieldRelationComparator, - WorkspaceObjectComparator, - WorkspaceIndexComparator, - WorkspaceRoleComparator, - WorkspaceAgentComparator, -]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts deleted file mode 100644 index 26f330dbe57..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/__tests__/transform-metadata-for-comparison.util.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; // Adjust the import path as necessary - -describe('transformMetadataForComparison', () => { - // Test for a single object - it('transforms a single object correctly with nested objects', () => { - const input = { name: 'Test', details: { a: 1, nested: { b: 2 } } }; - const result = transformMetadataForComparison(input, { - propertiesToStringify: ['details'], - }); - - expect(result).toEqual({ - name: 'Test', - details: '{"a":1,"nested":{"b":2}}', - }); - }); - - // Test for an array of objects - it('transforms an array of objects correctly, ignoring and stringifying multiple properties', () => { - const input = [ - { name: 'Test1', value: { a: 1 }, ignored: 'ignoreMe' }, - { name: 'Test2', value: { c: 3 }, extra: 'keepMe' }, - ]; - const result = transformMetadataForComparison(input, { - shouldIgnoreProperty: (property) => ['ignored'].includes(property), - propertiesToStringify: ['value'], - keyFactory: (datum) => datum.name, - }); - - expect(result).toEqual({ - Test1: { name: 'Test1', value: '{"a":1}' }, - Test2: { name: 'Test2', value: '{"c":3}', extra: 'keepMe' }, - }); - }); - - // Test with a custom keyFactory function - it('uses a custom keyFactory function to generate keys', () => { - const input = [{ id: 123, name: 'Test' }]; - const result = transformMetadataForComparison(input, { - keyFactory: (datum) => `key-${datum.id}`, - }); - - expect(result).toHaveProperty('key-123'); - expect((result as Record)['key-123']).toEqual({ - id: 123, - name: 'Test', - }); - }); - - // Test with an empty array - it('handles an empty array gracefully', () => { - const result = transformMetadataForComparison([], {}); - - expect(result).toEqual({}); - }); - - // Test with an empty object - it('handles an empty object gracefully', () => { - const result = transformMetadataForComparison({}, {}); - - expect(result).toEqual({}); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts deleted file mode 100644 index cc37785bfcf..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { orderObjectProperties } from './order-object-properties.util'; - -type TransformToString = { - [P in keyof T]: P extends Keys ? string : T[P]; -}; - -export function transformMetadataForComparison( - metadata: T[] | T, - options: { - shouldIgnoreProperty?: (property: string, originalMetadata?: T) => boolean; - propertiesToStringify?: readonly Keys[]; - keyFactory?: (datum: T) => string; - }, -): Record> | TransformToString { - const propertiesToStringify = (options.propertiesToStringify ?? - []) as readonly string[]; - - const transformProperties = (datum: T): TransformToString => { - const transformedField = {} as TransformToString; - - for (const property in datum) { - if ( - options.shouldIgnoreProperty && - options.shouldIgnoreProperty(property, datum) - ) { - continue; - } - if ( - propertiesToStringify.includes(property) && - datum[property] !== null && - typeof datum[property] === 'object' - ) { - const orderedValue = orderObjectProperties(datum[property] as object); - - // @ts-expect-error legacy noImplicitAny - transformedField[property as string] = JSON.stringify( - orderedValue, - ) as T[Keys]; - } else { - // @ts-expect-error legacy noImplicitAny - transformedField[property as string] = datum[property]; - } - } - - return transformedField; - }; - - if (Array.isArray(metadata)) { - return metadata.reduce>>( - (acc, datum) => { - const key = options.keyFactory?.(datum); - - if (!key) { - throw new Error('keyFactory must be implemented'); - } - - acc[key] = transformProperties(datum); - - return acc; - }, - {}, - ); - } else { - return transformProperties(metadata); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-agent.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-agent.comparator.ts deleted file mode 100644 index de044ea9044..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-agent.comparator.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import diff from 'microdiff'; -import { type FromTo } from 'twenty-shared/types'; - -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; - -import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; - -type AgentComparatorResult = { - action: - | ComparatorAction.CREATE - | ComparatorAction.UPDATE - | ComparatorAction.DELETE; - object: FlatAgent; -}; - -type WorkspaceAgentComparatorArgs = FromTo; - -const agentPropertiesToIgnore = [ - 'id', - 'createdAt', - 'updatedAt', - 'workspaceId', - 'universalIdentifier', - 'applicationId', -]; - -@Injectable() -export class WorkspaceAgentComparator { - compare({ - fromFlatAgents, - toFlatAgents, - }: WorkspaceAgentComparatorArgs): AgentComparatorResult[] { - const results: AgentComparatorResult[] = []; - - const keyFactory = (agent: FlatAgent) => agent.universalIdentifier ?? ''; - - const fromAgentMap = transformMetadataForComparison(fromFlatAgents, { - shouldIgnoreProperty: (property) => - agentPropertiesToIgnore.includes(property), - keyFactory, - }); - - const toAgentMap = transformMetadataForComparison(toFlatAgents, { - shouldIgnoreProperty: (property) => - agentPropertiesToIgnore.includes(property), - keyFactory, - }); - - const agentDifferences = diff(fromAgentMap, toAgentMap); - - for (const difference of agentDifferences) { - const universalIdentifier = difference.path[0] as string; - - switch (difference.type) { - case 'CREATE': { - const fromAgent = fromFlatAgents.find( - (agent) => keyFactory(agent) === universalIdentifier, - ); - const toAgent = toFlatAgents.find( - (agent) => keyFactory(agent) === universalIdentifier, - ); - - if (!toAgent) { - break; - } - - if (fromAgent) { - fromAgent && - results.push({ - action: ComparatorAction.UPDATE, - object: { - ...toAgent, - id: fromAgent.id, - }, - }); - } else { - results.push({ - action: ComparatorAction.CREATE, - object: toAgent, - }); - } - break; - } - case 'CHANGE': { - const fromAgent = fromFlatAgents.find( - (agent) => keyFactory(agent) === universalIdentifier, - ); - const toAgent = toFlatAgents.find( - (agent) => keyFactory(agent) === universalIdentifier, - ); - - if (fromAgent && toAgent) { - results.push({ - action: ComparatorAction.UPDATE, - object: { - ...toAgent, - id: fromAgent.id, - }, - }); - } - break; - } - case 'REMOVE': { - const fromAgent = fromFlatAgents.find( - (agent) => keyFactory(agent) === universalIdentifier, - ); - - if (fromAgent && difference.path.length === 1) { - results.push({ - action: ComparatorAction.DELETE, - object: fromAgent, - }); - } - break; - } - } - } - - return results; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts deleted file mode 100644 index f33078f7290..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import diff, { type DifferenceChange, type DifferenceRemove } from 'microdiff'; -import { - type FieldMetadataType, - type FieldMetadataRelationSettings, -} from 'twenty-shared/types'; - -import { - ComparatorAction, - type FieldRelationComparatorResult, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; - -const fieldPropertiesToCompare = [ - 'settings', - 'relationTargetObjectMetadataId', - 'relationTargetFieldMetadataId', -]; - -const fieldPropertiesToStringify = ['settings'] as const; - -@Injectable() -export class WorkspaceFieldRelationComparator { - constructor() {} - - public compare( - originalFieldMetadataCollection: FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[], - standardFieldMetadataCollection: FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[], - ): FieldRelationComparatorResult[] { - const result: FieldRelationComparatorResult[] = []; - const propertiesMap: Record< - string, - Partial< - FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > - > = {}; - - // Double security to only compare non-custom fields - const filteredOriginalFieldCollection = - originalFieldMetadataCollection.filter((field) => !field.isCustom); - const originalFieldMetadataMap = transformMetadataForComparison( - filteredOriginalFieldCollection, - { - shouldIgnoreProperty: (property) => { - if (fieldPropertiesToCompare.includes(property)) { - return false; - } - - return true; - }, - propertiesToStringify: fieldPropertiesToStringify, - keyFactory(datum) { - // Happen when the field is custom - return datum.standardId || datum.name; - }, - }, - ); - const standardFieldMetadataMap = transformMetadataForComparison( - standardFieldMetadataCollection, - { - shouldIgnoreProperty: (property) => { - if (fieldPropertiesToCompare.includes(property)) { - return false; - } - - return true; - }, - propertiesToStringify: fieldPropertiesToStringify, - keyFactory(datum) { - // Happen when the field is custom - return datum.standardId || datum.name; - }, - }, - ); - - // Compare fields - const fieldMetadataDifference = diff( - originalFieldMetadataMap, - standardFieldMetadataMap, - ); - - const fieldMetadataDifferenceMap = fieldMetadataDifference.reduce( - (acc, difference) => { - const fieldId = difference.path[0]; - - if (difference.type === 'CREATE') { - throw new Error( - `CREATE should never happen when comparing relations as they are created previously`, - ); - } - - if (!acc[fieldId]) { - acc[fieldId] = []; - } - - acc[fieldId].push(difference); - - return acc; - }, - {} as Record, - ); - - differenceLoop: for (const [fieldId, differences] of Object.entries( - fieldMetadataDifferenceMap, - )) { - const findField = ( - field: FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >, - ) => { - return field.standardId === fieldId; - }; - // Object shouldn't have thousands of fields, so we can use find here - const standardFieldMetadata = - standardFieldMetadataCollection.find(findField); - const originalFieldMetadata = - originalFieldMetadataCollection.find(findField); - const allNewPropertiesAreNull = Object.values(differences).every( - (difference) => { - if (difference.type === 'REMOVE') { - return true; - } - - return difference.value === null; - }, - ); - const allOldPropertiesAreNull = Object.values(differences).every( - (difference) => difference.oldValue === null, - ); - let relationTypeChange = false; - - if (!originalFieldMetadata) { - throw new Error(`Field ${fieldId} not found in originalObjectMetadata`); - } - - for (const difference of differences) { - const property = difference.path[difference.path.length - 1]; - - if (difference.type === 'REMOVE') { - // Whole relation is removed - if (property === fieldId) { - result.push({ - action: ComparatorAction.DELETE, - object: originalFieldMetadata, - }); - - continue differenceLoop; - } - - throw new Error( - `REMOVE partial part of relation should never happen, it should ben an update`, - ); - } - - // If the old value and the new value are both null, skip - // Database is storing null, and we can get undefined here - if ( - difference.oldValue === null && - (difference.value === null || difference.value === undefined) - ) { - break; - } - - if (typeof property !== 'string') { - break; - } - - if (!propertiesMap[fieldId]) { - propertiesMap[fieldId] = {}; - } - - // If the property is a stringified JSON, parse it - if ( - (fieldPropertiesToStringify as readonly string[]).includes(property) - ) { - const newValue = this.parseJSONOrString(difference.value); - const oldValue = this.parseJSONOrString(difference.oldValue); - - if (property === 'settings' && difference.oldValue) { - const newSettings = newValue as FieldMetadataRelationSettings; - const oldSettings = oldValue as FieldMetadataRelationSettings; - - // Check if the relation type has changed - if (oldSettings.relationType !== newSettings.relationType) { - relationTypeChange = true; - } - } - - // @ts-expect-error legacy noImplicitAny - propertiesMap[fieldId][property] = newValue; - } else { - // @ts-expect-error legacy noImplicitAny - propertiesMap[fieldId][property] = difference.value; - } - } - - if (!standardFieldMetadata) { - throw new Error(`Field ${fieldId} not found in standardObjectMetadata`); - } - - const relationFieldMetadata = propertiesMap[fieldId]; - - if (relationTypeChange) { - result.push({ - action: ComparatorAction.DELETE, - object: originalFieldMetadata, - }); - - result.push({ - action: ComparatorAction.CREATE, - object: { - ...relationFieldMetadata, - id: originalFieldMetadata.id, - standardId: standardFieldMetadata.standardId ?? undefined, - description: relationFieldMetadata.description ?? undefined, - icon: relationFieldMetadata.icon ?? undefined, - type: standardFieldMetadata.type, - morphId: standardFieldMetadata.morphId ?? undefined, - }, - }); - } else if (allOldPropertiesAreNull) { - result.push({ - action: ComparatorAction.CREATE, - object: { - ...propertiesMap[fieldId], - id: originalFieldMetadata.id, - standardId: standardFieldMetadata.standardId ?? undefined, - description: relationFieldMetadata.description ?? undefined, - icon: relationFieldMetadata.icon ?? undefined, - type: standardFieldMetadata.type, - morphId: standardFieldMetadata.morphId ?? undefined, - }, - }); - } else if (allNewPropertiesAreNull) { - result.push({ - action: ComparatorAction.DELETE, - object: originalFieldMetadata, - }); - } else { - result.push({ - action: ComparatorAction.UPDATE, - object: { - ...propertiesMap[fieldId], - id: originalFieldMetadata.id, - standardId: standardFieldMetadata.standardId ?? undefined, - description: relationFieldMetadata.description ?? undefined, - icon: relationFieldMetadata.icon ?? undefined, - type: standardFieldMetadata.type, - morphId: standardFieldMetadata.morphId ?? undefined, - }, - }); - } - } - - return result; - } - - private parseJSONOrString(value: string | null): string | object | null { - if (value === null) { - return null; - } - - try { - return JSON.parse(value); - } catch { - return value; - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts deleted file mode 100644 index ca4581bbcb3..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator.ts +++ /dev/null @@ -1,254 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import diff from 'microdiff'; -import { FieldMetadataType } from 'twenty-shared/types'; - -import { - ComparatorAction, - type FieldComparatorResult, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type ComputedPartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; - -const commonFieldPropertiesToIgnore = [ - 'id', - 'createdAt', - 'updatedAt', - 'objectMetadataId', - 'isActive', - 'options', - 'settings', - 'joinColumn', - 'gate', - 'asExpression', - 'generatedType', - 'isLabelSyncedWithName', - 'relationTargetFieldMetadataId', - 'relationTargetObjectMetadataId', - 'relationTargetFieldMetadata', - 'relationTargetObjectMetadata', - 'universalIdentifier', - 'applicationId', -]; - -const fieldPropertiesToStringify = ['defaultValue'] as const; - -const shouldNotOverrideDefaultValue = ( - fieldMetadata: FieldMetadataEntity | ComputedPartialFieldMetadata, -) => { - return [ - FieldMetadataType.BOOLEAN, - FieldMetadataType.SELECT, - FieldMetadataType.MULTI_SELECT, - FieldMetadataType.CURRENCY, - FieldMetadataType.PHONES, - FieldMetadataType.ADDRESS, - ].includes(fieldMetadata.type); -}; - -const shouldSkipFieldCreation = ( - standardFieldMetadata: ComputedPartialFieldMetadata | undefined, -) => { - return standardFieldMetadata?.isCustom; -}; - -@Injectable() -export class WorkspaceFieldComparator { - constructor() {} - - public compare( - originalObjectMetadataId: string, - originalFieldMetadataCollection: FieldMetadataEntity[], - standardFieldMetadataCollection: ComputedPartialFieldMetadata[], - ): FieldComparatorResult[] { - const result: FieldComparatorResult[] = []; - const fieldPropertiesToUpdateMap: Record< - string, - Partial - > = {}; - - // Double security to only compare non-custom fields - const filteredOriginalFieldCollection = - originalFieldMetadataCollection.filter((field) => !field.isCustom); - const originalFieldMetadataMap = transformMetadataForComparison( - filteredOriginalFieldCollection, - { - shouldIgnoreProperty: ( - property, - fieldMetadata: FieldMetadataEntity, - ) => { - if ( - property === 'defaultValue' && - shouldNotOverrideDefaultValue(fieldMetadata) - ) { - return true; - } - - if (commonFieldPropertiesToIgnore.includes(property)) { - return true; - } - - return false; - }, - propertiesToStringify: fieldPropertiesToStringify, - keyFactory(datum) { - // Happen when the field is custom - return datum.standardId || datum.name; - }, - }, - ); - const standardFieldMetadataMap = transformMetadataForComparison( - standardFieldMetadataCollection, - { - shouldIgnoreProperty: ( - property, - fieldMetadata: ComputedPartialFieldMetadata, - ) => { - if ( - property === 'defaultValue' && - shouldNotOverrideDefaultValue(fieldMetadata) - ) { - return true; - } - - if (commonFieldPropertiesToIgnore.includes(property)) { - return true; - } - - return false; - }, - propertiesToStringify: fieldPropertiesToStringify, - keyFactory(datum) { - // Happen when the field is custom - return datum.standardId || datum.name; - }, - }, - ); - - // Compare fields - const fieldMetadataDifference = diff( - originalFieldMetadataMap, - standardFieldMetadataMap, - ); - - for (const difference of fieldMetadataDifference) { - const fieldName = difference.path[0]; - const findField = ( - field: ComputedPartialFieldMetadata | FieldMetadataEntity, - ) => { - return field.standardId === fieldName; - }; - // Object shouldn't have thousands of fields, so we can use find here - const standardFieldMetadata = - standardFieldMetadataCollection.find(findField); - const originalFieldMetadata = - originalFieldMetadataCollection.find(findField); - - switch (difference.type) { - case 'CREATE': { - if (shouldSkipFieldCreation(standardFieldMetadata)) { - break; - } - if (!standardFieldMetadata) { - throw new Error( - `Field ${fieldName} not found in standardObjectMetadata`, - ); - } - - result.push({ - action: ComparatorAction.CREATE, - object: { - ...standardFieldMetadata, - objectMetadataId: originalObjectMetadataId, - }, - }); - break; - } - case 'CHANGE': { - if (!originalFieldMetadata) { - throw new Error( - `Field ${fieldName} not found in originalObjectMetadata`, - ); - } - - const id = originalFieldMetadata.id; - const property = difference.path[difference.path.length - 1]; - - // If the old value and the new value are both null, skip - // Database is storing null, and we can get undefined here - if ( - difference.oldValue === null && - (difference.value === null || difference.value === undefined) - ) { - break; - } - - if (typeof property !== 'string') { - break; - } - - if (!fieldPropertiesToUpdateMap[id]) { - fieldPropertiesToUpdateMap[id] = {}; - } - - // If the property is a stringified JSON, parse it - if ( - (fieldPropertiesToStringify as readonly string[]).includes(property) - ) { - // @ts-expect-error legacy noImplicitAny - fieldPropertiesToUpdateMap[id][property] = this.parseJSONOrString( - difference.value, - ); - } else { - // @ts-expect-error legacy noImplicitAny - fieldPropertiesToUpdateMap[id][property] = difference.value; - } - break; - } - case 'REMOVE': { - if (!originalFieldMetadata) { - throw new Error( - `Field ${fieldName} not found in originalObjectMetadata`, - ); - } - - if (difference.path.length === 1) { - result.push({ - action: ComparatorAction.DELETE, - object: originalFieldMetadata, - }); - } - break; - } - } - } - - for (const [id, fieldPropertiesToUpdate] of Object.entries( - fieldPropertiesToUpdateMap, - )) { - result.push({ - action: ComparatorAction.UPDATE, - object: { - id, - ...fieldPropertiesToUpdate, - }, - }); - } - - return result; - } - - private parseJSONOrString(value: string | null): string | object | null { - if (value === null) { - return null; - } - - try { - return JSON.parse(value); - } catch { - return value; - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-index.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-index.comparator.ts deleted file mode 100644 index 977e1801c0a..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-index.comparator.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import diff from 'microdiff'; - -import { - ComparatorAction, - type IndexComparatorResult, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; - -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; - -const propertiesToIgnore = [ - 'createdAt', - 'updatedAt', - 'indexFieldMetadatas', - 'universalIdentifier', - 'applicationId', -]; - -@Injectable() -export class WorkspaceIndexComparator { - constructor() {} - - compare( - originalIndexMetadataCollection: IndexMetadataEntity[], - standardIndexMetadataCollection: Partial[], - ): IndexComparatorResult[] { - const results: IndexComparatorResult[] = []; - - // Create a map of standard relations - const standardIndexMetadataMap = transformMetadataForComparison( - standardIndexMetadataCollection, - { - keyFactory(indexMetadata) { - return `${indexMetadata.name}`; - }, - }, - ); - - const originalIndexMetadataCollectionWithColumns = - originalIndexMetadataCollection.map((indexMetadata) => { - return { - ...indexMetadata, - columns: indexMetadata.indexFieldMetadatas.map( - (indexFieldMetadata) => indexFieldMetadata.fieldMetadata.name, - ), - indexFieldMetadatas: undefined, - }; - }); - - // Create a filtered map of original relations - // We filter out 'id' later because we need it to remove the relation from DB - const originalIndexMetadataMap = transformMetadataForComparison( - originalIndexMetadataCollectionWithColumns, - { - shouldIgnoreProperty: (property) => - propertiesToIgnore.includes(property), - keyFactory(indexMetadata) { - return `${indexMetadata.name}`; - }, - }, - ); - - // Compare indexes - const indexesDifferences = diff( - originalIndexMetadataMap, - standardIndexMetadataMap, - ); - - for (const difference of indexesDifferences) { - // TODO: This code prevent index updates, we need to handle them - if (difference.path.length > 1) { - continue; - } - - switch (difference.type) { - case 'CREATE': { - results.push({ - action: ComparatorAction.CREATE, - object: difference.value, - }); - break; - } - case 'REMOVE': { - if (difference.path[difference.path.length - 1] !== 'id') { - results.push({ - action: ComparatorAction.DELETE, - object: difference.oldValue, - }); - } - break; - } - default: - break; - } - } - - return results; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts deleted file mode 100644 index abe3f9944f1..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import omit from 'lodash.omit'; -import diff from 'microdiff'; - -import { - ComparatorAction, - type ObjectComparatorResult, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type ComputedPartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; - -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; - -const objectPropertiesToIgnore = [ - 'id', - 'createdAt', - 'updatedAt', - 'labelIdentifierFieldMetadataId', - 'imageIdentifierFieldMetadataId', - 'isActive', - 'fields', - 'universalIdentifier', - 'applicationId', -]; - -@Injectable() -export class WorkspaceObjectComparator { - constructor() {} - - public compare( - originalObjectMetadata: Omit | undefined, - standardObjectMetadata: Omit< - ComputedPartialWorkspaceEntity, - 'fields' | 'indexMetadatas' - >, - ): ObjectComparatorResult { - // If the object doesn't exist in the original metadata, we need to create it - if (!originalObjectMetadata) { - return { - action: ComparatorAction.CREATE, - object: standardObjectMetadata, - }; - } - - const objectPropertiesToUpdate: Partial = - {}; - - // Only compare properties that are not ignored - const partialOriginalObjectMetadata = transformMetadataForComparison( - originalObjectMetadata, - { - shouldIgnoreProperty: (property) => - objectPropertiesToIgnore.includes(property), - }, - ); - - // Compare objects - const objectMetadataDifference = diff( - partialOriginalObjectMetadata, - omit(standardObjectMetadata, 'fields'), - ); - - // Loop through the differences and create an object with the properties to update - for (const difference of objectMetadataDifference) { - // We only handle CHANGE here as REMOVE and CREATE are handled earlier. - if (difference.type === 'CHANGE') { - // If the old value and the new value are both null, skip - // Database is storing null, and we can get undefined here - if ( - difference.oldValue === null && - (difference.value === null || difference.value === undefined) - ) { - continue; - } - - const property = difference.path[0]; - - // @ts-expect-error legacy noImplicitAny - objectPropertiesToUpdate[property] = standardObjectMetadata[property]; - } - } - - // If there are no properties to update, the objects are equal - if (Object.keys(objectPropertiesToUpdate).length === 0) { - return { - action: ComparatorAction.SKIP, - }; - } - - // If there are properties to update, we need to update the object - return { - action: ComparatorAction.UPDATE, - object: { - id: originalObjectMetadata.id, - ...objectPropertiesToUpdate, - }, - }; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-role.comparator.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-role.comparator.ts deleted file mode 100644 index 8aa027a1bf8..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-role.comparator.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import diff from 'microdiff'; -import { type FromTo } from 'twenty-shared/types'; - -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; - -import { ALL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY } from 'src/engine/metadata-modules/flat-entity/constant/all-flat-entity-properties-to-compare-and-stringify.constant'; -import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; -import { type RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { transformMetadataForComparison } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/utils/transform-metadata-for-comparison.util'; - -type RoleComparatorResult = - | { - action: ComparatorAction.CREATE; - fromFlatRole: null; - toFlatRole: FlatRole; - } - | { - action: ComparatorAction.UPDATE; - fromFlatRole: FlatRole; - toFlatRole: FlatRole; - } - | { - action: ComparatorAction.DELETE; - fromFlatRole: FlatRole; - toFlatRole: null; - }; - -type WorkspaceRoleComparatorArgs = FromTo; - -@Injectable() -export class WorkspaceRoleComparator { - compare({ - fromFlatRoles, - toFlatRoles, - }: WorkspaceRoleComparatorArgs): RoleComparatorResult[] { - const results: RoleComparatorResult[] = []; - - const keyFactory = (role: FlatRole | RoleEntity) => - role.standardId || role.id; - - const fromRoleMap = transformMetadataForComparison(fromFlatRoles, { - shouldIgnoreProperty: (property) => - !ALL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY.role.propertiesToCompare.includes( - property as keyof FlatRole, - ), - keyFactory, - }); - - const toRoleMap = transformMetadataForComparison(toFlatRoles, { - shouldIgnoreProperty: (property) => - !ALL_FLAT_ENTITY_PROPERTIES_TO_COMPARE_AND_STRINGIFY.role.propertiesToCompare.includes( - property as keyof FlatRole, - ), - keyFactory, - }); - - const roleDifferences = diff(fromRoleMap, toRoleMap); - - for (const difference of roleDifferences) { - const universalIdentifier = difference.path[0] as string; - - switch (difference.type) { - case 'CREATE': { - const toRole = toFlatRoles.find( - (role) => keyFactory(role) === universalIdentifier, - ); - - if (toRole) { - results.push({ - action: ComparatorAction.CREATE, - fromFlatRole: null, - toFlatRole: toRole, - }); - } - break; - } - case 'CHANGE': { - const fromRole = fromFlatRoles.find( - (role) => keyFactory(role) === universalIdentifier, - ); - const toRole = toFlatRoles.find( - (role) => keyFactory(role) === universalIdentifier, - ); - - if (fromRole && toRole) { - results.push({ - action: ComparatorAction.UPDATE, - fromFlatRole: fromRole, - toFlatRole: toRole, - }); - } - break; - } - case 'REMOVE': { - const fromRole = fromFlatRoles.find( - (role) => keyFactory(role) === universalIdentifier, - ); - - if (fromRole && difference.path.length === 1) { - results.push({ - action: ComparatorAction.DELETE, - fromFlatRole: fromRole, - toFlatRole: null, - }); - } - break; - } - } - } - - return results; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/index.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/index.ts deleted file mode 100644 index cf7e5ec9e8f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { StandardAgentFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-agent.factory'; -import { StandardIndexFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory'; -import { StandardRoleFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-role.factory'; - -import { StandardFieldRelationFactory } from './standard-field-relation.factory'; -import { StandardFieldFactory } from './standard-field.factory'; -import { StandardObjectFactory } from './standard-object.factory'; - -export const workspaceSyncMetadataFactories = [ - StandardFieldFactory, - StandardObjectFactory, - StandardFieldRelationFactory, - StandardIndexFactory, - StandardRoleFactory, - StandardAgentFactory, -]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-agent.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-agent.factory.ts deleted file mode 100644 index d0c4d8148b3..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-agent.factory.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; -import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; -import { transformStandardAgentDefinitionToFlatAgent } from 'src/engine/metadata-modules/flat-agent/utils/transform-standard-agent-definition-to-flat-agent.util'; -import { type StandardAgentDefinition } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-agents/types/standard-agent-definition.interface'; - -@Injectable() -export class StandardAgentFactory { - create( - agentDefinitions: StandardAgentDefinition[], - context: WorkspaceSyncContext, - existingAgents: AgentEntity[], - ): FlatAgent[] { - const computedAgents: FlatAgent[] = []; - - for (const standardAgentDefinition of agentDefinitions) { - const existingAgentEntity = existingAgents.find( - (agent) => agent.standardId === standardAgentDefinition.standardId, - ); - - const flatAgent = transformStandardAgentDefinitionToFlatAgent({ - standardAgentDefinition, - workspaceId: context.workspaceId, - existingAgentEntity, - }); - - computedAgents.push(flatAgent); - } - - return computedAgents; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field-relation.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field-relation.factory.ts deleted file mode 100644 index f8cb9ef0bfa..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field-relation.factory.ts +++ /dev/null @@ -1,312 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { isDefined } from 'class-validator'; -import { FieldMetadataType } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { type WorkspaceRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type 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 { type BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { getJoinColumn } from 'src/engine/twenty-orm/utils/get-join-column.util'; -import { convertClassNameToObjectMetadataName } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/convert-class-to-object-metadata-name.util'; -import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util'; - -@Injectable() -export class StandardFieldRelationFactory { - computeRelationFieldsForCustomObject( - customObjectMetadata: ObjectMetadataEntity, - originalObjectMetadataMap: Record, - ): FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[] { - const workspaceRelationMetadataArgsCollection = - metadataArgsStorage.filterRelations(CustomWorkspaceEntity); - - const joinColumnsMetadataArgsCollection = - metadataArgsStorage.filterJoinColumns(CustomWorkspaceEntity); - - const objectNameSingular = customObjectMetadata.nameSingular; - - const sourceObjectMetadata = originalObjectMetadataMap[objectNameSingular]; - - if (!isDefined(sourceObjectMetadata)) { - throw new Error( - `Source object ${objectNameSingular} not found in database while parsing ${objectNameSingular} relations`, - ); - } - - return workspaceRelationMetadataArgsCollection.map( - (workspaceRelationMetadataArgs) => { - const inverseSideTarget = - workspaceRelationMetadataArgs.inverseSideTarget(); - const targetObjectNameSingular = convertClassNameToObjectMetadataName( - inverseSideTarget.name, - ); - const targetObjectMetadata = - originalObjectMetadataMap[targetObjectNameSingular]; - - if (!isDefined(targetObjectMetadata)) { - throw new Error( - `Target object ${targetObjectNameSingular} not found in database while parsing ${objectNameSingular} relations`, - ); - } - - const sourceFieldMetadataName = workspaceRelationMetadataArgs.name; - - const targetFieldMetadataName = - workspaceRelationMetadataArgs.inverseSideFieldKey ?? - objectNameSingular; - - const targetFieldMetadata = targetObjectMetadata.fields.find( - (field) => field.name === targetFieldMetadataName, - ) as FieldMetadataEntity; - - if (!isDefined(targetFieldMetadata)) { - throw new Error( - `Target field ${targetFieldMetadataName} not found in object ${targetObjectNameSingular} for relation ${workspaceRelationMetadataArgs.name} of type ${workspaceRelationMetadataArgs.type}`, - ); - } - - const joinColumnName = - workspaceRelationMetadataArgs.type === RelationType.MANY_TO_ONE - ? getJoinColumn( - joinColumnsMetadataArgsCollection, - workspaceRelationMetadataArgs as WorkspaceRelationMetadataArgs, - ) - : undefined; - - const sourceFieldMetadata = sourceObjectMetadata.fields.find( - (field) => field.name === sourceFieldMetadataName, - ) as FieldMetadataEntity; - - if (!isDefined(sourceFieldMetadata)) { - throw new Error( - `Source field ${sourceFieldMetadataName} not found in object ${sourceFieldMetadata.name} for relation ${workspaceRelationMetadataArgs.name} of type ${workspaceRelationMetadataArgs.type}`, - ); - } - - return { - ...sourceFieldMetadata, - type: FieldMetadataType.RELATION, - settings: { - relationType: workspaceRelationMetadataArgs.type, - onDelete: - workspaceRelationMetadataArgs.type === RelationType.MANY_TO_ONE - ? workspaceRelationMetadataArgs.onDelete - : undefined, - joinColumnName, - }, - relationTargetObjectMetadataId: targetObjectMetadata.id, - relationTargetFieldMetadataId: targetFieldMetadata.id, - isNullable: workspaceRelationMetadataArgs.isNullable, - } satisfies FieldMetadataEntity; - }, - ); - } - - computeRelationFieldsForStandardObject( - standardObjectMetadataWorkspaceEntity: typeof BaseWorkspaceEntity, - context: WorkspaceSyncContext, - originalObjectMetadataMap: Record, - ): FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[] { - const workspaceEntityMetadataArgs = metadataArgsStorage.filterEntities( - standardObjectMetadataWorkspaceEntity, - ); - - if (!workspaceEntityMetadataArgs) { - return []; - } - - if ( - isGatedAndNotEnabled( - workspaceEntityMetadataArgs.gate, - context.featureFlags, - ) - ) { - return []; - } - - const sourceObjectNameSingular = workspaceEntityMetadataArgs.nameSingular; - - const workspaceStaticRelationMetadataArgsCollection = - metadataArgsStorage.filterRelations( - standardObjectMetadataWorkspaceEntity, - ); - - const workspaceDynamicRelationMetadataArgsCollection = - metadataArgsStorage.filterDynamicRelations( - standardObjectMetadataWorkspaceEntity, - ); - - const joinColumnsMetadataArgsCollection = - metadataArgsStorage.filterJoinColumns( - standardObjectMetadataWorkspaceEntity, - ); - - if ( - !isDefined(workspaceStaticRelationMetadataArgsCollection) && - !isDefined(workspaceDynamicRelationMetadataArgsCollection) - ) { - throw new Error( - `No relations found for object ${sourceObjectNameSingular}`, - ); - } - - const sourceObjectMetadata = - originalObjectMetadataMap[sourceObjectNameSingular]; - - if (!isDefined(sourceObjectMetadata)) { - throw new Error( - `Source object ${sourceObjectNameSingular} not found in database while parsing relations`, - ); - } - - const relationsFromDynamicRelations = - workspaceDynamicRelationMetadataArgsCollection - .filter( - (workspaceDynamicRelationMetadataArgs) => - !isGatedAndNotEnabled( - workspaceDynamicRelationMetadataArgs.gate, - context.featureFlags, - ), - ) - .flatMap((workspaceDynamicRelationMetadataArgs) => { - const customObjectMetadataItems = Object.values( - originalObjectMetadataMap, - ).filter((objectMetadata) => objectMetadata.isCustom); - - // TODO: this is hacky and needs to be simplified - return customObjectMetadataItems.flatMap((targetObjectMetadata) => { - const relationMetadataArgs = - workspaceDynamicRelationMetadataArgs.argsFactory( - targetObjectMetadata, - ); - - const sourceFieldMetadata = sourceObjectMetadata?.fields.find( - (field) => field.name === relationMetadataArgs.name, - ) as FieldMetadataEntity; - - const targetFieldMetadata = targetObjectMetadata?.fields.find( - (field) => - field.name === - workspaceDynamicRelationMetadataArgs.inverseSideFieldKey, - ) as FieldMetadataEntity; - - if (!isDefined(sourceFieldMetadata)) { - throw new Error( - `Source field ${relationMetadataArgs.name} not found in object ${sourceObjectNameSingular} for relation ${relationMetadataArgs.name} of type ${relationMetadataArgs}`, - ); - } - - if (!isDefined(targetFieldMetadata)) { - throw new Error( - `Target field ${workspaceDynamicRelationMetadataArgs.inverseSideFieldKey} not found in object ${targetObjectMetadata.nameSingular} for relation ${relationMetadataArgs.name} of type ${workspaceDynamicRelationMetadataArgs.type}`, - ); - } - - return { - ...sourceFieldMetadata, - type: FieldMetadataType.RELATION, - settings: { - relationType: workspaceDynamicRelationMetadataArgs.type, - onDelete: - workspaceDynamicRelationMetadataArgs.type === - RelationType.MANY_TO_ONE - ? workspaceDynamicRelationMetadataArgs.onDelete - : undefined, - joinColumnName: relationMetadataArgs.joinColumn, - }, - relationTargetObjectMetadataId: targetObjectMetadata.id, - relationTargetFieldMetadataId: targetFieldMetadata.id, - isNullable: workspaceDynamicRelationMetadataArgs.isNullable, - } satisfies FieldMetadataEntity; - }); - }); - - const staticRelations = workspaceStaticRelationMetadataArgsCollection - .filter( - (workspaceRelationMetadataArgs) => - !isGatedAndNotEnabled( - workspaceRelationMetadataArgs.gate, - context.featureFlags, - ), - ) - .map((workspaceRelationMetadataArgs) => { - const inverseSideTarget = - workspaceRelationMetadataArgs.inverseSideTarget(); - const targetObjectNameSingular = convertClassNameToObjectMetadataName( - inverseSideTarget.name, - ); - const sourceFieldMetadataName = workspaceRelationMetadataArgs.name; - const targetFieldMetadataName = - workspaceRelationMetadataArgs.inverseSideFieldKey ?? - sourceObjectNameSingular; - - const joinColumnName = - workspaceRelationMetadataArgs.type === RelationType.MANY_TO_ONE - ? getJoinColumn( - joinColumnsMetadataArgsCollection, - workspaceRelationMetadataArgs as WorkspaceRelationMetadataArgs, - ) - : undefined; - - const sourceFieldMetadata = sourceObjectMetadata?.fields.find( - (field) => field.name === sourceFieldMetadataName, - ) as FieldMetadataEntity; - - if (!isDefined(sourceFieldMetadata)) { - throw new Error( - `Source field ${sourceFieldMetadataName} not found in object ${sourceObjectNameSingular} for relation ${workspaceRelationMetadataArgs.name} of type ${workspaceRelationMetadataArgs.type}`, - ); - } - - const targetObjectMetadata = - originalObjectMetadataMap[targetObjectNameSingular]; - - if (!isDefined(targetObjectMetadata)) { - throw new Error( - `Target object ${targetObjectNameSingular} not found in database for relation ${workspaceRelationMetadataArgs.name} of type ${workspaceRelationMetadataArgs.type}`, - ); - } - - const targetFieldMetadata = targetObjectMetadata.fields.find( - (field) => field.name === targetFieldMetadataName, - ) as FieldMetadataEntity; - - if (!isDefined(targetFieldMetadata)) { - throw new Error( - `Target field ${targetFieldMetadataName} not found in object ${targetObjectNameSingular} for relation ${workspaceRelationMetadataArgs.name} of type ${workspaceRelationMetadataArgs.type}`, - ); - } - - const type = workspaceRelationMetadataArgs.isMorphRelation - ? FieldMetadataType.MORPH_RELATION - : FieldMetadataType.RELATION; - - return { - ...sourceFieldMetadata, - type, - settings: { - relationType: workspaceRelationMetadataArgs.type, - onDelete: - workspaceRelationMetadataArgs.type === RelationType.MANY_TO_ONE - ? workspaceRelationMetadataArgs.onDelete - : undefined, - joinColumnName, - }, - morphId: workspaceRelationMetadataArgs.morphId ?? null, - relationTargetObjectMetadataId: targetObjectMetadata.id, - relationTargetFieldMetadataId: targetFieldMetadata.id, - } satisfies FieldMetadataEntity; - }); - - return [...staticRelations, ...relationsFromDynamicRelations]; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field.factory.ts deleted file mode 100644 index 750ff045bf0..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field.factory.ts +++ /dev/null @@ -1,254 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type WorkspaceDynamicRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface'; -import { type WorkspaceEntityMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-entity-metadata-args.interface'; -import { type WorkspaceFieldMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface'; -import { type WorkspaceRelationMetadataArgs } from 'src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface'; -import { - type PartialComputedFieldMetadata, - type PartialFieldMetadata, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util'; - -@Injectable() -export class StandardFieldFactory { - create( - target: typeof BaseWorkspaceEntity, - context: WorkspaceSyncContext, - ): (PartialFieldMetadata | PartialComputedFieldMetadata)[]; - - create( - targets: (typeof BaseWorkspaceEntity)[], - context: WorkspaceSyncContext, - ): Map; - - create( - targetOrTargets: - | typeof BaseWorkspaceEntity - | (typeof BaseWorkspaceEntity)[], - context: WorkspaceSyncContext, - ): - | (PartialFieldMetadata | PartialComputedFieldMetadata)[] - | Map { - if (Array.isArray(targetOrTargets)) { - return targetOrTargets.reduce((acc, target) => { - const workspaceEntityMetadataArgs = - metadataArgsStorage.filterEntities(target); - - if (!workspaceEntityMetadataArgs) { - return acc; - } - - if ( - isGatedAndNotEnabled( - workspaceEntityMetadataArgs.gate, - context.featureFlags, - 'database', - ) - ) { - return acc; - } - - acc.set( - workspaceEntityMetadataArgs.standardId, - this.create(target, context), - ); - - return acc; - }, new Map()); - } - - const workspaceEntityMetadataArgs = - metadataArgsStorage.filterEntities(targetOrTargets); - const metadataCollections = this.collectMetadata(targetOrTargets); - - return [ - ...this.processMetadata( - workspaceEntityMetadataArgs, - metadataCollections.fields, - context, - this.createFieldMetadata, - ), - ...this.processMetadata( - workspaceEntityMetadataArgs, - metadataCollections.relations, - context, - this.createFieldRelationMetadata, - ), - ...this.processMetadata( - workspaceEntityMetadataArgs, - metadataCollections.dynamicRelations, - context, - this.createComputedFieldRelationMetadata, - ), - ]; - } - - private collectMetadata(target: typeof BaseWorkspaceEntity) { - return { - fields: metadataArgsStorage.filterFields(target), - relations: metadataArgsStorage.filterRelations(target), - dynamicRelations: metadataArgsStorage.filterDynamicRelations(target), - }; - } - - private processMetadata< - T, - U extends PartialFieldMetadata | PartialComputedFieldMetadata, - >( - workspaceEntityMetadataArgs: WorkspaceEntityMetadataArgs | undefined, - metadataArgs: T[], - context: WorkspaceSyncContext, - createMetadata: ( - workspaceEntityMetadataArgs: WorkspaceEntityMetadataArgs | undefined, - args: T, - context: WorkspaceSyncContext, - ) => U[], - ): U[] { - return metadataArgs - .flatMap((args) => - createMetadata(workspaceEntityMetadataArgs, args, context), - ) - .filter(Boolean) as U[]; - } - - /** - * Create field metadata - */ - private createFieldMetadata( - _workspaceEntityMetadataArgs: WorkspaceEntityMetadataArgs | undefined, - workspaceFieldMetadataArgs: WorkspaceFieldMetadataArgs, - context: WorkspaceSyncContext, - ): PartialFieldMetadata[] { - if ( - isGatedAndNotEnabled( - workspaceFieldMetadataArgs.gate, - context.featureFlags, - ) - ) { - return []; - } - - return [ - { - type: workspaceFieldMetadataArgs.type, - standardId: workspaceFieldMetadataArgs.standardId, - name: workspaceFieldMetadataArgs.name, - icon: workspaceFieldMetadataArgs.icon, - label: workspaceFieldMetadataArgs.label, - description: workspaceFieldMetadataArgs.description, - defaultValue: workspaceFieldMetadataArgs.defaultValue ?? null, - options: workspaceFieldMetadataArgs.options ?? null, - settings: workspaceFieldMetadataArgs.settings ?? null, - standardOverrides: null, - workspaceId: context.workspaceId, - isNullable: workspaceFieldMetadataArgs.isNullable, - isUnique: workspaceFieldMetadataArgs.isUnique, - isCustom: workspaceFieldMetadataArgs.isDeprecated ? true : false, - isSystem: workspaceFieldMetadataArgs.isSystem ?? false, - isActive: workspaceFieldMetadataArgs.isActive ?? true, - isUIReadOnly: workspaceFieldMetadataArgs.isUIReadOnly ?? false, - asExpression: workspaceFieldMetadataArgs.asExpression, - generatedType: workspaceFieldMetadataArgs.generatedType, - isLabelSyncedWithName: workspaceFieldMetadataArgs.isLabelSyncedWithName, - relationTargetFieldMetadata: null, - relationTargetFieldMetadataId: null, - relationTargetObjectMetadata: null, - relationTargetObjectMetadataId: null, - morphId: null, - }, - ]; - } - - /** - * Create relation field metadata - */ - private createFieldRelationMetadata( - workspaceEntityMetadataArgs: WorkspaceEntityMetadataArgs | undefined, - workspaceRelationMetadataArgs: WorkspaceRelationMetadataArgs, - context: WorkspaceSyncContext, - ): PartialFieldMetadata[] { - const fieldMetadataCollection: PartialFieldMetadata[] = []; - - if ( - isGatedAndNotEnabled( - workspaceRelationMetadataArgs.gate, - context.featureFlags, - ) - ) { - return []; - } - - fieldMetadataCollection.push({ - type: FieldMetadataType.RELATION, - standardId: workspaceRelationMetadataArgs.standardId, - name: workspaceRelationMetadataArgs.name, - label: workspaceRelationMetadataArgs.label, - description: workspaceRelationMetadataArgs.description, - icon: workspaceRelationMetadataArgs.icon, - workspaceId: context.workspaceId, - isCustom: false, - isSystem: - workspaceEntityMetadataArgs?.isSystem || - workspaceRelationMetadataArgs.isSystem, - isUIReadOnly: workspaceRelationMetadataArgs.isUIReadOnly, - isNullable: true, - isUnique: false, - isActive: workspaceRelationMetadataArgs.isActive ?? true, - isLabelSyncedWithName: - workspaceRelationMetadataArgs.isLabelSyncedWithName, - defaultValue: null, - options: null, - relationTargetFieldMetadata: null, - relationTargetFieldMetadataId: null, - relationTargetObjectMetadata: null, - relationTargetObjectMetadataId: null, - settings: null, // accurate ? looks weird for this to be undefined even for standard fields ? - standardOverrides: null, - morphId: null, - }); - - return fieldMetadataCollection; - } - - /** - * Create computed field relation metadata - */ - private createComputedFieldRelationMetadata( - workspaceEntityMetadataArgs: WorkspaceEntityMetadataArgs | undefined, - workspaceDynamicRelationMetadataArgs: - | WorkspaceDynamicRelationMetadataArgs - | undefined, - context: WorkspaceSyncContext, - ): PartialComputedFieldMetadata[] { - if ( - !workspaceDynamicRelationMetadataArgs || - isGatedAndNotEnabled( - workspaceDynamicRelationMetadataArgs.gate, - context.featureFlags, - ) - ) { - return []; - } - - return [ - // Foreign key will be computed in compute-standard-object.util.ts, because we need to know the custom object - { - type: FieldMetadataType.RELATION, - argsFactory: workspaceDynamicRelationMetadataArgs.argsFactory, - workspaceId: context.workspaceId, - isCustom: false, - isSystem: - workspaceEntityMetadataArgs?.isSystem || - workspaceDynamicRelationMetadataArgs.isSystem, - isNullable: workspaceDynamicRelationMetadataArgs.isNullable, - }, - ]; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts deleted file mode 100644 index 89018a67f4b..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { generateDeterministicIndexName } from 'src/engine/metadata-modules/index-metadata/utils/generate-deterministic-index-name'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { computeTableName } from 'src/engine/utils/compute-table-name.util'; -import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util'; - -@Injectable() -export class StandardIndexFactory { - create( - standardObjectMetadataDefinitions: (typeof BaseWorkspaceEntity)[], - context: WorkspaceSyncContext, - originalStandardObjectMetadataMap: Record, - originalCustomObjectMetadataMap: Record, - ): Partial[] { - const standardIndexOnStandardObjects = - standardObjectMetadataDefinitions.flatMap((standardObjectMetadata) => - this.createStandardIndexMetadataForStandardObject( - standardObjectMetadata, - context, - originalStandardObjectMetadataMap, - ), - ); - - const standardIndexesOnCustomObjects = - this.createStandardIndexMetadataForCustomObject( - context, - originalCustomObjectMetadataMap, - ); - - return [ - standardIndexOnStandardObjects, - standardIndexesOnCustomObjects, - ].flat(); - } - - private createStandardIndexMetadataForStandardObject( - target: typeof BaseWorkspaceEntity, - context: WorkspaceSyncContext, - originalStandardObjectMetadataMap: Record, - ): Partial[] { - const workspaceEntity = metadataArgsStorage.filterEntities(target); - - if (!workspaceEntity) { - throw new Error( - `Object metadata decorator not found, can't parse ${target.name}`, - ); - } - - if (isGatedAndNotEnabled(workspaceEntity?.gate, context.featureFlags)) { - return []; - } - - const workspaceIndexMetadataArgsCollection = metadataArgsStorage - .filterIndexes(target) - .filter((workspaceIndexMetadataArgs) => { - return !isGatedAndNotEnabled( - workspaceIndexMetadataArgs.gate, - context.featureFlags, - ); - }); - - return workspaceIndexMetadataArgsCollection.map( - (workspaceIndexMetadataArgs) => { - const objectMetadata = - originalStandardObjectMetadataMap[workspaceEntity.nameSingular]; - - if (!objectMetadata) { - throw new Error( - `Object metadata not found for ${workspaceEntity.nameSingular}`, - ); - } - - const indexMetadata: PartialIndexMetadata = { - workspaceId: context.workspaceId, - objectMetadataId: objectMetadata.id, - name: workspaceIndexMetadataArgs.name, - columns: workspaceIndexMetadataArgs.columns, - isUnique: workspaceIndexMetadataArgs.isUnique, - isCustom: false, - indexWhereClause: workspaceIndexMetadataArgs.whereClause, - indexType: workspaceIndexMetadataArgs.type ?? IndexType.BTREE, - }; - - return indexMetadata; - }, - ); - } - - private createStandardIndexMetadataForCustomObject( - context: WorkspaceSyncContext, - originalCustomObjectMetadataMap: Record, - ): Partial[] { - const target = CustomWorkspaceEntity; - const workspaceEntity = metadataArgsStorage.filterExtendedEntities(target); - - if (!workspaceEntity) { - throw new Error( - `Object metadata decorator not found, can't parse ${target.name}`, - ); - } - - const workspaceIndexMetadataArgsCollection = metadataArgsStorage - .filterIndexes(target) - .filter((workspaceIndexMetadataArgs) => { - return !isGatedAndNotEnabled( - workspaceIndexMetadataArgs.gate, - context.featureFlags, - ); - }); - - return Object.entries(originalCustomObjectMetadataMap).flatMap( - ([customObjectName, customObjectMetadata]) => { - return workspaceIndexMetadataArgsCollection.map( - (workspaceIndexMetadataArgs) => { - const indexMetadata: PartialIndexMetadata = { - workspaceId: context.workspaceId, - objectMetadataId: customObjectMetadata.id, - name: `IDX_${generateDeterministicIndexName([computeTableName(customObjectName, true), ...workspaceIndexMetadataArgs.columns])}`, - columns: workspaceIndexMetadataArgs.columns, - isCustom: false, - isUnique: workspaceIndexMetadataArgs.isUnique, - indexType: workspaceIndexMetadataArgs.type ?? IndexType.BTREE, - indexWhereClause: workspaceIndexMetadataArgs.whereClause, - }; - - return indexMetadata; - }, - ); - }, - ); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts deleted file mode 100644 index fa7008f80a6..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type PartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util'; - -@Injectable() -export class StandardObjectFactory { - create( - standardObjectMetadataDefinitions: (typeof BaseWorkspaceEntity)[], - context: WorkspaceSyncContext, - ): Omit[] { - return standardObjectMetadataDefinitions - .map((metadata) => this.createObjectMetadata(metadata, context)) - .filter((metadata): metadata is PartialWorkspaceEntity => !!metadata); - } - - private createObjectMetadata( - target: typeof BaseWorkspaceEntity, - context: WorkspaceSyncContext, - ): - | Omit - | undefined { - const workspaceEntityMetadataArgs = - metadataArgsStorage.filterEntities(target); - - if (!workspaceEntityMetadataArgs) { - throw new Error( - `Object metadata decorator not found, can't parse ${target.name}`, - ); - } - - if ( - isGatedAndNotEnabled( - workspaceEntityMetadataArgs.gate, - context.featureFlags, - 'database', - ) - ) { - return undefined; - } - - return { - // TODO: Remove targetTableName when we remove the old metadata - labelIdentifierFieldMetadataId: null, - imageIdentifierFieldMetadataId: null, - duplicateCriteria: [], - ...workspaceEntityMetadataArgs, - description: workspaceEntityMetadataArgs.description ?? null, - targetTableName: 'DEPRECATED', - workspaceId: context.workspaceId, - dataSourceId: context.dataSourceId, - isCustom: false, - isRemote: false, - isSystem: workspaceEntityMetadataArgs.isSystem ?? false, - }; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-role.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-role.factory.ts deleted file mode 100644 index 824d7ba7c32..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-role.factory.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; -import { fromStandardRoleDefinitionToFlatRole } from 'src/engine/metadata-modules/flat-role/utils/from-standard-role-definition-to-flat-role.util'; -import { type RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { type StandardRoleDefinition } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/types/standard-role-definition.interface'; - -@Injectable() -export class StandardRoleFactory { - create( - roleDefinitions: StandardRoleDefinition[], - context: WorkspaceSyncContext, - existingRoles: RoleEntity[], - ): FlatRole[] { - const computedRoles: FlatRole[] = []; - - for (const roleDefinition of roleDefinitions) { - const existingRole = existingRoles.find( - (role) => role.standardId === roleDefinition.standardId, - ); - - const flatRole = fromStandardRoleDefinitionToFlatRole( - roleDefinition, - context.workspaceId, - ); - - if (existingRole) { - computedRoles.push({ - ...flatRole, - id: existingRole.id, - universalIdentifier: roleDefinition.standardId || existingRole.id, - createdAt: existingRole.createdAt.toISOString(), - }); - } else { - computedRoles.push({ - ...flatRole, - universalIdentifier: roleDefinition.standardId, - }); - } - } - - return computedRoles; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts deleted file mode 100644 index 7edf6bbf427..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; - -import { type ComputedPartialFieldMetadata } from './partial-field-metadata.interface'; -import { type ComputedPartialWorkspaceEntity } from './partial-object-metadata.interface'; - -export const enum ComparatorAction { - SKIP = 'SKIP', - CREATE = 'CREATE', - UPDATE = 'UPDATE', - DELETE = 'DELETE', -} - -export interface ComparatorSkipResult { - action: ComparatorAction.SKIP; -} - -export interface ComparatorCreateResult { - action: ComparatorAction.CREATE; - object: T; -} - -export interface ComparatorUpdateResult { - action: ComparatorAction.UPDATE; - object: T; -} - -export interface ComparatorDeleteResult { - action: ComparatorAction.DELETE; - object: T; -} - -export type ObjectComparatorResult = - | ComparatorSkipResult - | ComparatorCreateResult< - Omit - > - | ComparatorUpdateResult< - Partial< - Omit - > & { - id: string; - } - >; - -export type FieldComparatorResult = - | ComparatorSkipResult - | ComparatorCreateResult - | ComparatorUpdateResult< - Partial & { id: string } - > - | ComparatorDeleteResult; - -export type FieldRelationComparatorResult = - | ComparatorSkipResult - | ComparatorCreateResult< - Partial< - ComputedPartialFieldMetadata< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > & { - id: string; - type: FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION; - } - > - | ComparatorUpdateResult< - Partial< - ComputedPartialFieldMetadata< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > & { - id: string; - type: FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION; - } - > - | ComparatorDeleteResult< - FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - >; - -export type IndexComparatorResult = - | ComparatorCreateResult> - | ComparatorUpdateResult> - | ComparatorDeleteResult; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface.ts deleted file mode 100644 index 768b5ab6b5b..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - type ExcludeFunctions, - type FieldMetadataType, -} from 'twenty-shared/types'; - -import { type WorkspaceDynamicRelationMetadataArgsFactory } from 'src/engine/twenty-orm/interfaces/workspace-dynamic-relation-metadata-args.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; - -// Should get deprecated in favor of the FlatFieldMetadata -export type PartialFieldMetadata< - T extends FieldMetadataType = FieldMetadataType, -> = Pick< - FieldMetadataEntity, - | 'type' - | 'name' - | 'defaultValue' - | 'standardOverrides' - | 'options' - | 'settings' - | 'isCustom' - | 'isUIReadOnly' - | 'isNullable' - | 'isUnique' - | 'isLabelSyncedWithName' - | 'relationTargetFieldMetadataId' - | 'relationTargetFieldMetadata' - | 'relationTargetObjectMetadataId' - | 'relationTargetObjectMetadata' - | 'morphId' -> & { - standardId: string; - label: string | ((objectMetadata: ObjectMetadataEntity) => string); - description?: string | ((objectMetadata: ObjectMetadataEntity) => string); - icon?: string; - isSystem?: boolean; - workspaceId: string; - objectMetadataId?: string; - isActive?: boolean; - asExpression?: string; // not accurate - generatedType?: 'STORED' | 'VIRTUAL'; // not accurate -}; - -export type PartialComputedFieldMetadata = { - type: FieldMetadataType.RELATION; - argsFactory: WorkspaceDynamicRelationMetadataArgsFactory; - isNullable?: boolean; - isSystem?: boolean; - isCustom: boolean; - workspaceId: string; - objectMetadataId?: string; -}; - -export type ComputedPartialFieldMetadata< - T extends FieldMetadataType = FieldMetadataType, -> = { - [K in keyof PartialFieldMetadata]: ExcludeFunctions< - PartialFieldMetadata[K] - >; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface.ts deleted file mode 100644 index fb2e77e80b4..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; - -export type PartialIndexMetadata = Omit< - IndexMetadataEntity, - | 'id' - | 'objectMetadata' - | 'indexFieldMetadatas' - | 'createdAt' - | 'updatedAt' - | 'universalIdentifier' - | 'application' - | 'applicationId' - | 'workspace' -> & { - columns: string[]; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts deleted file mode 100644 index 5fe11d17822..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - type ComputedPartialFieldMetadata, - type PartialComputedFieldMetadata, - type PartialFieldMetadata, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; - -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; - -export type PartialWorkspaceEntity = Pick< - ObjectMetadataEntity, - | 'workspaceId' - | 'nameSingular' - | 'namePlural' - | 'labelSingular' - | 'labelPlural' - | 'description' - | 'icon' - | 'targetTableName' - | 'indexMetadatas' - | 'isSystem' - | 'isCustom' - | 'isRemote' - | 'isAuditLogged' - | 'isSearchable' - | 'duplicateCriteria' - | 'labelIdentifierFieldMetadataId' - | 'imageIdentifierFieldMetadataId' -> & { - standardId: string; - dataSourceId: string; - fields: (PartialFieldMetadata | PartialComputedFieldMetadata)[]; -}; - -export type ComputedPartialWorkspaceEntity = Omit< - PartialWorkspaceEntity, - 'standardId' | 'fields' -> & { - standardId: string | null; - fields: ComputedPartialFieldMetadata[]; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-action.type.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-action.type.ts deleted file mode 100644 index 98dc44a0a6f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-action.type.ts +++ /dev/null @@ -1 +0,0 @@ -export type UpdaterAction = 'create' | 'update' | 'delete'; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-options.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-options.interface.ts deleted file mode 100644 index a037d0db595..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-options.interface.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { type UpdaterAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-action.type'; - -export interface UpdaterOptions { - actions: UpdaterAction[]; -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface.ts deleted file mode 100644 index 511ebb385d1..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface'; -export interface WorkspaceSyncContext { - workspaceId: string; - dataSourceId: string; - featureFlags: FeatureFlagMap; -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts deleted file mode 100644 index 2f730732f94..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts +++ /dev/null @@ -1,523 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - FieldMetadataType, - compositeTypeDefinitions, -} from 'twenty-shared/types'; -import { capitalize } from 'twenty-shared/utils'; -import { - type EntityManager, - type EntityTarget, - type FindOptionsWhere, - In, - type ObjectLiteral, - type Repository, -} from 'typeorm'; -import { type DeepPartial } from 'typeorm/common/DeepPartial'; -import { v4 as uuidV4 } from 'uuid'; - -import { type PartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; -import { type PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface'; -import { type UpdaterOptions } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-options.interface'; - -import { isFieldMetadataRelationOrMorphRelation } from 'src/engine/api/graphql/workspace-schema-builder/utils/is-field-metadata-relation-or-morph-relation.utils'; -import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; -import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { isCompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/utils/is-composite-field-metadata-type.util'; -import { IndexFieldMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-field-metadata.entity'; -import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; -import { isFieldMetadataEntityOfType } from 'src/engine/utils/is-field-metadata-of-type.util'; -import { type FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; -import { type ObjectMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; - -@Injectable() -export class WorkspaceMetadataUpdaterService { - constructor() {} - - async updateObjectMetadata( - manager: EntityManager, - storage: WorkspaceSyncStorage, - options?: UpdaterOptions, - ): Promise<{ - createdObjectMetadataCollection: ObjectMetadataEntity[]; - updatedObjectMetadataCollection: ObjectMetadataUpdate[]; - }> { - const objectMetadataRepository = - manager.getRepository(ObjectMetadataEntity); - let createdObjectMetadataCollection: ObjectMetadataEntity[] = []; - let updatedObjectMetadataCollection: ObjectMetadataUpdate[] = []; - - /** - * Create object metadata - */ - if (!options || options.actions.includes('create')) { - const createdPartialObjectMetadataCollection = - await objectMetadataRepository.save( - storage.objectMetadataCreateCollection.map((objectMetadata) => ({ - ...objectMetadata, - isActive: true, - })) as DeepPartial[], - ); - const identifiers = createdPartialObjectMetadataCollection.map( - (object) => object.id, - ); - - createdObjectMetadataCollection = await manager.find( - ObjectMetadataEntity, - { - where: { id: In(identifiers) }, - relations: ['dataSource', 'fields'], - }, - ); - } - - /** - * Update object metadata - */ - if (!options || options.actions.includes('update')) { - updatedObjectMetadataCollection = await this.updateEntities( - manager, - ObjectMetadataEntity, - storage.objectMetadataUpdateCollection, - [ - 'fields', - 'dataSourceId', - 'workspaceId', - 'labelIdentifierFieldMetadataId', - 'imageIdentifierFieldMetadataId', - ], - ); - } - - /** - * Delete object metadata - */ - if ( - storage.objectMetadataDeleteCollection.length > 0 && - (!options || options.actions.includes('delete')) - ) { - await objectMetadataRepository.delete( - storage.objectMetadataDeleteCollection.map((object) => object.id), - ); - } - - return { - createdObjectMetadataCollection, - updatedObjectMetadataCollection, - }; - } - - /** - * TODO: Refactor this - */ - private prepareFieldMetadataForCreation(field: PartialFieldMetadata) { - return { - ...field, - ...((field.type === FieldMetadataType.SELECT || - field.type === FieldMetadataType.MULTI_SELECT) && - field.options - ? { - options: this.generateUUIDForNewSelectFieldOptions( - field.options as FieldMetadataComplexOption[], - ), - } - : {}), - }; - } - - private generateUUIDForNewSelectFieldOptions( - options: FieldMetadataComplexOption[], - ): FieldMetadataComplexOption[] { - return options.map((option) => ({ - ...option, - id: uuidV4(), - })); - } - - async updateFieldMetadata( - manager: EntityManager, - storage: WorkspaceSyncStorage, - options?: UpdaterOptions, - ): Promise<{ - createdFieldMetadataCollection: FieldMetadataEntity[]; - updatedFieldMetadataCollection: FieldMetadataUpdate[]; - }> { - const fieldMetadataRepository = manager.getRepository(FieldMetadataEntity); - const indexFieldMetadataRepository = manager.getRepository( - IndexFieldMetadataEntity, - ); - const indexMetadataRepository = manager.getRepository(IndexMetadataEntity); - let createdFieldMetadataCollection: FieldMetadataEntity[] = []; - let updatedFieldMetadataCollection: FieldMetadataUpdate[] = []; - - /** - * Update field metadata - */ - if (!options || options.actions.includes('update')) { - updatedFieldMetadataCollection = - await this.updateEntities( - manager, - FieldMetadataEntity, - storage.fieldMetadataUpdateCollection, - ['objectMetadataId', 'workspaceId'], - ); - } - - /** - * Create field metadata - */ - if (!options || options.actions.includes('create')) { - createdFieldMetadataCollection = await fieldMetadataRepository.save( - storage.fieldMetadataCreateCollection.map((field) => - this.prepareFieldMetadataForCreation(field), - ) as DeepPartial[], - ); - } - - /** - * Delete field metadata - */ - // TODO: handle relation fields deletion. We need to delete the relation metadata first due to the DB constraint. - const fieldMetadataDeleteCollectionWithoutRelationType = - storage.fieldMetadataDeleteCollection.filter( - (field) => field.type !== FieldMetadataType.RELATION, - ); - - if ( - fieldMetadataDeleteCollectionWithoutRelationType.length > 0 && - (!options || options.actions.includes('delete')) - ) { - await this.deleteIndexFieldMetadata( - fieldMetadataDeleteCollectionWithoutRelationType, - indexFieldMetadataRepository, - indexMetadataRepository, - ); - - await fieldMetadataRepository.delete( - fieldMetadataDeleteCollectionWithoutRelationType.map( - (field) => field.id, - ), - ); - } - - return { - createdFieldMetadataCollection: - createdFieldMetadataCollection as FieldMetadataEntity[], - updatedFieldMetadataCollection, - }; - } - - async updateFieldRelationMetadata( - manager: EntityManager, - storage: WorkspaceSyncStorage, - options?: UpdaterOptions, - ): Promise<{ - createdFieldRelationMetadataCollection: FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[]; - updatedFieldRelationMetadataCollection: FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[]; - deletedFieldRelationMetadataCollection: FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[]; - }> { - let createdFieldRelationMetadataCollection: FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[] = []; - let updatedFieldRelationMetadataCollection: FieldMetadataUpdate< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[] = []; - - /** - * Create field relation metadata - */ - if (!options || options.actions.includes('create')) { - createdFieldRelationMetadataCollection = await this.updateEntities< - FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - >( - manager, - FieldMetadataEntity, - storage.fieldRelationMetadataCreateCollection, - ['objectMetadataId', 'workspaceId'], - ); - } - - /** - * Update field relation metadata - */ - if (!options || options.actions.includes('update')) { - updatedFieldRelationMetadataCollection = await this.updateEntities< - FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - >( - manager, - FieldMetadataEntity, - storage.fieldRelationMetadataUpdateCollection, - ['objectMetadataId', 'workspaceId'], - ); - } - - if (!options || options.actions.includes('delete')) { - const fieldMetadataRepository = - manager.getRepository(FieldMetadataEntity); - - if (storage.fieldRelationMetadataDeleteCollection.length > 0) { - await fieldMetadataRepository.delete( - storage.fieldRelationMetadataDeleteCollection.map( - (field) => field.id, - ), - ); - } - } - - return { - createdFieldRelationMetadataCollection, - updatedFieldRelationMetadataCollection, - deletedFieldRelationMetadataCollection: - storage.fieldRelationMetadataDeleteCollection.map((field) => ({ - current: field, - altered: field, - })), - }; - } - - async deleteIndexFieldMetadata( - fieldMetadataDeleteCollectionWithoutRelationType: Partial[], - indexFieldMetadataRepository: Repository, - indexMetadataRepository: Repository, - ) { - const indexFieldMetadatas = await indexFieldMetadataRepository.find({ - where: { - fieldMetadataId: In( - fieldMetadataDeleteCollectionWithoutRelationType.map( - (field) => field.id, - ), - ), - }, - relations: { - indexMetadata: true, - }, - }); - - const uniqueIndexMetadataIds = [ - ...new Set(indexFieldMetadatas.map((field) => field.indexMetadataId)), - ]; - - if (uniqueIndexMetadataIds.length > 0) { - await indexMetadataRepository.delete(uniqueIndexMetadataIds); - } - } - - async updateIndexMetadata( - manager: EntityManager, - storage: WorkspaceSyncStorage, - originalObjectMetadataCollection: ObjectMetadataEntity[], - ): Promise<{ - createdIndexMetadataCollection: IndexMetadataEntity[]; - }> { - const indexMetadataRepository = manager.getRepository(IndexMetadataEntity); - - const convertIndexMetadataForSaving = ( - indexMetadata: PartialIndexMetadata, - ) => { - const convertIndexFieldMetadataForSaving = ( - column: string, - order: number, - ): DeepPartial => { - // Ensure correct type - const fieldMetadata = originalObjectMetadataCollection - .find((object) => object.id === indexMetadata.objectMetadataId) - ?.fields.find((field) => { - if (isFieldMetadataRelationOrMorphRelation(field)) { - if (field.settings?.joinColumnName === column) { - return true; - } - } - - if ( - isFieldMetadataEntityOfType( - field, - FieldMetadataType.MORPH_RELATION, - ) - ) { - return; - } - - if (field.name === column) { - return true; - } - - if (!isCompositeFieldMetadataType(field.type)) { - return; - } - - const compositeType = compositeTypeDefinitions.get( - field.type as CompositeFieldMetadataType, - ); - - if (!compositeType) { - throw new Error( - `Composite type definition not found for type: ${field.type}`, - ); - } - - const columnNames = compositeType.properties.reduce( - (acc, column) => { - acc.push(`${field.name}${capitalize(column.name)}`); - - return acc; - }, - [] as string[], - ); - - if (columnNames.includes(column)) { - return true; - } - }); - - if (!fieldMetadata) { - throw new Error(` - Field metadata not found for column ${column} in object ${indexMetadata.objectMetadataId} - `); - } - - return { - fieldMetadataId: fieldMetadata.id, - order, - }; - }; - - return { - ...indexMetadata, - indexFieldMetadatas: indexMetadata.columns.map((column, index) => - convertIndexFieldMetadataForSaving(column, index), - ), - }; - }; - - /** - * Create index metadata - */ - const createdIndexMetadataCollection = await indexMetadataRepository.save( - storage.indexMetadataCreateCollection.map(convertIndexMetadataForSaving), - ); - - /** - * Delete index metadata - */ - if (storage.indexMetadataDeleteCollection.length > 0) { - await indexMetadataRepository.delete( - storage.indexMetadataDeleteCollection.map( - (indexMetadata) => indexMetadata.id, - ), - ); - } - - return { - createdIndexMetadataCollection, - }; - } - - /** - * Update entities in the database - * @param manager EntityManager - * @param entityClass Entity class - * @param updateCollection Update collection - * @param keysToOmit keys to omit in the merge process - * @returns Promise<{ current: Entity; altered: Entity }[]> - */ - private async updateEntities( - manager: EntityManager, - entityClass: EntityTarget, - updateCollection: Array< - DeepPartial> & { - id: string; - } - >, - keysToOmit: (keyof Entity)[] = [], - ): Promise<{ current: Entity; altered: Entity }[]> { - const repository = manager.getRepository(entityClass); - - const oldEntities = await repository.findBy({ - id: In(updateCollection.map((updateItem) => updateItem.id)), - } as FindOptionsWhere); - - // Pre-process old collection into a mapping for quick access - const oldEntitiesMap = new Map( - oldEntities.map((oldEntity) => [oldEntity.id, oldEntity]), - ); - - // Combine old and new field metadata to get whole updated entities - const entityUpdateCollection = updateCollection.map((updateItem) => { - const oldEntity = oldEntitiesMap.get(updateItem.id); - - if (!oldEntity) { - throw new Error(` - Entity ${updateItem.id} not found in oldEntities`); - } - - // TypeORM 😢 - // If we didn't provide the old value, it will be set to null objects that are not in the updateObjectMetadata - // and override the old value with null in the DB. - // Also save method doesn't return the whole entity if you give a partial one. - // https://github.com/typeorm/typeorm/issues/3490 - // To avoid calling update in a for loop, we did this hack. - const mergedUpdate = { - ...oldEntity, - ...updateItem, - }; - - // Do not update isSystem for workspaceMember - // TODO to remove after https://github.com/twentyhq/twenty/issues/15688 - const isObjectMetadataUpdate = entityClass === ObjectMetadataEntity; - - if ( - isObjectMetadataUpdate && - oldEntity?.standardId === STANDARD_OBJECT_IDS.workspaceMember && - 'isSystem' in updateItem && - 'isSystem' in oldEntity - ) { - (mergedUpdate as unknown as { isSystem: boolean }).isSystem = - oldEntity.isSystem as boolean; - } - - // Omit keys that we don't want to override - keysToOmit.forEach((key) => { - delete mergedUpdate[key]; - }); - - return mergedUpdate; - }); - - const updatedEntities = await repository.save(entityUpdateCollection); - - return updatedEntities.map((updatedEntity) => { - const oldEntity = oldEntitiesMap.get(updatedEntity.id); - - if (!oldEntity) { - throw new Error(` - Entity ${updatedEntity.id} not found in oldEntitiesMap - `); - } - - return { - current: oldEntity, - altered: { - ...updatedEntity, - ...keysToOmit.reduce( - (acc, key) => ({ ...acc, [key]: oldEntity[key] }), - {}, - ), - }, - }; - }); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-agent.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-agent.service.ts deleted file mode 100644 index 448601aef73..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-agent.service.ts +++ /dev/null @@ -1,168 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { removePropertiesFromRecord } from 'twenty-shared/utils'; -import { IsNull, Not, type EntityManager } from 'typeorm'; - -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { AgentEntity } from 'src/engine/metadata-modules/ai/ai-agent/entities/agent.entity'; -import { transformAgentEntityToFlatAgent } from 'src/engine/metadata-modules/flat-agent/utils/transform-agent-entity-to-flat-agent.util'; -import { RoleTargetEntity } from 'src/engine/metadata-modules/role-target/role-target.entity'; -import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { WorkspaceAgentComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-agent.comparator'; -import { StandardAgentFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-agent.factory'; -import { STANDARD_AGENT_DEFINITIONS } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-agents/standard-agent-definitions'; - -@Injectable() -export class WorkspaceSyncAgentService { - private readonly logger = new Logger(WorkspaceSyncAgentService.name); - - constructor( - private readonly standardAgentFactory: StandardAgentFactory, - private readonly workspaceAgentComparator: WorkspaceAgentComparator, - ) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - ): Promise { - this.logger.log('Syncing standard agent.'); - - const agentRepository = manager.getRepository(AgentEntity); - - const existingStandardAgentEntities = await agentRepository.find({ - where: { - workspaceId: context.workspaceId, - standardId: Not(IsNull()), - }, - }); - - const targetStandardAgents = this.standardAgentFactory.create( - STANDARD_AGENT_DEFINITIONS, - context, - existingStandardAgentEntities, - ); - - const agentComparatorResults = this.workspaceAgentComparator.compare({ - fromFlatAgents: existingStandardAgentEntities.map( - transformAgentEntityToFlatAgent, - ), - toFlatAgents: targetStandardAgents, - }); - - for (const agentComparatorResult of agentComparatorResults) { - switch (agentComparatorResult.action) { - case ComparatorAction.CREATE: { - const agentToCreate = agentComparatorResult.object; - - const flatAgentData = removePropertiesFromRecord(agentToCreate, [ - 'universalIdentifier', - 'id', - ]); - - const createdAgent = await agentRepository.save({ - ...flatAgentData, - workspaceId: context.workspaceId, - }); - - const agentDefinition = STANDARD_AGENT_DEFINITIONS.find( - (def) => def.standardId === createdAgent.standardId, - ); - - if (agentDefinition?.standardRoleId) { - try { - const roleRepository = manager.getRepository(RoleEntity); - const role = await roleRepository.findOne({ - where: { - standardId: agentDefinition.standardRoleId, - workspaceId: context.workspaceId, - }, - }); - - if (!role) { - throw new Error( - `Standard role with standard ID ${agentDefinition.standardRoleId} not found in workspace`, - ); - } - - const roleTargetRepository = - manager.getRepository(RoleTargetEntity); - - await roleTargetRepository.save({ - roleId: role.id, - agentId: createdAgent.id, - workspaceId: context.workspaceId, - }); - } catch (error) { - this.logger.error( - `Failed to assign standard role ${agentDefinition.standardRoleId} to agent ${createdAgent.id}: ${error.message}`, - error.stack, - ); - throw error; - } - } - break; - } - - case ComparatorAction.UPDATE: { - const agentToUpdate = agentComparatorResult.object; - - const flatAgentData = removePropertiesFromRecord(agentToUpdate, [ - 'id', - 'universalIdentifier', - 'workspaceId', - 'standardRoleId' as keyof typeof agentToUpdate, - ]); - - await agentRepository.update({ id: agentToUpdate.id }, flatAgentData); - - const agentDefinition = STANDARD_AGENT_DEFINITIONS.find( - (def) => def.standardId === agentToUpdate.standardId, - ); - - if (agentDefinition?.standardRoleId) { - try { - const roleRepository = manager.getRepository(RoleEntity); - const role = await roleRepository.findOne({ - where: { - standardId: agentDefinition.standardRoleId, - workspaceId: context.workspaceId, - }, - }); - - if (!role) { - throw new Error( - `Standard role with standard ID ${agentDefinition.standardRoleId} not found in workspace`, - ); - } - - const roleTargetRepository = - manager.getRepository(RoleTargetEntity); - - await roleTargetRepository.save({ - roleId: role.id, - agentId: agentToUpdate.id, - workspaceId: context.workspaceId, - }); - } catch (error) { - this.logger.error( - `Failed to assign standard role ${agentDefinition.standardRoleId} to agent ${agentToUpdate.id}: ${error.message}`, - error.stack, - ); - throw error; - } - } - break; - } - - case ComparatorAction.DELETE: { - const agentToDelete = agentComparatorResult.object; - - await agentRepository.delete({ id: agentToDelete.id }); - break; - } - } - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts deleted file mode 100644 index 36cb2af08ad..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts +++ /dev/null @@ -1,273 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { FieldMetadataType } from 'twenty-shared/types'; -import { type EntityManager } from 'typeorm'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; -import { - ComparatorAction, - type FieldRelationComparatorResult, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { WorkspaceMigrationFieldRelationFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field-relation.factory'; -import { - type FieldMetadataUpdate, - WorkspaceMigrationFieldFactory, -} from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; -import { WorkspaceFieldRelationComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field-relation.comparator'; -import { StandardFieldRelationFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field-relation.factory'; -import { WorkspaceMetadataUpdaterService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; -import { mapObjectMetadataByUniqueIdentifier } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util'; - -@Injectable() -export class WorkspaceSyncFieldMetadataRelationService { - private readonly logger = new Logger( - WorkspaceSyncFieldMetadataRelationService.name, - ); - - constructor( - private readonly standardFieldRelationFactory: StandardFieldRelationFactory, - private readonly workspaceFieldRelationComparator: WorkspaceFieldRelationComparator, - private readonly workspaceMetadataUpdaterService: WorkspaceMetadataUpdaterService, - private readonly workspaceMigrationFieldFactory: WorkspaceMigrationFieldFactory, - private readonly workspaceMigrationFieldRelationFactory: WorkspaceMigrationFieldRelationFactory, - ) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - storage: WorkspaceSyncStorage, - ): Promise[]> { - let originalObjectMetadataCollection = - await this.getOriginalObjectMetadataCollection(context, manager); - - const customObjectMetadataCollection = - originalObjectMetadataCollection.filter( - (objectMetadata) => objectMetadata.isCustom, - ); - - // Create map of object metadata & field metadata by unique identifier - const originalObjectMetadataMapByName = mapObjectMetadataByUniqueIdentifier( - originalObjectMetadataCollection, - // Relation are based on the singular name - (objectMetadata) => objectMetadata.nameSingular, - ); - - await this.synchronizeStandardObjectRelationFields( - context, - originalObjectMetadataCollection, - originalObjectMetadataMapByName, - storage, - ); - - await this.synchronizeCustomObjectRelationFields( - context, - customObjectMetadataCollection, - originalObjectMetadataMapByName, - storage, - ); - - this.logger.log('Updating workspace metadata'); - - // Save field metadata to DB - const metadataFieldUpdaterResult = - await this.workspaceMetadataUpdaterService.updateFieldRelationMetadata( - manager, - storage, - ); - - this.logger.log('Generating migrations'); - - const updateFieldWorkspaceMigrations = - await this.workspaceMigrationFieldFactory.create( - originalObjectMetadataCollection, - [ - // Both of them are update as field where created in WorkspaceSyncFieldMetadataService - ...metadataFieldUpdaterResult.createdFieldRelationMetadataCollection, - ...metadataFieldUpdaterResult.updatedFieldRelationMetadataCollection, - ...metadataFieldUpdaterResult.deletedFieldRelationMetadataCollection, - ] as FieldMetadataUpdate[], - WorkspaceMigrationBuilderAction.UPDATE, - ); - - // Resync updated object metadata - originalObjectMetadataCollection = - await this.getOriginalObjectMetadataCollection(context, manager); - - const deletedFieldRelationMetadataCollection = - metadataFieldUpdaterResult.deletedFieldRelationMetadataCollection.map( - (field) => field.altered, - ); - - const deleteFieldRelationWorkspaceMigrations = - await this.workspaceMigrationFieldRelationFactory.create( - originalObjectMetadataCollection, - deletedFieldRelationMetadataCollection, - WorkspaceMigrationBuilderAction.DELETE, - ); - - const createdFieldRelationMetadataCollection = - metadataFieldUpdaterResult.createdFieldRelationMetadataCollection.map( - (field) => field.altered, - ); - - const createFieldRelationWorkspaceMigrations = - await this.workspaceMigrationFieldRelationFactory.create( - originalObjectMetadataCollection, - createdFieldRelationMetadataCollection, - WorkspaceMigrationBuilderAction.CREATE, - ); - - const updateFieldRelationWorkspaceMigrations = - await this.workspaceMigrationFieldRelationFactory.create( - originalObjectMetadataCollection, - metadataFieldUpdaterResult.updatedFieldRelationMetadataCollection, - WorkspaceMigrationBuilderAction.UPDATE, - ); - - // TODO: Should we handle deletion of relation here? - - this.logger.log('Saving migrations'); - - return [ - ...updateFieldWorkspaceMigrations, - ...deleteFieldRelationWorkspaceMigrations, - ...createFieldRelationWorkspaceMigrations, - ...updateFieldRelationWorkspaceMigrations, - ]; - } - - private async synchronizeStandardObjectRelationFields( - context: WorkspaceSyncContext, - originalObjectMetadataCollection: ObjectMetadataEntity[], - originalObjectMetadataMapByName: Record, - storage: WorkspaceSyncStorage, - ): Promise { - // Create map of original and standard object metadata by standard ids - const originalObjectMetadataMap = mapObjectMetadataByUniqueIdentifier( - originalObjectMetadataCollection, - ); - - // Loop over all standard objects and compare them with the objects in DB - for (const standardObjectMetadataDefinition of standardObjectMetadataDefinitions) { - const workspaceEntityMetadataArgs = metadataArgsStorage.filterEntities( - standardObjectMetadataDefinition, - ); - - if (!workspaceEntityMetadataArgs) { - continue; - } - - const standardFieldMetadataRelationCollection = - this.standardFieldRelationFactory.computeRelationFieldsForStandardObject( - standardObjectMetadataDefinition, - context, - originalObjectMetadataMapByName, - ); - - const originalObjectMetadata = - originalObjectMetadataMap[workspaceEntityMetadataArgs.standardId]; - - const originalFieldRelationMetadataCollection = - (originalObjectMetadata?.fields.filter( - (field) => - field.type === FieldMetadataType.RELATION || - field.type === FieldMetadataType.MORPH_RELATION, - ) ?? []) as FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[]; - - if (originalFieldRelationMetadataCollection.length === 0) { - continue; - } - - const fieldComparatorResults = - this.workspaceFieldRelationComparator.compare( - originalFieldRelationMetadataCollection, - standardFieldMetadataRelationCollection, - ); - - this.storeComparatorResults(fieldComparatorResults, storage); - } - } - - private async synchronizeCustomObjectRelationFields( - _context: WorkspaceSyncContext, - customObjectMetadataCollection: ObjectMetadataEntity[], - originalObjectMetadataMapByName: Record, - storage: WorkspaceSyncStorage, - ): Promise { - // Loop over all custom objects from the DB and compare their fields with standard fields - for (const customObjectMetadata of customObjectMetadataCollection) { - const originalFieldRelationMetadataCollection = - (customObjectMetadata.fields.filter( - (field) => - field.type === FieldMetadataType.RELATION || - field.type === FieldMetadataType.MORPH_RELATION, - ) ?? []) as FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[]; - - const customFieldMetadataRelationCollection = - this.standardFieldRelationFactory.computeRelationFieldsForCustomObject( - customObjectMetadata, - originalObjectMetadataMapByName, - ); - - const fieldComparatorResults = - this.workspaceFieldRelationComparator.compare( - originalFieldRelationMetadataCollection, - customFieldMetadataRelationCollection, - ); - - this.storeComparatorResults(fieldComparatorResults, storage); - } - } - - private async getOriginalObjectMetadataCollection( - context: WorkspaceSyncContext, - manager: EntityManager, - ): Promise { - const objectMetadataRepository = - manager.getRepository(ObjectMetadataEntity); - - const originalObjectMetadataCollection = - await objectMetadataRepository.find({ - where: { - workspaceId: context.workspaceId, - }, - relations: ['dataSource', 'fields'], - }); - - return originalObjectMetadataCollection; - } - - private storeComparatorResults( - fieldComparatorResults: FieldRelationComparatorResult[], - storage: WorkspaceSyncStorage, - ): void { - for (const fieldComparatorResult of fieldComparatorResults) { - switch (fieldComparatorResult.action) { - case ComparatorAction.CREATE: { - storage.addCreateFieldRelationMetadata(fieldComparatorResult.object); - break; - } - case ComparatorAction.UPDATE: { - storage.addUpdateFieldRelationMetadata(fieldComparatorResult.object); - break; - } - case ComparatorAction.DELETE: { - storage.addDeleteFieldRelationMetadata(fieldComparatorResult.object); - break; - } - } - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata.service.ts deleted file mode 100644 index c84a10e9cf4..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata.service.ts +++ /dev/null @@ -1,237 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { type EntityManager } from 'typeorm'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; -import { - ComparatorAction, - type FieldComparatorResult, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { WorkspaceMigrationFieldFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; -import { WorkspaceFieldComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-field.comparator'; -import { StandardFieldFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-field.factory'; -import { WorkspaceMetadataUpdaterService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; -import { computeStandardFields } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util'; -import { mapObjectMetadataByUniqueIdentifier } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util'; - -@Injectable() -export class WorkspaceSyncFieldMetadataService { - private readonly logger = new Logger(WorkspaceSyncFieldMetadataService.name); - - constructor( - private readonly standardFieldFactory: StandardFieldFactory, - private readonly workspaceFieldComparator: WorkspaceFieldComparator, - private readonly workspaceMetadataUpdaterService: WorkspaceMetadataUpdaterService, - private readonly workspaceMigrationFieldFactory: WorkspaceMigrationFieldFactory, - ) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - storage: WorkspaceSyncStorage, - ): Promise[]> { - const objectMetadataRepository = - manager.getRepository(ObjectMetadataEntity); - - // Retrieve object metadata collection from DB - const originalObjectMetadataCollection = - await objectMetadataRepository.find({ - where: { - workspaceId: context.workspaceId, - // We're only interested in standard fields - }, - relations: ['dataSource', 'fields'], - }); - const customObjectMetadataCollection = - originalObjectMetadataCollection.filter( - (objectMetadata) => objectMetadata.isCustom, - ); - - await this.synchronizeStandardObjectFields( - context, - originalObjectMetadataCollection, - customObjectMetadataCollection, - storage, - ); - - await this.synchronizeCustomObjectFields( - context, - customObjectMetadataCollection, - storage, - ); - - this.logger.log('Updating workspace metadata'); - - const metadataFieldUpdaterResult = - await this.workspaceMetadataUpdaterService.updateFieldMetadata( - manager, - storage, - ); - - this.logger.log('Generating migrations'); - - const deleteFieldWorkspaceMigrations = - await this.workspaceMigrationFieldFactory.create( - originalObjectMetadataCollection, - storage.fieldMetadataDeleteCollection, - WorkspaceMigrationBuilderAction.DELETE, - ); - - const updateFieldWorkspaceMigrations = - await this.workspaceMigrationFieldFactory.create( - originalObjectMetadataCollection, - metadataFieldUpdaterResult.updatedFieldMetadataCollection, - WorkspaceMigrationBuilderAction.UPDATE, - ); - - const createFieldWorkspaceMigrations = - await this.workspaceMigrationFieldFactory.create( - originalObjectMetadataCollection, - metadataFieldUpdaterResult.createdFieldMetadataCollection, - WorkspaceMigrationBuilderAction.CREATE, - ); - - this.logger.log('Saving migrations'); - - return [ - ...deleteFieldWorkspaceMigrations, - ...updateFieldWorkspaceMigrations, - ...createFieldWorkspaceMigrations, - ]; - } - - /** - * This can be optimized to avoid import of standardObjectFactory here. - * We should refactor the logic of the factory, so this one only create the objects and not the fields. - * Then standardFieldFactory should be used to create the fields of standard objects. - */ - private async synchronizeStandardObjectFields( - context: WorkspaceSyncContext, - originalObjectMetadataCollection: ObjectMetadataEntity[], - customObjectMetadataCollection: ObjectMetadataEntity[], - storage: WorkspaceSyncStorage, - ): Promise { - // Create standard field metadata map - const standardObjectStandardFieldMetadataMap = - this.standardFieldFactory.create( - standardObjectMetadataDefinitions, - context, - ); - - // Create map of original and standard object metadata by standard ids - const originalObjectMetadataMap = mapObjectMetadataByUniqueIdentifier( - originalObjectMetadataCollection, - ); - - // Loop over all standard objects and compare them with the objects in DB - for (const [ - standardObjectId, - standardFieldMetadataCollection, - ] of standardObjectStandardFieldMetadataMap) { - const originalObjectMetadata = - originalObjectMetadataMap[standardObjectId]; - - const computedStandardFieldMetadataCollection = computeStandardFields( - context, - standardFieldMetadataCollection, - originalObjectMetadata, - // We need to provide this for generated relations with custom objects - customObjectMetadataCollection, - ); - - const fieldComparatorResults = this.workspaceFieldComparator.compare( - originalObjectMetadata.id, - originalObjectMetadata.fields, - computedStandardFieldMetadataCollection, - ); - - this.storeComparatorResults(fieldComparatorResults, storage); - } - } - - synchronizeCustomObject( - context: WorkspaceSyncContext, - customObjectMetadata: ObjectMetadataEntity, - ): FieldComparatorResult[] { - // Create standard field metadata collection - const customObjectStandardFieldMetadataCollection = - this.standardFieldFactory.create(CustomWorkspaceEntity, context); - - const standardFieldMetadataCollection = computeStandardFields( - context, - customObjectStandardFieldMetadataCollection, - customObjectMetadata, - ); - - /** - * COMPARE FIELD METADATA - */ - const fieldComparatorResults = this.workspaceFieldComparator.compare( - customObjectMetadata.id, - customObjectMetadata.fields, - standardFieldMetadataCollection, - ); - - return fieldComparatorResults; - } - - private async synchronizeCustomObjectFields( - context: WorkspaceSyncContext, - customObjectMetadataCollection: ObjectMetadataEntity[], - storage: WorkspaceSyncStorage, - ): Promise { - // Create standard field metadata collection - const customObjectStandardFieldMetadataCollection = - this.standardFieldFactory.create(CustomWorkspaceEntity, context); - - // Loop over all custom objects from the DB and compare their fields with standard fields - for (const customObjectMetadata of customObjectMetadataCollection) { - // Also, maybe it's better to refactor a bit and move generation part into a separate module ? - const standardFieldMetadataCollection = computeStandardFields( - context, - customObjectStandardFieldMetadataCollection, - customObjectMetadata, - ); - - /** - * COMPARE FIELD METADATA - */ - const fieldComparatorResults = this.workspaceFieldComparator.compare( - customObjectMetadata.id, - customObjectMetadata.fields, - standardFieldMetadataCollection, - ); - - this.storeComparatorResults(fieldComparatorResults, storage); - } - } - - private storeComparatorResults( - fieldComparatorResults: FieldComparatorResult[], - storage: WorkspaceSyncStorage, - ): void { - for (const fieldComparatorResult of fieldComparatorResults) { - switch (fieldComparatorResult.action) { - case ComparatorAction.CREATE: { - storage.addCreateFieldMetadata(fieldComparatorResult.object); - break; - } - case ComparatorAction.UPDATE: { - storage.addUpdateFieldMetadata(fieldComparatorResult.object); - break; - } - case ComparatorAction.DELETE: { - storage.addDeleteFieldMetadata(fieldComparatorResult.object); - break; - } - } - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service.ts deleted file mode 100644 index 80ab1187d56..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { Any, type EntityManager } from 'typeorm'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -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 { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationIndexFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-index.factory'; -import { WorkspaceIndexComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-index.comparator'; -import { StandardIndexFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory'; -import { WorkspaceMetadataUpdaterService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; -import { mapObjectMetadataByUniqueIdentifier } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util'; - -@Injectable() -export class WorkspaceSyncIndexMetadataService { - private readonly logger = new Logger(WorkspaceSyncIndexMetadataService.name); - - constructor( - private readonly standardIndexFactory: StandardIndexFactory, - private readonly workspaceIndexComparator: WorkspaceIndexComparator, - private readonly workspaceMetadataUpdaterService: WorkspaceMetadataUpdaterService, - private readonly workspaceMigrationIndexFactory: WorkspaceMigrationIndexFactory, - ) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - storage: WorkspaceSyncStorage, - ): Promise[]> { - this.logger.log('Syncing index metadata'); - - const objectMetadataRepository = - manager.getRepository(ObjectMetadataEntity); - - // Retrieve object metadata collection from DB - const originalObjectMetadataCollection = - await objectMetadataRepository.find({ - where: { - workspaceId: context.workspaceId, - // We're only interested in standard fields - fields: { isCustom: false }, - }, - relations: ['dataSource', 'fields', 'indexMetadatas'], - }); - - // Create map of object metadata & field metadata by unique identifier - const originalStandardObjectMetadataMap = - mapObjectMetadataByUniqueIdentifier( - originalObjectMetadataCollection.filter( - (objectMetadata) => !objectMetadata.isCustom, - ), - // Relation are based on the singular name - (objectMetadata) => objectMetadata.nameSingular, - ); - - const originalCustomObjectMetadataMap = mapObjectMetadataByUniqueIdentifier( - originalObjectMetadataCollection.filter( - (objectMetadata) => objectMetadata.isCustom, - ), - (objectMetadata) => objectMetadata.nameSingular, - ); - - const indexMetadataRepository = manager.getRepository(IndexMetadataEntity); - - const originalIndexMetadataCollection = await indexMetadataRepository.find({ - where: { - workspaceId: context.workspaceId, - objectMetadataId: Any( - Object.values(originalObjectMetadataCollection).map( - (object) => object.id, - ), - ), - isCustom: false, - }, - relations: ['indexFieldMetadatas.fieldMetadata'], - }); - - // Generate index metadata from models - const standardIndexMetadataCollection = this.standardIndexFactory.create( - standardObjectMetadataDefinitions, - context, - originalStandardObjectMetadataMap, - originalCustomObjectMetadataMap, - ); - - const indexComparatorResults = this.workspaceIndexComparator.compare( - originalIndexMetadataCollection, - standardIndexMetadataCollection, - ); - - for (const indexComparatorResult of indexComparatorResults) { - if (indexComparatorResult.action === ComparatorAction.CREATE) { - storage.addCreateIndexMetadata(indexComparatorResult.object); - } else if (indexComparatorResult.action === ComparatorAction.DELETE) { - storage.addDeleteIndexMetadata(indexComparatorResult.object); - } - } - - const metadataIndexUpdaterResult = - await this.workspaceMetadataUpdaterService.updateIndexMetadata( - manager, - storage, - originalObjectMetadataCollection, - ); - - // Create migrations - const createIndexWorkspaceMigrations = - await this.workspaceMigrationIndexFactory.create( - originalObjectMetadataCollection, - metadataIndexUpdaterResult.createdIndexMetadataCollection, - WorkspaceMigrationBuilderAction.CREATE, - ); - - const deleteIndexWorkspaceMigrations = - await this.workspaceMigrationIndexFactory.create( - originalObjectMetadataCollection, - storage.indexMetadataDeleteCollection, - WorkspaceMigrationBuilderAction.DELETE, - ); - - return [ - ...createIndexWorkspaceMigrations, - ...deleteIndexWorkspaceMigrations, - ]; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata-identifiers.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata-identifiers.service.ts deleted file mode 100644 index 0ca1487aa86..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata-identifiers.service.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -import { type EntityManager, type Repository } from 'typeorm'; -import { FieldMetadataType } from 'twenty-shared/types'; - -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { StandardObjectFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; -import { mapObjectMetadataByUniqueIdentifier } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util'; - -@Injectable() -export class WorkspaceSyncObjectMetadataIdentifiersService { - constructor(private readonly standardObjectFactory: StandardObjectFactory) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - _storage: WorkspaceSyncStorage, - ): Promise { - const objectMetadataRepository = - manager.getRepository(ObjectMetadataEntity); - - const originalObjectMetadataCollection = - await this.getOriginalObjectMetadataCollection( - context.workspaceId, - objectMetadataRepository, - ); - - const standardObjectMetadataMap = - this.createStandardObjectMetadataMap(context); - - await this.processObjectMetadataCollection( - originalObjectMetadataCollection, - standardObjectMetadataMap, - objectMetadataRepository, - ); - } - - private async getOriginalObjectMetadataCollection( - workspaceId: string, - objectMetadataRepository: Repository, - ): Promise { - return await objectMetadataRepository.find({ - where: { workspaceId, isCustom: false, isRemote: false }, - relations: ['fields'], - }); - } - - private createStandardObjectMetadataMap( - context: WorkspaceSyncContext, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - ): Record { - const standardObjectMetadataCollection = this.standardObjectFactory.create( - standardObjectMetadataDefinitions, - context, - ); - - return mapObjectMetadataByUniqueIdentifier( - standardObjectMetadataCollection, - ); - } - - private async processObjectMetadataCollection( - originalObjectMetadataCollection: ObjectMetadataEntity[], - // eslint-disable-next-line @typescript-eslint/no-explicit-any - standardObjectMetadataMap: Record, - objectMetadataRepository: Repository, - ): Promise { - for (const objectMetadata of originalObjectMetadataCollection) { - const objectStandardId = objectMetadata.standardId; - - if (!objectStandardId) { - throw new Error( - `Object ${objectMetadata.nameSingular} is missing standardId`, - ); - } - - const labelIdentifierFieldMetadata = this.findIdentifierFieldMetadata( - objectMetadata, - objectStandardId, - standardObjectMetadataMap, - 'labelIdentifierStandardId', - ); - - const imageIdentifierFieldMetadata = this.findIdentifierFieldMetadata( - objectMetadata, - objectStandardId, - standardObjectMetadataMap, - 'imageIdentifierStandardId', - ); - - this.validateFieldMetadata( - objectMetadata, - labelIdentifierFieldMetadata, - imageIdentifierFieldMetadata, - ); - - // TODO: Add image identifier field metadata - await objectMetadataRepository.save({ - ...objectMetadata, - labelIdentifierFieldMetadataId: - labelIdentifierFieldMetadata?.id ?? null, - imageIdentifierFieldMetadataId: - imageIdentifierFieldMetadata?.id ?? null, - }); - } - } - - private findIdentifierFieldMetadata( - objectMetadata: ObjectMetadataEntity, - objectStandardId: string, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - standardObjectMetadataMap: Record, - standardIdFieldName: string, - ): FieldMetadataEntity | undefined { - const identifierFieldMetadata = objectMetadata.fields.find( - (field) => - field.standardId === - standardObjectMetadataMap[objectStandardId][standardIdFieldName] && - field.standardId !== null, - ); - - if ( - !identifierFieldMetadata && - standardObjectMetadataMap[objectStandardId][standardIdFieldName] - ) { - throw new Error( - `Identifier field for object ${objectMetadata.nameSingular} does not exist`, - ); - } - - return identifierFieldMetadata; - } - - private validateFieldMetadata( - objectMetadata: ObjectMetadataEntity, - labelIdentifierFieldMetadata: FieldMetadataEntity | undefined, - imageIdentifierFieldMetadata: FieldMetadataEntity | undefined, - ): void { - if ( - labelIdentifierFieldMetadata && - ![ - FieldMetadataType.UUID, - FieldMetadataType.TEXT, - FieldMetadataType.FULL_NAME, - ].includes(labelIdentifierFieldMetadata.type) - ) { - throw new Error( - `Label identifier field for object ${objectMetadata.nameSingular} has invalid type ${labelIdentifierFieldMetadata.type}`, - ); - } - - if ( - imageIdentifierFieldMetadata && - imageIdentifierFieldMetadata.type !== FieldMetadataType.TEXT - ) { - throw new Error( - `Image identifier field for object ${objectMetadata.nameSingular} has invalid type ${imageIdentifierFieldMetadata.type}`, - ); - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts deleted file mode 100644 index 3cb52ec7cd5..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata.service.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { type EntityManager } from 'typeorm'; - -import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationObjectFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory'; -import { WorkspaceObjectComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-object.comparator'; -import { StandardObjectFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-object.factory'; -import { WorkspaceMetadataUpdaterService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service'; -import { standardObjectMetadataDefinitions } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-objects'; -import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; -import { mapObjectMetadataByUniqueIdentifier } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util'; - -@Injectable() -export class WorkspaceSyncObjectMetadataService { - private readonly logger = new Logger(WorkspaceSyncObjectMetadataService.name); - - constructor( - private readonly standardObjectFactory: StandardObjectFactory, - private readonly workspaceObjectComparator: WorkspaceObjectComparator, - private readonly workspaceMetadataUpdaterService: WorkspaceMetadataUpdaterService, - private readonly workspaceMigrationObjectFactory: WorkspaceMigrationObjectFactory, - ) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - storage: WorkspaceSyncStorage, - ): Promise[]> { - const objectMetadataRepository = - manager.getRepository(ObjectMetadataEntity); - - // Retrieve object metadata collection from DB - const originalObjectMetadataCollection = - await objectMetadataRepository.find({ - where: { - workspaceId: context.workspaceId, - fields: { isCustom: false }, - }, - relations: ['dataSource', 'fields'], - }); - - // Create standard object metadata collection - const standardObjectMetadataCollection = this.standardObjectFactory.create( - standardObjectMetadataDefinitions, - context, - ); - - // Create map of original and standard object metadata by standard ids - const originalObjectMetadataMap = mapObjectMetadataByUniqueIdentifier( - originalObjectMetadataCollection, - ); - const standardObjectMetadataMap = mapObjectMetadataByUniqueIdentifier( - standardObjectMetadataCollection, - ); - - this.logger.log('Comparing standard objects and fields metadata'); - - // Store object that need to be deleted - for (const originalObjectMetadata of originalObjectMetadataCollection.filter( - (object) => !object.isCustom, - )) { - if ( - originalObjectMetadata.standardId && - !standardObjectMetadataMap[originalObjectMetadata.standardId] - ) { - storage.addDeleteObjectMetadata(originalObjectMetadata); - } - } - - // Loop over all standard objects and compare them with the objects in DB - for (const standardObjectId in standardObjectMetadataMap) { - const originalObjectMetadata = - originalObjectMetadataMap[standardObjectId]; - const standardObjectMetadata = - standardObjectMetadataMap[standardObjectId]; - - /** - * COMPARE OBJECT METADATA - */ - const objectComparatorResult = this.workspaceObjectComparator.compare( - originalObjectMetadata, - standardObjectMetadata, - ); - - if (objectComparatorResult.action === ComparatorAction.CREATE) { - storage.addCreateObjectMetadata(standardObjectMetadata); - continue; - } - - if (objectComparatorResult.action === ComparatorAction.UPDATE) { - storage.addUpdateObjectMetadata(objectComparatorResult.object); - } - } - - this.logger.log('Updating workspace metadata'); - - // Apply changes to DB - const metadataObjectUpdaterResult = - await this.workspaceMetadataUpdaterService.updateObjectMetadata( - manager, - storage, - ); - - this.logger.log('Generating migrations'); - - // Create migrations - const createObjectWorkspaceMigrations = - await this.workspaceMigrationObjectFactory.create( - metadataObjectUpdaterResult.createdObjectMetadataCollection, - WorkspaceMigrationBuilderAction.CREATE, - ); - - const updateObjectWorkspaceMigrations = - await this.workspaceMigrationObjectFactory.create( - metadataObjectUpdaterResult.updatedObjectMetadataCollection, - WorkspaceMigrationBuilderAction.UPDATE, - ); - - const deleteObjectWorkspaceMigrations = - await this.workspaceMigrationObjectFactory.create( - storage.objectMetadataDeleteCollection, - WorkspaceMigrationBuilderAction.DELETE, - ); - - this.logger.log('Saving migrations'); - - return [ - ...createObjectWorkspaceMigrations, - ...updateObjectWorkspaceMigrations, - ...deleteObjectWorkspaceMigrations, - ]; - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-role.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-role.service.ts deleted file mode 100644 index bbc82367a1f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-role.service.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; - -import { PermissionFlagType } from 'twenty-shared/constants'; -import { removePropertiesFromRecord } from 'twenty-shared/utils'; -import { IsNull, Not, type EntityManager, type Repository } from 'typeorm'; - -import { ComparatorAction } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/comparator.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { fromRoleEntityToFlatRole } from 'src/engine/metadata-modules/flat-role/utils/from-role-entity-to-flat-role.util'; -import { PermissionFlagEntity } from 'src/engine/metadata-modules/permission-flag/permission-flag.entity'; -import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; -import { WorkspaceRoleComparator } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators/workspace-role.comparator'; -import { StandardRoleFactory } from 'src/engine/workspace-manager/workspace-sync-metadata/factories/standard-role.factory'; -import { STANDARD_ROLE_DEFINITIONS } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/standard-role-definitions'; - -@Injectable() -export class WorkspaceSyncRoleService { - private readonly logger = new Logger(WorkspaceSyncRoleService.name); - - constructor( - private readonly standardRoleFactory: StandardRoleFactory, - private readonly workspaceRoleComparator: WorkspaceRoleComparator, - ) {} - - async synchronize( - context: WorkspaceSyncContext, - manager: EntityManager, - ): Promise { - this.logger.log('Syncing standard role metadata'); - - const roleRepository = manager.getRepository(RoleEntity); - const permissionFlagRepository = - manager.getRepository(PermissionFlagEntity); - - const existingStandardRoleEntities = await roleRepository.find({ - where: { - workspaceId: context.workspaceId, - standardId: Not(IsNull()), - }, - relations: [ - 'permissionFlags', - 'roleTargets', - 'objectPermissions', - 'fieldPermissions', - ], - }); - - const targetStandardRoles = this.standardRoleFactory.create( - STANDARD_ROLE_DEFINITIONS, - context, - existingStandardRoleEntities, - ); - - const roleComparatorResults = this.workspaceRoleComparator.compare({ - fromFlatRoles: existingStandardRoleEntities.map(fromRoleEntityToFlatRole), - toFlatRoles: targetStandardRoles, - }); - - for (const roleComparatorResult of roleComparatorResults) { - switch (roleComparatorResult.action) { - case ComparatorAction.CREATE: { - const roleToCreate = roleComparatorResult.toFlatRole; - - const flatRoleData = removePropertiesFromRecord(roleToCreate, [ - 'universalIdentifier', - 'id', - 'permissionFlagIds', - 'fieldPermissionIds', - 'objectPermissionIds', - 'roleTargetIds', - ]); - - const createdRole = await roleRepository.save({ - ...flatRoleData, - workspaceId: context.workspaceId, - }); - - const roleDefinition = STANDARD_ROLE_DEFINITIONS.find( - (def) => def.standardId === roleToCreate.standardId, - ); - - if (roleDefinition?.permissionFlags?.length) { - await this.syncPermissionFlags( - permissionFlagRepository, - createdRole.id, - context.workspaceId, - roleDefinition.permissionFlags, - ); - } - break; - } - - case ComparatorAction.UPDATE: { - const roleToUpdate = roleComparatorResult.toFlatRole; - - const flatRoleData = removePropertiesFromRecord(roleToUpdate, [ - 'id', - 'universalIdentifier', - 'workspaceId', - 'permissionFlagIds', - 'fieldPermissionIds', - 'objectPermissionIds', - 'roleTargetIds', - ]); - - await roleRepository.update({ id: roleToUpdate.id }, flatRoleData); - - const roleDefinition = STANDARD_ROLE_DEFINITIONS.find( - (def) => def.standardId === roleToUpdate.standardId, - ); - - if (roleDefinition?.permissionFlags) { - await this.syncPermissionFlags( - permissionFlagRepository, - roleToUpdate.id, - context.workspaceId, - roleDefinition.permissionFlags, - ); - } - break; - } - - case ComparatorAction.DELETE: { - const roleToDelete = roleComparatorResult.fromFlatRole; - - await roleRepository.delete({ id: roleToDelete.id }); - break; - } - } - } - } - - private async syncPermissionFlags( - permissionFlagRepository: Repository, - roleId: string, - workspaceId: string, - permissionFlags: PermissionFlagType[], - ): Promise { - await permissionFlagRepository.delete({ - roleId, - workspaceId, - }); - - if (permissionFlags.length > 0) { - const newPermissionFlags = permissionFlags.map((flag) => - permissionFlagRepository.create({ - roleId, - workspaceId, - flag, - }), - ); - - await permissionFlagRepository.save(newPermissionFlags); - } - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/agents/helper-agent.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/agents/helper-agent.ts deleted file mode 100644 index df3558724d7..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/agents/helper-agent.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { DEFAULT_SMART_MODEL } from 'src/engine/metadata-modules/ai/ai-models/constants/ai-models.const'; -import { type StandardAgentDefinition } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-agents/types/standard-agent-definition.interface'; - -export const HELPER_AGENT: StandardAgentDefinition = { - standardId: '20202020-0002-0001-0001-000000000004', - name: 'helper', - label: 'Helper', - description: - 'AI agent specialized in helping users learn how to use Twenty CRM', - icon: 'IconHelp', - applicationId: null, - prompt: `You are a Helper Agent for Twenty. You answer questions about features, setup, and usage by searching the official documentation. - -Core workflow: -1. Use search_help_center tool to find relevant documentation -2. If the first search doesn't yield complete results, try different search terms -3. Synthesize information from multiple articles when needed -4. Provide clear, step-by-step answers based on the documentation -5. Be honest if the docs don't cover the topic - -When to search: -- "How to" questions -- Feature explanations -- Setup and configuration help -- Troubleshooting issues -- Best practices - -Response format: -- Summarize key information from the documentation -- Break down complex topics into clear steps -- Include important notes or prerequisites -- Use markdown for readability - -Always base answers on official Twenty documentation. Be patient and helpful.`, - modelId: DEFAULT_SMART_MODEL, - responseFormat: { type: 'text' }, - isCustom: false, - modelConfiguration: {}, - evaluationInputs: [], -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/standard-agent-definitions.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/standard-agent-definitions.ts deleted file mode 100644 index ca71dc5cbc4..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/standard-agent-definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { HELPER_AGENT } from './agents/helper-agent'; -import { type StandardAgentDefinition } from './types/standard-agent-definition.interface'; - -export const STANDARD_AGENT_DEFINITIONS = [ - HELPER_AGENT, -] as const satisfies StandardAgentDefinition[]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/types/standard-agent-definition.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/types/standard-agent-definition.interface.ts deleted file mode 100644 index 061b57ab484..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-agents/types/standard-agent-definition.interface.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { type FlatAgent } from 'src/engine/metadata-modules/flat-agent/types/flat-agent.type'; - -export type AgentOutputStrategy = 'direct' | 'synthesize'; - -export type StandardAgentDefinition = Omit< - FlatAgent, - | 'id' - | 'workspaceId' - | 'universalIdentifier' - | 'standardId' - | 'updatedAt' - | 'deletedAt' - | 'createdAt' -> & { - standardId: string; - standardRoleId?: string; - outputStrategy?: AgentOutputStrategy; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts deleted file mode 100644 index 5d52eebd6da..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity'; -import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity'; -import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; -import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; -import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; -import { DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; -import { FavoriteFolderWorkspaceEntity } from 'src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity'; -import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; -import { MessageFolderWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-folder.workspace-entity'; -import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; -import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread.workspace-entity'; -import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; -import { NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; -import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; -import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; -import { WorkflowAutomatedTriggerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity'; -import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; -import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; -import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; - -// TODO: Maybe we should automate this with the DiscoverService of Nest.JS -export const standardObjectMetadataDefinitions = [ - AttachmentWorkspaceEntity, - BlocklistWorkspaceEntity, - CalendarEventWorkspaceEntity, - CalendarChannelWorkspaceEntity, - CalendarChannelEventAssociationWorkspaceEntity, - CalendarEventParticipantWorkspaceEntity, - CompanyWorkspaceEntity, - ConnectedAccountWorkspaceEntity, - DashboardWorkspaceEntity, - FavoriteWorkspaceEntity, - FavoriteFolderWorkspaceEntity, - TimelineActivityWorkspaceEntity, - WorkflowWorkspaceEntity, - WorkflowVersionWorkspaceEntity, - WorkflowRunWorkspaceEntity, - WorkflowAutomatedTriggerWorkspaceEntity, - WorkspaceMemberWorkspaceEntity, - MessageThreadWorkspaceEntity, - MessageWorkspaceEntity, - MessageChannelWorkspaceEntity, - MessageParticipantWorkspaceEntity, - MessageFolderWorkspaceEntity, - MessageChannelMessageAssociationWorkspaceEntity, - NoteWorkspaceEntity, - NoteTargetWorkspaceEntity, - OpportunityWorkspaceEntity, - PersonWorkspaceEntity, - TaskWorkspaceEntity, - TaskTargetWorkspaceEntity, -]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role.ts deleted file mode 100644 index 42f8b1b959f..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { type StandardRoleDefinition } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/types/standard-role-definition.interface'; - -export const ADMIN_ROLE: StandardRoleDefinition = { - standardId: '20202020-0001-0001-0001-000000000001', - label: 'Admin', - description: 'Admin role', - icon: 'IconUserCog', - isEditable: false, - canUpdateAllSettings: true, - canAccessAllTools: true, - canReadAllObjectRecords: true, - canUpdateAllObjectRecords: true, - canSoftDeleteAllObjectRecords: true, - canDestroyAllObjectRecords: true, - canBeAssignedToUsers: true, - canBeAssignedToAgents: false, - canBeAssignedToApiKeys: true, - applicationId: null, // TODO: Replace with Twenty application ID -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/standard-role-definitions.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/standard-role-definitions.ts deleted file mode 100644 index f462432a55e..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/standard-role-definitions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ADMIN_ROLE } from './roles/admin-role'; -import { type StandardRoleDefinition } from './types/standard-role-definition.interface'; - -export const STANDARD_ROLE_DEFINITIONS = [ - ADMIN_ROLE, -] as const satisfies StandardRoleDefinition[]; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/types/standard-role-definition.interface.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/types/standard-role-definition.interface.ts deleted file mode 100644 index 0d6a92d16dc..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-roles/types/standard-role-definition.interface.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { type PermissionFlagType } from 'twenty-shared/constants'; - -import { type FlatRole } from 'src/engine/metadata-modules/flat-role/types/flat-role.type'; - -export type StandardRoleDefinition = Omit< - FlatRole, - | 'id' - | 'workspaceId' - | 'universalIdentifier' - | 'standardId' - | 'roleTargetIds' - | 'objectPermissionIds' - | 'permissionFlagIds' - | 'fieldPermissionIds' - | 'createdAt' - | 'updatedAt' -> & { - standardId: string; - permissionFlags?: PermissionFlagType[]; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts deleted file mode 100644 index 201df25892e..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { type FieldMetadataType } from 'twenty-shared/types'; - -import { type ComputedPartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; -import { type ComputedPartialWorkspaceEntity } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-object-metadata.interface'; - -import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { type IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; - -export class WorkspaceSyncStorage { - // Object metadata - private readonly _objectMetadataCreateCollection: Omit< - ComputedPartialWorkspaceEntity, - 'fields' | 'indexMetadatas' - >[] = []; - private readonly _objectMetadataUpdateCollection: (Partial< - Omit - > & { - id: string; - })[] = []; - private readonly _objectMetadataDeleteCollection: ObjectMetadataEntity[] = []; - - // Field metadata - private readonly _fieldMetadataCreateCollection: ComputedPartialFieldMetadata[] = - []; - private readonly _fieldMetadataUpdateCollection: (Partial & { - id: string; - })[] = []; - private readonly _fieldMetadataDeleteCollection: FieldMetadataEntity[] = []; - - // Field relation metadata - private readonly _fieldRelationMetadataCreateCollection: (Partial< - ComputedPartialFieldMetadata< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > & { - id: string; - type?: FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION; - })[] = []; - private readonly _fieldRelationMetadataUpdateCollection: (Partial< - ComputedPartialFieldMetadata< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > & { - id: string; - type?: FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION; - })[] = []; - private readonly _fieldRelationMetadataDeleteCollection: FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >[] = []; - - // Index metadata - private readonly _indexMetadataCreateCollection: Partial[] = - []; - private readonly _indexMetadataDeleteCollection: IndexMetadataEntity[] = []; - - constructor() {} - - get objectMetadataCreateCollection() { - return this._objectMetadataCreateCollection; - } - - get objectMetadataUpdateCollection() { - return this._objectMetadataUpdateCollection; - } - - get objectMetadataDeleteCollection() { - return this._objectMetadataDeleteCollection; - } - - get fieldMetadataCreateCollection() { - return this._fieldMetadataCreateCollection; - } - - get fieldMetadataUpdateCollection() { - return this._fieldMetadataUpdateCollection; - } - - get fieldMetadataDeleteCollection() { - return this._fieldMetadataDeleteCollection; - } - - get fieldRelationMetadataCreateCollection() { - return this._fieldRelationMetadataCreateCollection; - } - - get fieldRelationMetadataUpdateCollection() { - return this._fieldRelationMetadataUpdateCollection; - } - - get fieldRelationMetadataDeleteCollection() { - return this._fieldRelationMetadataDeleteCollection; - } - - get indexMetadataCreateCollection() { - return this._indexMetadataCreateCollection; - } - - get indexMetadataDeleteCollection() { - return this._indexMetadataDeleteCollection; - } - - addCreateObjectMetadata( - object: Omit, - ) { - this._objectMetadataCreateCollection.push(object); - } - - addUpdateObjectMetadata( - object: Partial & { id: string }, - ) { - this._objectMetadataUpdateCollection.push(object); - } - - addDeleteObjectMetadata(object: ObjectMetadataEntity) { - this._objectMetadataDeleteCollection.push(object); - } - - addCreateFieldMetadata(field: ComputedPartialFieldMetadata) { - this._fieldMetadataCreateCollection.push(field); - } - - addUpdateFieldMetadata( - field: Partial & { id: string }, - ) { - this._fieldMetadataUpdateCollection.push(field); - } - - addDeleteFieldMetadata(field: FieldMetadataEntity) { - this._fieldMetadataDeleteCollection.push(field); - } - - addCreateFieldRelationMetadata( - field: Partial< - ComputedPartialFieldMetadata< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > & { - id: string; - type: FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION; - }, - ) { - this._fieldRelationMetadataCreateCollection.push(field); - } - - addUpdateFieldRelationMetadata( - field: Partial< - ComputedPartialFieldMetadata< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - > - > & { - id: string; - type: FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION; - }, - ) { - this._fieldRelationMetadataUpdateCollection.push(field); - } - - addDeleteFieldRelationMetadata( - field: FieldMetadataEntity< - FieldMetadataType.RELATION | FieldMetadataType.MORPH_RELATION - >, - ) { - this._fieldRelationMetadataDeleteCollection.push(field); - } - - addCreateIndexMetadata(index: Partial) { - this._indexMetadataCreateCollection.push(index); - } - - addDeleteIndexMetadata(index: IndexMetadataEntity) { - this._indexMetadataDeleteCollection.push(index); - } -} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts deleted file mode 100644 index 905c4bd126c..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { - type ComputedPartialFieldMetadata, - type PartialComputedFieldMetadata, - type PartialFieldMetadata, -} from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { createRelationDeterministicUuid } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util'; - -export const computeStandardFields = ( - _context: WorkspaceSyncContext, - standardFieldMetadataCollection: ( - | PartialFieldMetadata - | PartialComputedFieldMetadata - )[], - originalObjectMetadata: ObjectMetadataEntity, - customObjectMetadataCollection: ObjectMetadataEntity[] = [], -): Omit[] => { - const fields: Omit< - ComputedPartialFieldMetadata, - 'createdAt' | 'updatedAt' - >[] = []; - - for (const partialFieldMetadata of standardFieldMetadataCollection) { - // Relation from standard object to custom object - if ('argsFactory' in partialFieldMetadata) { - // Compute standard fields of custom object - for (const customObjectMetadata of customObjectMetadataCollection) { - const { argsFactory, ...rest } = partialFieldMetadata; - const { joinColumn, ...data } = argsFactory(customObjectMetadata); - const relationStandardId = createRelationDeterministicUuid({ - objectId: customObjectMetadata.id, - standardId: data.standardId, - }); - - if (!joinColumn) { - throw new Error( - `Missing joinColumn for field ${data.name} in object ${customObjectMetadata.nameSingular}`, - ); - } - - // Relation - fields.push({ - ...data, - ...rest, - standardId: relationStandardId, - defaultValue: null, - isNullable: true, - isLabelSyncedWithName: true, - isUnique: null, - isUIReadOnly: false, - options: null, - relationTargetFieldMetadata: null, - relationTargetFieldMetadataId: null, - relationTargetObjectMetadata: null, - relationTargetObjectMetadataId: null, - settings: null, - standardOverrides: null, - morphId: null, - }); - } - } else { - // Relation from standard object to standard object - const labelText = - typeof partialFieldMetadata.label === 'function' - ? partialFieldMetadata.label(originalObjectMetadata) - : partialFieldMetadata.label; - const descriptionText = - typeof partialFieldMetadata.description === 'function' - ? partialFieldMetadata.description(originalObjectMetadata) - : partialFieldMetadata.description; - - fields.push({ - ...partialFieldMetadata, - label: labelText, - description: descriptionText, - }); - } - } - - return fields; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util.ts deleted file mode 100644 index 99954c8b8d8..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { type Gate } from 'src/engine/twenty-orm/interfaces/gate.interface'; - -export type GateContext = 'database' | 'workspaceApi'; - -export const isGatedAndNotEnabled = ( - gate: Gate | undefined, - workspaceFeatureFlagsMap: Record, - context?: GateContext, -): boolean => { - // If no gate, not gated - if (!gate?.featureFlag) { - return false; - } - - // Check if explicitly excluded from the specific context - switch (context) { - case 'database': - if (gate.excludeFromDatabase === false) { - return false; // Not gated for database - } - break; - case 'workspaceApi': - if (gate.excludeFromWorkspaceApi === false) { - return false; // Not gated for workspace API - } - break; - } - - // If context-specific exclusion is true or undefined (default behavior), check the flag - const featureFlagValue = workspaceFeatureFlagsMap[gate.featureFlag]; - - return !featureFlagValue; -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/should-exclude-from-workspace-api.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/should-exclude-from-workspace-api.util.ts deleted file mode 100644 index 09b1cf62b9e..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/should-exclude-from-workspace-api.util.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { type BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { metadataArgsStorage } from 'src/engine/twenty-orm/storage/metadata-args.storage'; -import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/is-gate-and-not-enabled.util'; - -export const shouldExcludeFromWorkspaceApi = ( - objectMetadataItem: { standardId?: string | null | undefined }, - standardObjectMetadataDefinitions: (typeof BaseWorkspaceEntity)[], - workspaceFeatureFlagsMap: Record, -): boolean => { - const entityMetadata = standardObjectMetadataDefinitions - .map((entity) => metadataArgsStorage.filterEntities(entity)) - .find((meta) => meta?.standardId === objectMetadataItem.standardId); - - if (!entityMetadata) { - return false; // Don't exclude non-workspace entities - } - - return isGatedAndNotEnabled( - entityMetadata?.gate, - workspaceFeatureFlagsMap, - 'workspaceApi', - ); -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util.spec.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util.spec.ts deleted file mode 100644 index f609ea8fc91..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { FieldMetadataType } from 'twenty-shared/types'; -import { type DeepPartial } from 'typeorm/common/DeepPartial'; - -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; - -import { mapObjectMetadataByUniqueIdentifier } from './sync-metadata.util'; - -describe('mapObjectMetadataByUniqueIdentifier', () => { - it('should convert an array of ObjectMetadataEntity objects into a map', () => { - const arr: DeepPartial[] = [ - { - standardId: 'user', - nameSingular: 'user', - fields: [ - { name: 'id', type: FieldMetadataType.UUID }, - { name: 'name', type: FieldMetadataType.TEXT }, - ], - }, - { - standardId: 'product', - nameSingular: 'product', - fields: [ - { name: 'id', type: FieldMetadataType.UUID }, - { name: 'name', type: FieldMetadataType.TEXT }, - { name: 'price', type: FieldMetadataType.UUID }, - ], - }, - ]; - - const mappedObject = mapObjectMetadataByUniqueIdentifier( - arr as ObjectMetadataEntity[], - ); - - expect(mappedObject).toEqual({ - user: { - standardId: 'user', - nameSingular: 'user', - fields: [ - { name: 'id', type: FieldMetadataType.UUID }, - { name: 'name', type: FieldMetadataType.TEXT }, - ], - }, - product: { - standardId: 'product', - nameSingular: 'product', - fields: [ - { name: 'id', type: FieldMetadataType.UUID }, - { name: 'name', type: FieldMetadataType.TEXT }, - { name: 'price', type: FieldMetadataType.UUID }, - ], - }, - }); - }); - - it('should return an empty map if the input array is empty', () => { - const arr: ObjectMetadataEntity[] = []; - - const mappedObject = mapObjectMetadataByUniqueIdentifier(arr); - - expect(mappedObject).toEqual({}); - }); -}); diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util.ts deleted file mode 100644 index c770ec965b8..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/sync-metadata.util.ts +++ /dev/null @@ -1,32 +0,0 @@ -/** - * This utility function converts an array of ObjectMetadataEntity objects into a map, - * where the keys are the nameSingular properties of the objects. - * Each object in the map contains the original object metadata and its fields as a nested map. - * - * @param arr - The array of ObjectMetadataEntity objects to convert. - * @param keyFactory - * @returns A map of object metadata, with nameSingular as the key and the object as the value. - */ -export const mapObjectMetadataByUniqueIdentifier = < - T extends { standardId: string | null }, ->( - arr: T[], - keyFactory: (obj: T) => string | null = (obj) => obj.standardId, -): Record => { - return arr.reduce( - (acc, curr) => { - const key = keyFactory(curr); - - if (!key) { - return acc; - } - - acc[key] = { - ...curr, - }; - - return acc; - }, - {} as Record, - ); -}; diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.module.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.module.ts deleted file mode 100644 index 74b4e5351b7..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.module.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { Module } from '@nestjs/common'; -import { TypeOrmModule } from '@nestjs/typeorm'; - -import { ApplicationModule } from 'src/engine/core-modules/application/application.module'; -import { FeatureFlagEntity } from 'src/engine/core-modules/feature-flag/feature-flag.entity'; -import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; -import { WorkspaceEntity } from 'src/engine/core-modules/workspace/workspace.entity'; -import { AiAgentRoleModule } from 'src/engine/metadata-modules/ai/ai-agent-role/ai-agent-role.module'; -import { DataSourceModule } from 'src/engine/metadata-modules/data-source/data-source.module'; -import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; -import { WorkspaceManyOrAllFlatEntityMapsCacheModule } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.module'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; -import { WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationBuilderModule } from 'src/engine/workspace-manager/workspace-migration-builder/workspace-migration-builder.module'; -import { WorkspaceMigrationRunnerModule } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.module'; -import { SyncWorkspaceLoggerService } from 'src/engine/workspace-manager/workspace-sync-metadata/commands/services/sync-workspace-logger.service'; -import { SyncWorkspaceMetadataCommand } from 'src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command'; -import { workspaceSyncMetadataComparators } from 'src/engine/workspace-manager/workspace-sync-metadata/comparators'; -import { workspaceSyncMetadataFactories } from 'src/engine/workspace-manager/workspace-sync-metadata/factories'; -import { WorkspaceMetadataUpdaterService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service'; -import { WorkspaceSyncAgentService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-agent.service'; -import { WorkspaceSyncFieldMetadataRelationService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service'; -import { WorkspaceSyncFieldMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata.service'; -import { WorkspaceSyncIndexMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service'; -import { WorkspaceSyncObjectMetadataIdentifiersService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata-identifiers.service'; -import { WorkspaceSyncObjectMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata.service'; -import { WorkspaceSyncRoleService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-role.service'; -import { WorkspaceSyncMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service'; - -@Module({ - imports: [ - ApplicationModule, - FeatureFlagModule, - WorkspaceMigrationBuilderModule, - WorkspaceMigrationRunnerModule, - TypeOrmModule.forFeature([ - FieldMetadataEntity, - ObjectMetadataEntity, - WorkspaceMigrationEntity, - ]), - DataSourceModule, - TypeOrmModule.forFeature([WorkspaceEntity, FeatureFlagEntity]), - WorkspaceMetadataVersionModule, - AiAgentRoleModule, - WorkspaceManyOrAllFlatEntityMapsCacheModule, - ], - providers: [ - ...workspaceSyncMetadataFactories, - ...workspaceSyncMetadataComparators, - WorkspaceMetadataUpdaterService, - WorkspaceSyncObjectMetadataService, - WorkspaceSyncObjectMetadataIdentifiersService, - WorkspaceSyncFieldMetadataService, - WorkspaceSyncFieldMetadataRelationService, - WorkspaceSyncMetadataService, - WorkspaceSyncIndexMetadataService, - WorkspaceSyncRoleService, - WorkspaceSyncAgentService, - SyncWorkspaceLoggerService, - SyncWorkspaceMetadataCommand, - ], - exports: [ - ...workspaceSyncMetadataFactories, - WorkspaceSyncMetadataService, - SyncWorkspaceMetadataCommand, - ], -}) -export class WorkspaceSyncMetadataModule {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts deleted file mode 100644 index 20391452aff..00000000000 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts +++ /dev/null @@ -1,336 +0,0 @@ -import { Injectable, Logger } from '@nestjs/common'; -import { InjectDataSource } from '@nestjs/typeorm'; - -import { DataSource, QueryFailedError } from 'typeorm'; - -import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; - -import { WorkspaceManyOrAllFlatEntityMapsCacheService } from 'src/engine/metadata-modules/flat-entity/services/workspace-many-or-all-flat-entity-maps-cache.service'; -import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/services/workspace-metadata-version.service'; -import { - WorkspaceMigrationEntity, - WorkspaceMigrationTableActionType, -} from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationRunnerService } from 'src/engine/workspace-manager/workspace-migration-runner/workspace-migration-runner.service'; -import { WorkspaceSyncAgentService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-agent.service'; -import { WorkspaceSyncFieldMetadataRelationService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service'; -import { WorkspaceSyncFieldMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata.service'; -import { WorkspaceSyncIndexMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service'; -import { WorkspaceSyncObjectMetadataIdentifiersService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata-identifiers.service'; -import { WorkspaceSyncObjectMetadataService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-object-metadata.service'; -import { WorkspaceSyncRoleService } from 'src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-role.service'; -import { WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; - -interface SynchronizeOptions { - applyChanges?: boolean; -} - -@Injectable() -export class WorkspaceSyncMetadataService { - private readonly logger = new Logger(WorkspaceSyncMetadataService.name); - - constructor( - @InjectDataSource() - private readonly coreDataSource: DataSource, - private readonly workspaceMigrationRunnerService: WorkspaceMigrationRunnerService, - private readonly workspaceSyncObjectMetadataService: WorkspaceSyncObjectMetadataService, - private readonly workspaceSyncFieldMetadataService: WorkspaceSyncFieldMetadataService, - private readonly workspaceSyncFieldMetadataRelationService: WorkspaceSyncFieldMetadataRelationService, - private readonly workspaceSyncIndexMetadataService: WorkspaceSyncIndexMetadataService, - private readonly workspaceSyncObjectMetadataIdentifiersService: WorkspaceSyncObjectMetadataIdentifiersService, - private readonly workspaceMetadataVersionService: WorkspaceMetadataVersionService, - private readonly workspaceSyncRoleService: WorkspaceSyncRoleService, - private readonly workspaceSyncAgentService: WorkspaceSyncAgentService, - private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService, - ) {} - - /** - * - * Sync all standard objects and fields metadata for a given workspace and data source - * This will update the metadata if it has changed and generate migrations based on the diff. - * - * @param context - * @param options - */ - public async synchronize( - context: WorkspaceSyncContext, - options: SynchronizeOptions = { applyChanges: true }, - ): Promise<{ - workspaceMigrations: WorkspaceMigrationEntity[]; - storage: WorkspaceSyncStorage; - }> { - let workspaceMigrations: WorkspaceMigrationEntity[] = []; - const storage = new WorkspaceSyncStorage(); - - const queryRunner = this.coreDataSource.createQueryRunner(); - - this.logger.log('Syncing standard objects and fields metadata'); - - await queryRunner.connect(); - await queryRunner.startTransaction(); - - const manager = queryRunner.manager; - - try { - const workspaceMigrationRepository = manager.getRepository( - WorkspaceMigrationEntity, - ); - - this.logger.log('Syncing standard objects and fields metadata'); - - // 1 - Sync standard objects - - const workspaceObjectMigrationsStart = performance.now(); - const workspaceObjectMigrations = - await this.workspaceSyncObjectMetadataService.synchronize( - context, - manager, - storage, - ); - - const workspaceObjectMigrationsEnd = performance.now(); - - this.logger.log( - `Workspace object migrations took ${workspaceObjectMigrationsEnd - workspaceObjectMigrationsStart}ms`, - ); - - // 2 - Sync standard fields on standard and custom objects - const workspaceFieldMigrationsStart = performance.now(); - const workspaceFieldMigrations = - await this.workspaceSyncFieldMetadataService.synchronize( - context, - manager, - storage, - ); - - const workspaceFieldMigrationsEnd = performance.now(); - - this.logger.log( - `Workspace field migrations took ${workspaceFieldMigrationsEnd - workspaceFieldMigrationsStart}ms`, - ); - - // Merge object and field migrations during table creation - const { - objectMigrations: mergedObjectMigrations, - fieldMigrations: mergedFieldMigrations, - } = this.mergeMigrations({ - objectMigrations: workspaceObjectMigrations, - fieldMigrations: workspaceFieldMigrations, - }); - - // 3 - Sync standard relations on standard and custom objects - const workspaceRelationMigrationsStart = performance.now(); - - let workspaceRelationMigrations: Partial[] = []; - - workspaceRelationMigrations = - await this.workspaceSyncFieldMetadataRelationService.synchronize( - context, - manager, - storage, - ); - - const workspaceRelationMigrationsEnd = performance.now(); - - this.logger.log( - `Workspace relation migrations took ${workspaceRelationMigrationsEnd - workspaceRelationMigrationsStart}ms`, - ); - - // 4 - Sync standard indexes on standard objects - const workspaceIndexMigrationsStart = performance.now(); - - const workspaceIndexMigrations = - await this.workspaceSyncIndexMetadataService.synchronize( - context, - manager, - storage, - ); - const workspaceIndexMigrationsEnd = performance.now(); - - this.logger.log( - `Workspace index migrations took ${workspaceIndexMigrationsEnd - workspaceIndexMigrationsStart}ms`, - ); - - // 5 - Sync standard object metadata identifiers, does not need to return nor apply migrations - const workspaceObjectMetadataIdentifiersStart = performance.now(); - - await this.workspaceSyncObjectMetadataIdentifiersService.synchronize( - context, - manager, - storage, - ); - - const workspaceObjectMetadataIdentifiersEnd = performance.now(); - - this.logger.log( - `Workspace object metadata identifiers took ${workspaceObjectMetadataIdentifiersEnd - workspaceObjectMetadataIdentifiersStart}ms`, - ); - - // 6 - Sync standard roles - const workspaceRoleMigrationsStart = performance.now(); - - await this.workspaceSyncRoleService.synchronize(context, manager); - - const workspaceRoleMigrationsEnd = performance.now(); - - this.logger.log( - `Workspace role migrations took ${workspaceRoleMigrationsEnd - workspaceRoleMigrationsStart}ms`, - ); - - // 7 - Sync standard agents - const workspaceAgentMigrationsStart = performance.now(); - - await this.workspaceSyncAgentService.synchronize(context, manager); - - const workspaceAgentMigrationsEnd = performance.now(); - - this.logger.log( - `Workspace agent migrations took ${workspaceAgentMigrationsEnd - workspaceAgentMigrationsStart}ms`, - ); - - const workspaceMigrationsSaveStart = performance.now(); - - // Save workspace migrations into the database - workspaceMigrations = await workspaceMigrationRepository.save([ - ...mergedObjectMigrations, - ...mergedFieldMigrations, - ...workspaceRelationMigrations, - ...workspaceIndexMigrations, - ]); - - const workspaceMigrationsSaveEnd = performance.now(); - - this.logger.log( - `Workspace migrations save took ${workspaceMigrationsSaveEnd - workspaceMigrationsSaveStart}ms`, - ); - - // If we're running a dry run, rollback the transaction and do not execute migrations - if (!options.applyChanges) { - this.logger.log('Running in dry run mode, rolling back transaction'); - - if (queryRunner.isTransactionActive) { - try { - await queryRunner.rollbackTransaction(); - } catch (error) { - // eslint-disable-next-line no-console - console.trace(`Failed to rollback transaction: ${error.message}`); - } - } - - await queryRunner.release(); - - return { - workspaceMigrations, - storage, - }; - } - - // Execute migrations - this.logger.log('Executing pending migrations'); - const executeMigrationsStart = performance.now(); - - await this.workspaceMigrationRunnerService.executeMigrationFromPendingMigrationsWithinTransaction( - context.workspaceId, - queryRunner, - ); - - await queryRunner.commitTransaction(); - - const executeMigrationsEnd = performance.now(); - - this.logger.log( - `Execute migrations took ${executeMigrationsEnd - executeMigrationsStart}ms`, - ); - } catch (error) { - this.logger.error('Sync of standard objects failed with:', error); - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - if (error instanceof QueryFailedError && (error as any).detail) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.logger.error((error as any).detail); - } - if (queryRunner.isTransactionActive) { - try { - await queryRunner.rollbackTransaction(); - } catch (error) { - // eslint-disable-next-line no-console - console.trace(`Failed to rollback transaction: ${error.message}`); - } - } - throw error; - } finally { - await queryRunner.release(); - await this.workspaceMetadataVersionService.incrementMetadataVersion( - context.workspaceId, - ); - await this.flatEntityMapsCacheService.invalidateFlatEntityMaps({ - workspaceId: context.workspaceId, - flatMapsKeys: ['flatObjectMetadataMaps', 'flatFieldMetadataMaps'], - }); - } - - return { - workspaceMigrations, - storage, - }; - } - - private mergeMigrations({ - objectMigrations, - fieldMigrations, - }: { - objectMigrations: Partial[]; - fieldMigrations: Partial[]; - }): { - objectMigrations: Partial[]; - fieldMigrations: Partial[]; - } { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const createMigrationsByTable = new Map(); - - for (const objectMigration of objectMigrations) { - if ( - !objectMigration.migrations || - objectMigration.migrations.length === 0 - ) - continue; - - const tableMigration = objectMigration.migrations[0]; - - if (tableMigration.action === WorkspaceMigrationTableActionType.CREATE) { - createMigrationsByTable.set(tableMigration.name, tableMigration); - } - } - - const fieldMigrationsWithoutTableCreation = fieldMigrations.filter( - (fieldMigration) => { - if ( - !fieldMigration.migrations || - fieldMigration.migrations.length === 0 - ) - return true; - - const tableMigration = fieldMigration.migrations[0]; - const tableName = tableMigration.name; - - if (createMigrationsByTable.has(tableName)) { - const createMigration = createMigrationsByTable.get(tableName); - - if (tableMigration.columns?.length) { - createMigration.columns = createMigration.columns || []; - createMigration.columns.push(...tableMigration.columns); - } - - return false; - } - - return true; - }, - ); - - return { - objectMigrations, - fieldMigrations: fieldMigrationsWithoutTableCreation, - }; - } -} diff --git a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts index 719894e6d66..b76c5c91e88 100644 --- a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts +++ b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts @@ -1,314 +1,41 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - ActorMetadata, - FieldMetadataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; +import { type ActorMetadata } from 'twenty-shared/types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { ATTACHMENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; -import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; -import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; +import { type NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; +import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.attachment, - - namePlural: 'attachments', - labelSingular: msg`Attachment`, - labelPlural: msg`Attachments`, - description: msg`An attachment`, - icon: STANDARD_OBJECT_ICONS.attachment, - labelIdentifierStandardId: ATTACHMENT_STANDARD_FIELD_IDS.name, -}) -@WorkspaceIsSystem() export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`Attachment name`, - icon: 'IconFileUpload', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() name: string | null; - - @WorkspaceField({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.fullPath, - type: FieldMetadataType.TEXT, - label: msg`Full path`, - description: msg`Attachment full path`, - icon: 'IconLink', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() fullPath: string | null; - - @WorkspaceField({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.type, - type: FieldMetadataType.TEXT, - label: msg`Type (deprecated)`, - description: msg`Attachment type (deprecated - use fileCategory)`, - icon: 'IconList', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsDeprecated() + /** @deprecated Use `fileCategory` field instead */ type: string | null; - - @WorkspaceField({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.fileCategory, - type: FieldMetadataType.SELECT, - label: msg`File category`, - description: msg`Attachment file category`, - icon: 'IconList', - options: [ - { - value: 'ARCHIVE', - label: 'Archive', - position: 0, - color: 'gray', - }, - { - value: 'AUDIO', - label: 'Audio', - position: 1, - color: 'pink', - }, - { - value: 'IMAGE', - label: 'Image', - position: 2, - color: 'yellow', - }, - { - value: 'PRESENTATION', - label: 'Presentation', - position: 3, - color: 'orange', - }, - { - value: 'SPREADSHEET', - label: 'Spreadsheet', - position: 4, - color: 'turquoise', - }, - { - value: 'TEXT_DOCUMENT', - label: 'Text Document', - position: 5, - color: 'blue', - }, - { - value: 'VIDEO', - label: 'Video', - position: 6, - color: 'purple', - }, - { - value: 'OTHER', - label: 'Other', - position: 7, - color: 'gray', - }, - ], - defaultValue: "'OTHER'", - }) - @WorkspaceIsFieldUIReadOnly() fileCategory: string; - - @WorkspaceField({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.author, - type: RelationType.MANY_TO_ONE, - label: msg`Author`, - description: msg`Attachment author (deprecated - use createdBy)`, - icon: 'IconCircleUser', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'authoredAttachments', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsDeprecated() - author: Relation | null; - - @WorkspaceJoinColumn('author') + /** @deprecated */ + author: EntityRelation | null; authorId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.task, - type: RelationType.MANY_TO_ONE, - label: msg`Task`, - description: msg`Attachment task`, - icon: 'IconNotes', - inverseSideTarget: () => TaskWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - task: Relation | null; - - @WorkspaceJoinColumn('task') + task: EntityRelation | null; taskId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.note, - type: RelationType.MANY_TO_ONE, - label: msg`Note`, - description: msg`Attachment note`, - icon: 'IconNotes', - inverseSideTarget: () => NoteWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - note: Relation | null; - - @WorkspaceJoinColumn('note') + note: EntityRelation | null; noteId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.person, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`Attachment person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - person: Relation | null; - - @WorkspaceJoinColumn('person') + person: EntityRelation | null; personId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.company, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`Attachment company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - company: Relation | null; - - @WorkspaceJoinColumn('company') + company: EntityRelation | null; companyId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.opportunity, - type: RelationType.MANY_TO_ONE, - label: msg`Opportunity`, - description: msg`Attachment opportunity`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => OpportunityWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - opportunity: Relation | null; - - @WorkspaceJoinColumn('opportunity') + opportunity: EntityRelation | null; opportunityId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.dashboard, - type: RelationType.MANY_TO_ONE, - label: msg`Dashboard`, - description: msg`Attachment dashboard`, - icon: 'IconLayout', - inverseSideTarget: () => DashboardWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - dashboard: Relation | null; - - @WorkspaceJoinColumn('dashboard') + dashboard: EntityRelation | null; dashboardId: string | null; - - @WorkspaceRelation({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.workflow, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`Attachment workflow`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workflow: Relation | null; - - @WorkspaceJoinColumn('workflow') + workflow: EntityRelation | null; workflowId: string | null; - - // todo: remove this decorator and the custom field - @WorkspaceDynamicRelation({ - type: RelationType.MANY_TO_ONE, - argsFactory: (oppositeObjectMetadata) => ({ - standardId: ATTACHMENT_STANDARD_FIELD_IDS.custom, - name: oppositeObjectMetadata.nameSingular, - label: oppositeObjectMetadata.labelSingular, - description: `Attachment ${oppositeObjectMetadata.labelSingular}`, - joinColumn: `${oppositeObjectMetadata.nameSingular}Id`, - icon: 'IconBuildingSkyscraper', - }), - inverseSideTarget: () => CustomWorkspaceEntity, - inverseSideFieldKey: 'attachments', - onDelete: RelationOnDeleteAction.CASCADE, - }) - custom: Relation; + custom: EntityRelation; } diff --git a/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts b/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts index 714f8b1a4fd..76c95579106 100644 --- a/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts +++ b/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts @@ -1,58 +1,9 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { BLOCKLIST_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.blocklist, - - namePlural: 'blocklists', - labelSingular: msg`Blocklist`, - labelPlural: msg`Blocklists`, - description: msg`Blocklist`, - icon: STANDARD_OBJECT_ICONS.blocklist, - labelIdentifierStandardId: BLOCKLIST_STANDARD_FIELD_IDS.handle, -}) -@WorkspaceIsSystem() export class BlocklistWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: BLOCKLIST_STANDARD_FIELD_IDS.handle, - type: FieldMetadataType.TEXT, - label: msg`Handle`, - description: msg`Handle`, - icon: 'IconAt', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handle: string | null; - - @WorkspaceRelation({ - standardId: BLOCKLIST_STANDARD_FIELD_IDS.workspaceMember, - type: RelationType.MANY_TO_ONE, - label: msg`WorkspaceMember`, - description: msg`WorkspaceMember`, - icon: 'IconCircleUser', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'blocklist', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - workspaceMember: Relation; - - @WorkspaceJoinColumn('workspaceMember') + workspaceMember: EntityRelation; workspaceMemberId: string; } diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts index e94c4c71d5c..01133110f92 100644 --- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts +++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts @@ -1,96 +1,13 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; -import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; +import { type CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.calendarChannelEventAssociation, - - namePlural: 'calendarChannelEventAssociations', - labelSingular: msg`Calendar Channel Event Association`, - labelPlural: msg`Calendar Channel Event Associations`, - description: msg`Calendar Channel Event Associations`, - icon: STANDARD_OBJECT_ICONS.calendarChannelEventAssociation, -}) -@WorkspaceIsSystem() -@WorkspaceIsNotAuditLogged() export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspaceEntity { - /** - * External ID of the calendar event. Comes from the provider's API, is unique per connected account. - * Used by the provider to identify the event in their system. - * So two External ID can be related to the same event sharing the same iCalUID. - */ - @WorkspaceField({ - standardId: - CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS.eventExternalId, - type: FieldMetadataType.TEXT, - label: msg`Event external ID`, - description: msg`Event external ID`, - icon: 'IconCalendar', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() eventExternalId: string | null; - - @WorkspaceField({ - standardId: - CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS.recurringEventExternalId, - type: FieldMetadataType.TEXT, - label: msg`Recurring Event ID`, - description: msg`Recurring Event ID`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() recurringEventExternalId: string | null; - - @WorkspaceRelation({ - standardId: - CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS.calendarChannel, - type: RelationType.MANY_TO_ONE, - label: msg`Channel ID`, - description: msg`Channel ID`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelWorkspaceEntity, - inverseSideFieldKey: 'calendarChannelEventAssociations', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarChannel: Relation; - - @WorkspaceJoinColumn('calendarChannel') + calendarChannel: EntityRelation; calendarChannelId: string; - - @WorkspaceRelation({ - standardId: - CALENDAR_CHANNEL_EVENT_ASSOCIATION_STANDARD_FIELD_IDS.calendarEvent, - type: RelationType.MANY_TO_ONE, - label: msg`Event ID`, - description: msg`Event ID`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarEventWorkspaceEntity, - inverseSideFieldKey: 'calendarChannelEventAssociations', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarEvent: Relation; - - @WorkspaceJoinColumn('calendarEvent') + calendarEvent: EntityRelation; calendarEventId: string; } diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts index fc60eb69279..b565da983d3 100644 --- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts +++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts @@ -1,25 +1,9 @@ import { registerEnumType } from '@nestjs/graphql'; -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { CALENDAR_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity'; -import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity'; +import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; export enum CalendarChannelVisibility { METADATA = 'METADATA', @@ -68,292 +52,21 @@ registerEnumType(CalendarChannelContactAutoCreationPolicy, { name: 'CalendarChannelContactAutoCreationPolicy', }); -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.calendarChannel, - - namePlural: 'calendarChannels', - labelSingular: msg`Calendar Channel`, - labelPlural: msg`Calendar Channels`, - description: msg`Calendar Channels`, - icon: STANDARD_OBJECT_ICONS.calendarChannel, - labelIdentifierStandardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.handle, -}) -@WorkspaceIsSystem() -@WorkspaceIsNotAuditLogged() export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.handle, - type: FieldMetadataType.TEXT, - label: msg`Handle`, - description: msg`Handle`, - icon: 'IconAt', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handle: string | null; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.syncStatus, - type: FieldMetadataType.SELECT, - label: msg`Sync status`, - description: msg`Sync status`, - icon: 'IconStatusChange', - options: [ - { - value: CalendarChannelSyncStatus.ONGOING, - label: 'Ongoing', - position: 1, - color: 'yellow', - }, - { - value: CalendarChannelSyncStatus.NOT_SYNCED, - label: 'Not Synced', - position: 2, - color: 'blue', - }, - { - value: CalendarChannelSyncStatus.ACTIVE, - label: 'Active', - position: 3, - color: 'green', - }, - { - value: CalendarChannelSyncStatus.FAILED_INSUFFICIENT_PERMISSIONS, - label: 'Failed Insufficient Permissions', - position: 4, - color: 'red', - }, - { - value: CalendarChannelSyncStatus.FAILED_UNKNOWN, - label: 'Failed Unknown', - position: 5, - color: 'red', - }, - ], - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncStatus: CalendarChannelSyncStatus | null; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.syncStage, - type: FieldMetadataType.SELECT, - label: msg`Sync stage`, - description: msg`Sync stage`, - icon: 'IconStatusChange', - options: [ - { - value: CalendarChannelSyncStage.CALENDAR_EVENT_LIST_FETCH_PENDING, - label: 'Calendar event list fetch pending', - position: 0, - color: 'blue', - }, - { - value: CalendarChannelSyncStage.CALENDAR_EVENT_LIST_FETCH_SCHEDULED, - label: 'Calendar event list fetch scheduled', - position: 1, - color: 'green', - }, - { - value: CalendarChannelSyncStage.CALENDAR_EVENT_LIST_FETCH_ONGOING, - label: 'Calendar event list fetch ongoing', - position: 2, - color: 'orange', - }, - { - value: CalendarChannelSyncStage.CALENDAR_EVENTS_IMPORT_PENDING, - label: 'Calendar events import pending', - position: 3, - color: 'blue', - }, - { - value: CalendarChannelSyncStage.CALENDAR_EVENTS_IMPORT_SCHEDULED, - label: 'Calendar events import scheduled', - position: 4, - color: 'green', - }, - { - value: CalendarChannelSyncStage.CALENDAR_EVENTS_IMPORT_ONGOING, - label: 'Calendar events import ongoing', - position: 5, - color: 'orange', - }, - { - value: CalendarChannelSyncStage.FAILED, - label: 'Failed', - position: 6, - color: 'red', - }, - { - value: CalendarChannelSyncStage.PENDING_CONFIGURATION, - label: 'Pending configuration', - position: 9, - color: 'gray', - }, - ], - defaultValue: `'${CalendarChannelSyncStage.PENDING_CONFIGURATION}'`, - }) - @WorkspaceIsFieldUIReadOnly() syncStage: CalendarChannelSyncStage; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.visibility, - type: FieldMetadataType.SELECT, - label: msg`Visibility`, - description: msg`Visibility`, - icon: 'IconEyeglass', - options: [ - { - value: CalendarChannelVisibility.METADATA, - label: 'Metadata', - position: 0, - color: 'green', - }, - { - value: CalendarChannelVisibility.SHARE_EVERYTHING, - label: 'Share Everything', - position: 1, - color: 'orange', - }, - ], - defaultValue: `'${CalendarChannelVisibility.SHARE_EVERYTHING}'`, - }) - @WorkspaceIsFieldUIReadOnly() visibility: string; - - @WorkspaceField({ - standardId: - CALENDAR_CHANNEL_STANDARD_FIELD_IDS.isContactAutoCreationEnabled, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Contact Auto Creation Enabled`, - description: msg`Is Contact Auto Creation Enabled`, - icon: 'IconUserCircle', - defaultValue: true, - }) - @WorkspaceIsFieldUIReadOnly() isContactAutoCreationEnabled: boolean; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.contactAutoCreationPolicy, - type: FieldMetadataType.SELECT, - label: msg`Contact auto creation policy`, - description: msg`Automatically create records for people you participated with in an event.`, - icon: 'IconUserCircle', - options: [ - { - value: - CalendarChannelContactAutoCreationPolicy.AS_PARTICIPANT_AND_ORGANIZER, - label: 'As Participant and Organizer', - color: 'green', - position: 0, - }, - { - value: CalendarChannelContactAutoCreationPolicy.AS_PARTICIPANT, - label: 'As Participant', - color: 'orange', - position: 1, - }, - { - value: CalendarChannelContactAutoCreationPolicy.AS_ORGANIZER, - label: 'As Organizer', - color: 'blue', - position: 2, - }, - { - value: CalendarChannelContactAutoCreationPolicy.NONE, - label: 'None', - color: 'red', - position: 3, - }, - ], - defaultValue: `'${CalendarChannelContactAutoCreationPolicy.AS_PARTICIPANT_AND_ORGANIZER}'`, - }) - @WorkspaceIsFieldUIReadOnly() contactAutoCreationPolicy: CalendarChannelContactAutoCreationPolicy; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.isSyncEnabled, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Sync Enabled`, - description: msg`Is Sync Enabled`, - icon: 'IconRefresh', - defaultValue: true, - }) - @WorkspaceIsFieldUIReadOnly() isSyncEnabled: boolean; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.syncCursor, - type: FieldMetadataType.TEXT, - label: msg`Sync Cursor`, - description: msg`Sync Cursor. Used for syncing events from the calendar provider`, - icon: 'IconReload', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncCursor: string | null; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.syncedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Last sync date`, - description: msg`Last sync date`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncedAt: string | null; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.syncStageStartedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Sync stage started at`, - description: msg`Sync stage started at`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncStageStartedAt: string | null; - - @WorkspaceField({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.throttleFailureCount, - type: FieldMetadataType.NUMBER, - label: msg`Throttle Failure Count`, - description: msg`Throttle Failure Count`, - icon: 'IconX', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() throttleFailureCount: number; - - @WorkspaceRelation({ - standardId: CALENDAR_CHANNEL_STANDARD_FIELD_IDS.connectedAccount, - type: RelationType.MANY_TO_ONE, - label: msg`Connected Account`, - description: msg`Connected Account`, - icon: 'IconUserCircle', - inverseSideTarget: () => ConnectedAccountWorkspaceEntity, - inverseSideFieldKey: 'calendarChannels', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - connectedAccount: Relation; - - @WorkspaceJoinColumn('connectedAccount') + connectedAccount: EntityRelation; connectedAccountId: string; - - @WorkspaceRelation({ - standardId: - CALENDAR_CHANNEL_STANDARD_FIELD_IDS.calendarChannelEventAssociations, - type: RelationType.ONE_TO_MANY, - label: msg`Calendar Channel Event Associations`, - description: msg`Calendar Channel Event Associations`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarChannelEventAssociations: Relation< + calendarChannelEventAssociations: EntityRelation< CalendarChannelEventAssociationWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts index 8e1b00364a8..ca6beb24afb 100644 --- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts +++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts @@ -1,24 +1,8 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CalendarEventWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; export enum CalendarEventParticipantResponseStatus { NEEDS_ACTION = 'NEEDS_ACTION', @@ -27,137 +11,15 @@ export enum CalendarEventParticipantResponseStatus { ACCEPTED = 'ACCEPTED', } -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.calendarEventParticipant, - - namePlural: 'calendarEventParticipants', - labelSingular: msg`Calendar event participant`, - labelPlural: msg`Calendar event participants`, - description: msg`Calendar event participants`, - icon: STANDARD_OBJECT_ICONS.calendarEventParticipant, - labelIdentifierStandardId: - CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.handle, -}) -@WorkspaceIsSystem() -@WorkspaceIsNotAuditLogged() export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.handle, - type: FieldMetadataType.TEXT, - label: msg`Handle`, - description: msg`Handle`, - icon: 'IconMail', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handle: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.displayName, - type: FieldMetadataType.TEXT, - label: msg`Display Name`, - description: msg`Display Name`, - icon: 'IconUser', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() displayName: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.isOrganizer, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Organizer`, - description: msg`Is Organizer`, - icon: 'IconUser', - defaultValue: false, - }) - @WorkspaceIsFieldUIReadOnly() isOrganizer: boolean; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.responseStatus, - type: FieldMetadataType.SELECT, - label: msg`Response Status`, - description: msg`Response Status`, - icon: 'IconUser', - options: [ - { - value: CalendarEventParticipantResponseStatus.NEEDS_ACTION, - label: 'Needs Action', - position: 0, - color: 'orange', - }, - { - value: CalendarEventParticipantResponseStatus.DECLINED, - label: 'Declined', - position: 1, - color: 'red', - }, - { - value: CalendarEventParticipantResponseStatus.TENTATIVE, - label: 'Tentative', - position: 2, - color: 'yellow', - }, - { - value: CalendarEventParticipantResponseStatus.ACCEPTED, - label: 'Accepted', - position: 3, - color: 'green', - }, - ], - defaultValue: `'${CalendarEventParticipantResponseStatus.NEEDS_ACTION}'`, - }) - @WorkspaceIsFieldUIReadOnly() responseStatus: string; - - @WorkspaceRelation({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.calendarEvent, - type: RelationType.MANY_TO_ONE, - label: msg`Event ID`, - description: msg`Event ID`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarEventWorkspaceEntity, - inverseSideFieldKey: 'calendarEventParticipants', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarEvent: Relation; - - @WorkspaceJoinColumn('calendarEvent') + calendarEvent: EntityRelation; calendarEventId: string; - - @WorkspaceRelation({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.person, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`Person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'calendarEventParticipants', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - person: Relation | null; - - @WorkspaceJoinColumn('person') + person: EntityRelation | null; personId: string | null; - - @WorkspaceRelation({ - standardId: CALENDAR_EVENT_PARTICIPANT_STANDARD_FIELD_IDS.workspaceMember, - type: RelationType.MANY_TO_ONE, - label: msg`Workspace Member`, - description: msg`Workspace Member`, - icon: 'IconUser', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'calendarEventParticipants', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workspaceMember: Relation | null; - - @WorkspaceJoinColumn('workspaceMember') + workspaceMember: EntityRelation | null; workspaceMemberId: string | null; } diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts index ed9210daafe..a8ed9efccbe 100644 --- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts +++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts @@ -1,198 +1,27 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - FieldMetadataType, - LinksMetadata, - RelationOnDeleteAction, -} from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; +import { type LinksMetadata } from 'twenty-shared/types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { CALENDAR_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity'; -import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity'; +import { type CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.calendarEvent, - - namePlural: 'calendarEvents', - labelSingular: msg`Calendar event`, - labelPlural: msg`Calendar events`, - description: msg`Calendar events`, - icon: STANDARD_OBJECT_ICONS.calendarEvent, - labelIdentifierStandardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title, -}) -@WorkspaceIsSystem() -@WorkspaceIsNotAuditLogged() export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title, - type: FieldMetadataType.TEXT, - label: msg`Title`, - description: msg`Title`, - icon: 'IconH1', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() title: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.isCanceled, - type: FieldMetadataType.BOOLEAN, - label: msg`Is canceled`, - description: msg`Is canceled`, - icon: 'IconCalendarCancel', - defaultValue: false, - }) - @WorkspaceIsFieldUIReadOnly() isCanceled: boolean; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.isFullDay, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Full Day`, - description: msg`Is Full Day`, - icon: 'IconHours24', - defaultValue: false, - }) - @WorkspaceIsFieldUIReadOnly() isFullDay: boolean; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.startsAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Start Date`, - description: msg`Start Date`, - icon: 'IconCalendarClock', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() startsAt: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.endsAt, - type: FieldMetadataType.DATE_TIME, - label: msg`End Date`, - description: msg`End Date`, - icon: 'IconCalendarClock', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() endsAt: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.externalCreatedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Creation DateTime`, - description: msg`Creation DateTime`, - icon: 'IconCalendarPlus', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() externalCreatedAt: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.externalUpdatedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Update DateTime`, - description: msg`Update DateTime`, - icon: 'IconCalendarCog', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() externalUpdatedAt: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.description, - type: FieldMetadataType.TEXT, - label: msg`Description`, - description: msg`Description`, - icon: 'IconFileDescription', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() description: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.location, - type: FieldMetadataType.TEXT, - label: msg`Location`, - description: msg`Location`, - icon: 'IconMapPin', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() location: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.iCalUid, - type: FieldMetadataType.TEXT, - label: msg`iCal UID`, - description: msg`iCal UID`, - icon: 'IconKey', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() iCalUid: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.conferenceSolution, - type: FieldMetadataType.TEXT, - label: msg`Conference Solution`, - description: msg`Conference Solution`, - icon: 'IconScreenShare', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() conferenceSolution: string | null; - - @WorkspaceField({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.conferenceLink, - type: FieldMetadataType.LINKS, - label: msg`Meet Link`, - description: msg`Meet Link`, - icon: 'IconLink', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() conferenceLink: LinksMetadata; - - @WorkspaceRelation({ - standardId: - CALENDAR_EVENT_STANDARD_FIELD_IDS.calendarChannelEventAssociations, - type: RelationType.ONE_TO_MANY, - label: msg`Calendar Channel Event Associations`, - description: msg`Calendar Channel Event Associations`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarChannelEventAssociations: Relation< + calendarChannelEventAssociations: EntityRelation< CalendarChannelEventAssociationWorkspaceEntity[] >; - - @WorkspaceRelation({ - standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.calendarEventParticipants, - type: RelationType.ONE_TO_MANY, - label: msg`Event Participants`, - description: msg`Event Participants`, - icon: 'IconUserCircle', - inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarEventParticipants: Relation< + calendarEventParticipants: EntityRelation< CalendarEventParticipantWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts b/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts index 8f6b8ba6ef9..0ce8f00b15c 100644 --- a/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts +++ b/packages/twenty-server/src/modules/company/standard-objects/company.workspace-entity.ts @@ -1,46 +1,21 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { - ActorMetadata, - AddressMetadata, FieldMetadataType, - LinksMetadata, - RelationOnDeleteAction, + type ActorMetadata, + type AddressMetadata, type CurrencyMetadata, + type LinksMetadata, } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; -import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceDuplicateCriteria } from 'src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceIsUnique } from 'src/engine/twenty-orm/decorators/workspace-is-unique.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { COMPANY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - getTsVectorColumnExpressionFromFields, - type FieldTypeAndNameMetadata, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; const NAME_FIELD_NAME = 'name'; const DOMAIN_NAME_FIELD_NAME = 'domainName'; @@ -50,263 +25,37 @@ export const SEARCH_FIELDS_FOR_COMPANY: FieldTypeAndNameMetadata[] = [ { name: DOMAIN_NAME_FIELD_NAME, type: FieldMetadataType.LINKS }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.company, - namePlural: 'companies', - labelSingular: msg`Company`, - labelPlural: msg`Companies`, - description: msg`A company`, - icon: STANDARD_OBJECT_ICONS.company, - shortcut: 'C', - labelIdentifierStandardId: COMPANY_STANDARD_FIELD_IDS.name, -}) -@WorkspaceDuplicateCriteria([['name'], ['domainNamePrimaryLinkUrl']]) -@WorkspaceIsSearchable() -export class CompanyWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`The company name`, - icon: 'IconBuildingSkyscraper', - }) - @WorkspaceIsNullable() +export class CompanyWorkspaceEntity { + // Base fields + id: string; + createdAt: string; + updatedAt: string; + deletedAt: string | null; + + // Company-specific fields name: string | null; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.domainName, - type: FieldMetadataType.LINKS, - label: msg`Domain Name`, - description: msg`The company website URL. We use this url to fetch the company icon`, - icon: 'IconLink', - settings: { - maxNumberOfValues: 1, - }, - }) - @WorkspaceIsUnique() - @WorkspaceIsNullable() domainName: LinksMetadata; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.employees, - type: FieldMetadataType.NUMBER, - label: msg`Employees`, - description: msg`Number of employees in the company`, - icon: 'IconUsers', - }) - @WorkspaceIsNullable() employees: number | null; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.linkedinLink, - type: FieldMetadataType.LINKS, - label: msg`Linkedin`, - description: msg`The company Linkedin account`, - icon: 'IconBrandLinkedin', - }) - @WorkspaceIsNullable() linkedinLink: LinksMetadata | null; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.xLink, - type: FieldMetadataType.LINKS, - label: msg`X`, - description: msg`The company Twitter/X account`, - icon: 'IconBrandX', - }) - @WorkspaceIsNullable() xLink: LinksMetadata | null; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.annualRecurringRevenue, - type: FieldMetadataType.CURRENCY, - label: msg`ARR`, - description: msg`Annual Recurring Revenue: The actual or estimated annual revenue of the company`, - icon: 'IconMoneybag', - }) - @WorkspaceIsNullable() annualRecurringRevenue: CurrencyMetadata | null; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.address, - type: FieldMetadataType.ADDRESS, - label: msg`Address`, - description: msg`Address of the company`, - icon: 'IconMap', - }) - @WorkspaceIsNullable() address: AddressMetadata; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.idealCustomerProfile, - type: FieldMetadataType.BOOLEAN, - label: msg`ICP`, - description: msg`Ideal Customer Profile: Indicates whether the company is the most suitable and valuable customer for you`, - icon: 'IconTarget', - defaultValue: false, - }) idealCustomerProfile: boolean; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Company record position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; + /** @deprecated Use `address` field instead */ + addressOld: string | null; + searchVector: string; // Relations - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.people, - type: RelationType.ONE_TO_MANY, - label: msg`People`, - description: msg`People linked to the company.`, - icon: 'IconUsers', - inverseSideTarget: () => PersonWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - people: Relation; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.accountOwner, - type: RelationType.MANY_TO_ONE, - label: msg`Account Owner`, - description: msg`Your team member responsible for managing the company account`, - icon: 'IconUserCircle', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'accountOwnerForCompanies', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - accountOwner: Relation | null; - - @WorkspaceJoinColumn('accountOwner') + people: EntityRelation; + accountOwner: EntityRelation | null; accountOwnerId: string | null; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.taskTargets, - type: RelationType.ONE_TO_MANY, - label: msg`Tasks`, - description: msg`Tasks tied to the company`, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - taskTargets: Relation; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.noteTargets, - type: RelationType.ONE_TO_MANY, - label: msg`Notes`, - description: msg`Notes tied to the company`, - icon: 'IconNotes', - inverseSideTarget: () => NoteTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - noteTargets: Relation; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.opportunities, - type: RelationType.ONE_TO_MANY, - label: msg`Opportunities`, - description: msg`Opportunities linked to the company.`, - icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - opportunities: Relation; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the company`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.attachments, - type: RelationType.ONE_TO_MANY, - label: msg`Attachments`, - description: msg`Attachments linked to the company`, - icon: 'IconFileImport', - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceRelation({ - standardId: COMPANY_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline Activities linked to the company`, - icon: 'IconIconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetCompany', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.address_deprecated, - type: FieldMetadataType.TEXT, - label: msg`Address (deprecated) `, - description: msg`Address of the company - deprecated in favor of new address field`, - icon: 'IconMap', - }) - @WorkspaceIsDeprecated() - @WorkspaceIsNullable() - addressOld: string | null; - - @WorkspaceField({ - standardId: COMPANY_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_COMPANY, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) - searchVector: string; + taskTargets: EntityRelation; + noteTargets: EntityRelation; + opportunities: EntityRelation; + favorites: EntityRelation; + attachments: EntityRelation; + timelineActivities: EntityRelation; } diff --git a/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts b/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts index 726a1e8f19a..b868502efd0 100644 --- a/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts +++ b/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts @@ -1,188 +1,25 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - ConnectedAccountProvider, - FieldMetadataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; +import { type ConnectedAccountProvider } from 'twenty-shared/types'; import { type ImapSmtpCaldavParams } from 'src/engine/core-modules/imap-smtp-caldav-connection/types/imap-smtp-caldav-connection.type'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { CONNECTED_ACCOUNT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; -import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CalendarChannelWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity'; +import { type MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.connectedAccount, - - namePlural: 'connectedAccounts', - labelSingular: msg`Connected Account`, - labelPlural: msg`Connected Accounts`, - description: msg`A connected account`, - icon: STANDARD_OBJECT_ICONS.connectedAccount, - labelIdentifierStandardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.handle, -}) -@WorkspaceIsSystem() export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.handle, - type: FieldMetadataType.TEXT, - label: msg`handle`, - description: msg`The account handle (email, username, phone number, etc.)`, - icon: 'IconMail', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handle: string | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.provider, - type: FieldMetadataType.TEXT, - label: msg`provider`, - description: msg`The account provider`, - icon: 'IconSettings', - defaultValue: `'${ConnectedAccountProvider.GOOGLE}'`, - }) - @WorkspaceIsFieldUIReadOnly() - provider: ConnectedAccountProvider; // field metadata should be a SELECT - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.accessToken, - type: FieldMetadataType.TEXT, - label: msg`Access Token`, - description: msg`Messaging provider access token`, - icon: 'IconKey', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() + provider: ConnectedAccountProvider; accessToken: string | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.refreshToken, - type: FieldMetadataType.TEXT, - label: msg`Refresh Token`, - description: msg`Messaging provider refresh token`, - icon: 'IconKey', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() refreshToken: string | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.lastCredentialsRefreshedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Last credentials refreshed at`, - description: msg`Last credentials refreshed at`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() lastCredentialsRefreshedAt: Date | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.lastSyncHistoryId, - type: FieldMetadataType.TEXT, - label: msg`Last sync history ID`, - description: msg`Last sync history ID`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() lastSyncHistoryId: string | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.authFailedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Auth failed at`, - description: msg`Auth failed at`, - icon: 'IconX', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() authFailedAt: Date | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.handleAliases, - type: FieldMetadataType.TEXT, - label: msg`Handle Aliases`, - description: msg`Handle Aliases`, - icon: 'IconMail', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handleAliases: string | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.scopes, - type: FieldMetadataType.ARRAY, - label: msg`Scopes`, - description: msg`Scopes`, - icon: 'IconSettings', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() scopes: string[] | null; - - @WorkspaceField({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.connectionParameters, - type: FieldMetadataType.RAW_JSON, - label: msg`Custom Connection Parameters`, - description: msg`JSON object containing custom connection parameters`, - icon: 'IconSettings', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() connectionParameters: ImapSmtpCaldavParams | null; - - @WorkspaceRelation({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.accountOwner, - type: RelationType.MANY_TO_ONE, - label: msg`Account Owner`, - description: msg`Account Owner`, - icon: 'IconUserCircle', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'connectedAccounts', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - accountOwner: Relation; - - @WorkspaceJoinColumn('accountOwner') + accountOwner: EntityRelation; accountOwnerId: string; - - @WorkspaceRelation({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.messageChannels, - type: RelationType.ONE_TO_MANY, - label: msg`Message Channels`, - description: msg`Message Channels`, - icon: 'IconMessage', - inverseSideTarget: () => MessageChannelWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - messageChannels: Relation; - - @WorkspaceRelation({ - standardId: CONNECTED_ACCOUNT_STANDARD_FIELD_IDS.calendarChannels, - type: RelationType.ONE_TO_MANY, - label: msg`Calendar Channels`, - description: msg`Calendar Channels`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarChannelWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - calendarChannels: Relation; + messageChannels: EntityRelation; + calendarChannels: EntityRelation; } diff --git a/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts b/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts index 28941a6d1ed..4f97c68a839 100644 --- a/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts +++ b/packages/twenty-server/src/modules/dashboard/standard-objects/dashboard.workspace-entity.ts @@ -1,34 +1,11 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - ActorMetadata, - FieldMetadataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; +import { type ActorMetadata, FieldMetadataType } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { DASHBOARD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; const TITLE_FIELD_NAME = 'title'; @@ -36,120 +13,14 @@ export const SEARCH_FIELDS_FOR_DASHBOARD: FieldTypeAndNameMetadata[] = [ { name: TITLE_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.dashboard, - - namePlural: 'dashboards', - labelSingular: msg`Dashboard`, - labelPlural: msg`Dashboards`, - description: msg`A dashboard`, - icon: STANDARD_OBJECT_ICONS.dashboard, - shortcut: 'D', - labelIdentifierStandardId: DASHBOARD_STANDARD_FIELD_IDS.title, -}) -@WorkspaceIsSearchable() export class DashboardWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.title, - type: FieldMetadataType.TEXT, - label: msg`Title`, - description: msg`Dashboard title`, - icon: 'IconNotes', - }) - @WorkspaceIsNullable() title: string | null; - - @WorkspaceField({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.pageLayoutId, - type: FieldMetadataType.UUID, - label: msg`Page Layout ID`, - description: msg`Dashboard page layout`, - icon: 'IconLayout', - }) - @WorkspaceIsNullable() - @WorkspaceIsFieldUIReadOnly() pageLayoutId: string | null; - - @WorkspaceField({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Dashboard record Position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceRelation({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline activities linked to the dashboard`, - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetDashboard', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceRelation({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the dashboard`, - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.attachments, - type: RelationType.ONE_TO_MANY, - label: msg`Attachments`, - description: msg`Attachments linked to the dashboard`, - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceField({ - standardId: DASHBOARD_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_DASHBOARD, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) + timelineActivities: EntityRelation; + favorites: EntityRelation; + attachments: EntityRelation; searchVector: string; } diff --git a/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts b/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts index 2d6e0af5b14..4676afb2dd1 100644 --- a/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts +++ b/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts @@ -1,64 +1,9 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { FAVORITE_FOLDER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.favoriteFolder, - - namePlural: 'favoriteFolders', - labelSingular: msg`Favorite Folder`, - labelPlural: msg`Favorite Folders`, - description: msg`A Folder of favorites`, - icon: 'IconFolder', -}) -@WorkspaceIsSystem() export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: FAVORITE_FOLDER_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.NUMBER, - label: msg`Position`, - description: msg`Favorite folder position`, - icon: 'IconList', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: FAVORITE_FOLDER_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`Name of the favorite folder`, - icon: 'IconText', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() name: string | null; - - @WorkspaceRelation({ - standardId: FAVORITE_FOLDER_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites in this folder`, - icon: 'IconHeart', - inverseSideFieldKey: 'favoriteFolder', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - favorites: Relation; + favorites: EntityRelation; } diff --git a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts index 40e229d7413..f1071592bdf 100644 --- a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts +++ b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts @@ -1,270 +1,42 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { FAVORITE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; -import { FavoriteFolderWorkspaceEntity } from 'src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity'; -import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; -import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; -import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; -import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; +import { type FavoriteFolderWorkspaceEntity } from 'src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity'; +import { type NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; +import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; +import { type WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; +import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.favorite, - - namePlural: 'favorites', - labelSingular: msg`Favorite`, - labelPlural: msg`Favorites`, - description: msg`A favorite that can be accessed from the left menu`, - icon: STANDARD_OBJECT_ICONS.favorite, -}) -@WorkspaceIsSystem() export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: FAVORITE_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.NUMBER, - label: msg`Position`, - description: msg`Favorite position`, - icon: 'IconList', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() position: number; - - // Relations - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.forWorkspaceMember, - type: RelationType.MANY_TO_ONE, - label: msg`Workspace Member`, - description: msg`Favorite workspace member`, - icon: 'IconCircleUser', - inverseSideFieldKey: 'favorites', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - forWorkspaceMember: Relation; - - @WorkspaceJoinColumn('forWorkspaceMember') + forWorkspaceMember: EntityRelation; forWorkspaceMemberId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.person, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`Favorite person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - person: Relation | null; - - @WorkspaceJoinColumn('person') + person: EntityRelation | null; personId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.company, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`Favorite company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - company: Relation | null; - - @WorkspaceJoinColumn('company') + company: EntityRelation | null; companyId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.favoriteFolder, - type: RelationType.MANY_TO_ONE, - label: msg`Favorite Folder`, - description: msg`The folder this favorite belongs to`, - icon: 'IconFolder', - inverseSideTarget: () => FavoriteFolderWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - favoriteFolder: Relation | null; - - @WorkspaceJoinColumn('favoriteFolder') + favoriteFolder: EntityRelation | null; favoriteFolderId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.opportunity, - type: RelationType.MANY_TO_ONE, - label: msg`Opportunity`, - description: msg`Favorite opportunity`, - icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - opportunity: Relation | null; - - @WorkspaceJoinColumn('opportunity') + opportunity: EntityRelation | null; opportunityId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.workflow, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`Favorite workflow`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workflow: Relation | null; - - @WorkspaceJoinColumn('workflow') + workflow: EntityRelation | null; workflowId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.workflowVersion, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`Favorite workflow version`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowVersionWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workflowVersion: Relation | null; - - @WorkspaceJoinColumn('workflowVersion') + workflowVersion: EntityRelation | null; workflowVersionId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.workflowRun, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`Favorite workflow run`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowRunWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workflowRun: Relation | null; - - @WorkspaceJoinColumn('workflowRun') + workflowRun: EntityRelation | null; workflowRunId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.task, - type: RelationType.MANY_TO_ONE, - label: msg`Task`, - description: msg`Favorite task`, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - task: Relation | null; - - @WorkspaceJoinColumn('task') + task: EntityRelation | null; taskId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.note, - type: RelationType.MANY_TO_ONE, - label: msg`Note`, - description: msg`Favorite note`, - icon: 'IconNotes', - inverseSideTarget: () => NoteWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - note: Relation | null; - - @WorkspaceJoinColumn('note') + note: EntityRelation | null; noteId: string; - - @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.dashboard, - type: RelationType.MANY_TO_ONE, - label: msg`Dashboard`, - description: msg`Favorite dashboard`, - icon: 'IconLayoutDashboard', - inverseSideTarget: () => DashboardWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - dashboard: Relation | null; - - @WorkspaceJoinColumn('dashboard') + dashboard: EntityRelation | null; dashboardId: string; - - @WorkspaceField({ - standardId: FAVORITE_STANDARD_FIELD_IDS.view, - type: FieldMetadataType.UUID, - label: msg`ViewId`, - description: msg`ViewId`, - icon: 'IconView', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() viewId: string; - - // todo: remove this decorator and the custom field - @WorkspaceDynamicRelation({ - type: RelationType.MANY_TO_ONE, - argsFactory: (oppositeObjectMetadata) => ({ - standardId: FAVORITE_STANDARD_FIELD_IDS.custom, - name: oppositeObjectMetadata.nameSingular, - label: oppositeObjectMetadata.labelSingular, - description: `Favorite ${oppositeObjectMetadata.labelSingular}`, - joinColumn: `${oppositeObjectMetadata.nameSingular}Id`, - icon: 'IconHeart', - }), - inverseSideTarget: () => CustomWorkspaceEntity, - inverseSideFieldKey: 'favorites', - onDelete: RelationOnDeleteAction.CASCADE, - }) - custom: Relation; + custom: EntityRelation; } diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts index da250a22f93..29728e6f926 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts @@ -1,126 +1,15 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { type Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { - MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS, - MESSAGE_STANDARD_FIELD_IDS, -} from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { MessageDirection } from 'src/modules/messaging/common/enums/message-direction.enum'; -import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; -import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type MessageDirection } from 'src/modules/messaging/common/enums/message-direction.enum'; +import { type MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; +import { type MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.messageChannelMessageAssociation, - - namePlural: 'messageChannelMessageAssociations', - labelSingular: msg`Message Channel Message Association`, - labelPlural: msg`Message Channel Message Associations`, - description: msg`Message Synced with a Message Channel`, - icon: STANDARD_OBJECT_ICONS.messageChannelMessageAssociation, -}) -@WorkspaceIsNotAuditLogged() -@WorkspaceIsSystem() -@WorkspaceIndex(['messageChannelId', 'messageId'], { - isUnique: true, - indexWhereClause: '"deletedAt" IS NULL', -}) export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: - MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS.messageExternalId, - type: FieldMetadataType.TEXT, - label: msg`Message External Id`, - description: msg`Message id from the messaging provider`, - icon: 'IconHash', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() messageExternalId: string | null; - - @WorkspaceField({ - standardId: - MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS.messageThreadExternalId, - type: FieldMetadataType.TEXT, - label: msg`Thread External Id`, - description: msg`Thread id from the messaging provider`, - icon: 'IconHash', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() messageThreadExternalId: string | null; - - @WorkspaceField({ - standardId: MESSAGE_STANDARD_FIELD_IDS.direction, - type: FieldMetadataType.SELECT, - label: msg`Direction`, - description: msg`Message Direction`, - icon: 'IconDirection', - options: [ - { - value: MessageDirection.INCOMING, - label: 'Incoming', - position: 0, - color: 'green', - }, - { - value: MessageDirection.OUTGOING, - label: 'Outgoing', - position: 1, - color: 'blue', - }, - ], - defaultValue: `'${MessageDirection.INCOMING}'`, - }) - @WorkspaceIsFieldUIReadOnly() direction: MessageDirection; - - @WorkspaceRelation({ - standardId: - MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS.messageChannel, - type: RelationType.MANY_TO_ONE, - label: msg`Message Channel Id`, - description: msg`Message Channel Id`, - icon: 'IconHash', - inverseSideTarget: () => MessageChannelWorkspaceEntity, - inverseSideFieldKey: 'messageChannelMessageAssociations', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messageChannel: Relation | null; - - @WorkspaceJoinColumn('messageChannel') + messageChannel: EntityRelation | null; messageChannelId: string; - - @WorkspaceRelation({ - standardId: MESSAGE_CHANNEL_MESSAGE_ASSOCIATION_STANDARD_FIELD_IDS.message, - type: RelationType.MANY_TO_ONE, - label: msg`Message Id`, - description: msg`Message Id`, - icon: 'IconHash', - inverseSideTarget: () => MessageWorkspaceEntity, - inverseSideFieldKey: 'messageChannelMessageAssociations', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - message: Relation | null; - - @WorkspaceJoinColumn('message') + message: EntityRelation | null; messageId: string; } diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts index b722d28f6ed..72c2fb75b28 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts @@ -1,26 +1,10 @@ import { registerEnumType } from '@nestjs/graphql'; -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { MESSAGE_CHANNEL_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; -import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity'; -import { MessageFolderWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-folder.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { type MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity'; +import { type MessageFolderWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-folder.workspace-entity'; export enum MessageChannelSyncStatus { NOT_SYNCED = 'NOT_SYNCED', @@ -97,408 +81,27 @@ registerEnumType(MessageChannelPendingGroupEmailsAction, { name: 'MessageChannelPendingGroupEmailsAction', }); -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.messageChannel, - - namePlural: 'messageChannels', - labelSingular: msg`Message Channel`, - labelPlural: msg`Message Channels`, - description: msg`Message Channels`, - icon: STANDARD_OBJECT_ICONS.messageChannel, - labelIdentifierStandardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.handle, -}) -@WorkspaceIsNotAuditLogged() -@WorkspaceIsSystem() export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.visibility, - type: FieldMetadataType.SELECT, - label: msg`Visibility`, - description: msg`Visibility`, - icon: 'IconEyeglass', - options: [ - { - value: MessageChannelVisibility.METADATA, - label: 'Metadata', - position: 0, - color: 'green', - }, - { - value: MessageChannelVisibility.SUBJECT, - label: 'Subject', - position: 1, - color: 'blue', - }, - { - value: MessageChannelVisibility.SHARE_EVERYTHING, - label: 'Share Everything', - position: 2, - color: 'orange', - }, - ], - defaultValue: `'${MessageChannelVisibility.SHARE_EVERYTHING}'`, - }) - @WorkspaceIsFieldUIReadOnly() visibility: string; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.handle, - type: FieldMetadataType.TEXT, - label: msg`Handle`, - description: msg`Handle`, - icon: 'IconAt', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handle: string | null; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.type, - type: FieldMetadataType.SELECT, - label: msg`Type`, - description: msg`Channel Type`, - icon: 'IconMessage', - options: [ - { - value: MessageChannelType.EMAIL, - label: 'Email', - position: 0, - color: 'green', - }, - { - value: MessageChannelType.SMS, - label: 'SMS', - position: 1, - color: 'blue', - }, - ], - defaultValue: `'${MessageChannelType.EMAIL}'`, - }) - @WorkspaceIsFieldUIReadOnly() type: string; - - // TODO: Deprecate this field and migrate data to contactAutoCreationFor - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.isContactAutoCreationEnabled, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Contact Auto Creation Enabled`, - description: msg`Is Contact Auto Creation Enabled`, - icon: 'IconUserCircle', - defaultValue: true, - }) - @WorkspaceIsFieldUIReadOnly() isContactAutoCreationEnabled: boolean; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.contactAutoCreationPolicy, - type: FieldMetadataType.SELECT, - label: msg`Contact auto creation policy`, - description: msg`Automatically create People records when receiving or sending emails`, - icon: 'IconUserCircle', - options: [ - { - value: MessageChannelContactAutoCreationPolicy.SENT_AND_RECEIVED, - label: 'Sent and Received', - position: 0, - color: 'green', - }, - { - value: MessageChannelContactAutoCreationPolicy.SENT, - label: 'Sent', - position: 1, - color: 'blue', - }, - { - value: MessageChannelContactAutoCreationPolicy.NONE, - label: 'None', - position: 2, - color: 'red', - }, - ], - defaultValue: `'${MessageChannelContactAutoCreationPolicy.SENT}'`, - }) - @WorkspaceIsFieldUIReadOnly() contactAutoCreationPolicy: MessageChannelContactAutoCreationPolicy; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.messageFolderImportPolicy, - type: FieldMetadataType.SELECT, - label: msg`Message folder import policy`, - description: msg`Message folder import policy`, - icon: 'IconFolder', - options: [ - { - value: MessageFolderImportPolicy.ALL_FOLDERS, - label: 'All folders', - position: 0, - color: 'green', - }, - { - value: MessageFolderImportPolicy.SELECTED_FOLDERS, - label: 'Selected folders', - position: 1, - color: 'blue', - }, - ], - defaultValue: `'${MessageFolderImportPolicy.ALL_FOLDERS}'`, - }) - @WorkspaceIsFieldUIReadOnly() messageFolderImportPolicy: MessageFolderImportPolicy; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.excludeNonProfessionalEmails, - type: FieldMetadataType.BOOLEAN, - label: msg`Exclude non professional emails`, - description: msg`Exclude non professional emails`, - icon: 'IconBriefcase', - defaultValue: true, - }) - @WorkspaceIsFieldUIReadOnly() excludeNonProfessionalEmails: boolean; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.excludeGroupEmails, - type: FieldMetadataType.BOOLEAN, - label: msg`Exclude group emails`, - description: msg`Exclude group emails`, - icon: 'IconUsersGroup', - defaultValue: true, - }) - @WorkspaceIsFieldUIReadOnly() excludeGroupEmails: boolean; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.pendingGroupEmailsAction, - type: FieldMetadataType.SELECT, - label: msg`Pending group emails action`, - description: msg`Pending action for group emails`, - icon: 'IconUsersGroup', - options: [ - { - value: MessageChannelPendingGroupEmailsAction.GROUP_EMAILS_DELETION, - label: 'Group emails deletion', - position: 0, - color: 'red', - }, - { - value: MessageChannelPendingGroupEmailsAction.GROUP_EMAILS_IMPORT, - label: 'Group emails import', - position: 1, - color: 'green', - }, - { - value: MessageChannelPendingGroupEmailsAction.NONE, - label: 'None', - position: 2, - color: 'blue', - }, - ], - defaultValue: `'${MessageChannelPendingGroupEmailsAction.NONE}'`, - }) - @WorkspaceIsFieldUIReadOnly() pendingGroupEmailsAction: MessageChannelPendingGroupEmailsAction; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.isSyncEnabled, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Sync Enabled`, - description: msg`Is Sync Enabled`, - icon: 'IconRefresh', - defaultValue: true, - }) - @WorkspaceIsFieldUIReadOnly() isSyncEnabled: boolean; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.syncCursor, - type: FieldMetadataType.TEXT, - label: msg`Last sync cursor`, - description: msg`Last sync cursor`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncCursor: string | null; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.syncedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Last sync date`, - description: msg`Last sync date`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncedAt: string | null; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.syncStatus, - type: FieldMetadataType.SELECT, - label: msg`Sync status`, - description: msg`Sync status`, - icon: 'IconStatusChange', - options: [ - { - value: MessageChannelSyncStatus.ONGOING, - label: 'Ongoing', - position: 1, - color: 'yellow', - }, - { - value: MessageChannelSyncStatus.NOT_SYNCED, - label: 'Not Synced', - position: 2, - color: 'blue', - }, - { - value: MessageChannelSyncStatus.ACTIVE, - label: 'Active', - position: 3, - color: 'green', - }, - { - value: MessageChannelSyncStatus.FAILED_INSUFFICIENT_PERMISSIONS, - label: 'Failed Insufficient Permissions', - position: 4, - color: 'red', - }, - { - value: MessageChannelSyncStatus.FAILED_UNKNOWN, - label: 'Failed Unknown', - position: 5, - color: 'red', - }, - ], - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncStatus: MessageChannelSyncStatus | null; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.syncStage, - type: FieldMetadataType.SELECT, - label: msg`Sync stage`, - description: msg`Sync stage`, - icon: 'IconStatusChange', - options: [ - { - value: MessageChannelSyncStage.MESSAGE_LIST_FETCH_PENDING, - label: 'Messages list fetch pending', - position: 0, - color: 'blue', - }, - { - value: MessageChannelSyncStage.MESSAGE_LIST_FETCH_SCHEDULED, - label: 'Messages list fetch scheduled', - position: 1, - color: 'green', - }, - { - value: MessageChannelSyncStage.MESSAGE_LIST_FETCH_ONGOING, - label: 'Messages list fetch ongoing', - position: 2, - color: 'orange', - }, - { - value: MessageChannelSyncStage.MESSAGES_IMPORT_PENDING, - label: 'Messages import pending', - position: 3, - color: 'blue', - }, - { - value: MessageChannelSyncStage.MESSAGES_IMPORT_SCHEDULED, - label: 'Messages import scheduled', - position: 4, - color: 'green', - }, - { - value: MessageChannelSyncStage.MESSAGES_IMPORT_ONGOING, - label: 'Messages import ongoing', - position: 5, - color: 'orange', - }, - { - value: MessageChannelSyncStage.FAILED, - label: 'Failed', - position: 6, - color: 'red', - }, - { - value: MessageChannelSyncStage.PENDING_CONFIGURATION, - label: 'Pending configuration', - position: 7, - color: 'gray', - }, - ], - defaultValue: `'${MessageChannelSyncStage.PENDING_CONFIGURATION}'`, - }) - @WorkspaceIsFieldUIReadOnly() syncStage: MessageChannelSyncStage; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.syncStageStartedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Sync stage started at`, - description: msg`Sync stage started at`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() syncStageStartedAt: string | null; - - @WorkspaceField({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.throttleFailureCount, - type: FieldMetadataType.NUMBER, - label: msg`Throttle Failure Count`, - description: msg`Throttle Failure Count`, - icon: 'IconX', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() throttleFailureCount: number; - - @WorkspaceRelation({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.connectedAccount, - type: RelationType.MANY_TO_ONE, - label: msg`Connected Account`, - description: msg`Connected Account`, - icon: 'IconUserCircle', - inverseSideTarget: () => ConnectedAccountWorkspaceEntity, - inverseSideFieldKey: 'messageChannels', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - connectedAccount: Relation; - - @WorkspaceJoinColumn('connectedAccount') + connectedAccount: EntityRelation; connectedAccountId: string; - - @WorkspaceRelation({ - standardId: - MESSAGE_CHANNEL_STANDARD_FIELD_IDS.messageChannelMessageAssociations, - type: RelationType.ONE_TO_MANY, - label: msg`Message Channel Association`, - description: msg`Messages from the channel.`, - icon: 'IconMessage', - inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messageChannelMessageAssociations: Relation< + messageChannelMessageAssociations: EntityRelation< MessageChannelMessageAssociationWorkspaceEntity[] >; - - @WorkspaceRelation({ - standardId: MESSAGE_CHANNEL_STANDARD_FIELD_IDS.messageFolders, - type: RelationType.ONE_TO_MANY, - label: msg`Message Folders`, - description: msg`Message Folders`, - icon: 'IconFolder', - inverseSideTarget: () => MessageFolderWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messageFolders: Relation; + messageFolders: EntityRelation; } diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts index e99c06d721a..513e7073fbc 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts @@ -1,25 +1,8 @@ import { registerEnumType } from '@nestjs/graphql'; -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; -import { Relation } from 'typeorm'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { MESSAGE_FOLDER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type MessageChannelWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel.workspace-entity'; export enum MessageFolderPendingSyncAction { FOLDER_DELETION = 'FOLDER_DELETION', @@ -30,128 +13,14 @@ registerEnumType(MessageFolderPendingSyncAction, { name: 'MessageFolderPendingSyncAction', }); -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.messageFolder, - - namePlural: 'messageFolders', - labelSingular: msg`Message Folder`, - labelPlural: msg`Message Folders`, - description: msg`Folder for Message Channel`, - icon: STANDARD_OBJECT_ICONS.messageFolder, -}) -@WorkspaceIsNotAuditLogged() -@WorkspaceIsSystem() -@WorkspaceIndex(['messageChannelId', 'externalId'], { - isUnique: true, - indexWhereClause: '"deletedAt" IS NULL', -}) export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`Folder name`, - icon: 'IconFolder', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() name: string | null; - - @WorkspaceRelation({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.messageChannel, - type: RelationType.MANY_TO_ONE, - label: msg`Message Channel`, - description: msg`Message Channel`, - icon: 'IconMessage', - inverseSideTarget: () => MessageChannelWorkspaceEntity, - inverseSideFieldKey: 'messageFolders', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - messageChannel: Relation; - - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.syncCursor, - type: FieldMetadataType.TEXT, - label: msg`Sync Cursor`, - description: msg`Sync Cursor`, - icon: 'IconHash', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() + messageChannel: EntityRelation; syncCursor: string | null; - - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.isSentFolder, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Sent Folder`, - description: msg`Is Sent Folder`, - icon: 'IconCheck', - defaultValue: false, - }) - @WorkspaceIsFieldUIReadOnly() isSentFolder: boolean; - - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.isSynced, - type: FieldMetadataType.BOOLEAN, - label: msg`Is Synced`, - description: msg`Is Synced`, - icon: 'IconCheck', - defaultValue: false, - }) - @WorkspaceIsFieldUIReadOnly() isSynced: boolean; - - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.parentFolderId, - type: FieldMetadataType.TEXT, - label: msg`Parent Folder ID`, - description: msg`Parent Folder ID`, - icon: 'IconFolder', - defaultValue: null, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() parentFolderId: string | null; - - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.externalId, - type: FieldMetadataType.TEXT, - label: msg`External ID`, - description: msg`External ID`, - icon: 'IconHash', - defaultValue: null, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() externalId: string | null; - - @WorkspaceField({ - standardId: MESSAGE_FOLDER_STANDARD_FIELD_IDS.pendingSyncAction, - type: FieldMetadataType.SELECT, - label: msg`Pending Sync Action`, - description: msg`Pending action for folder sync`, - icon: 'IconReload', - options: [ - { - value: MessageFolderPendingSyncAction.FOLDER_DELETION, - label: 'Folder deletion', - position: 0, - color: 'red', - }, - { - value: MessageFolderPendingSyncAction.NONE, - label: 'None', - position: 1, - color: 'blue', - }, - ], - defaultValue: `'${MessageFolderPendingSyncAction.NONE}'`, - }) - @WorkspaceIsFieldUIReadOnly() pendingSyncAction: MessageFolderPendingSyncAction; - - @WorkspaceJoinColumn('messageChannel') messageChannelId: string; } diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts index a372e2c0e45..4103cdd73bd 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts @@ -1,148 +1,19 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - FieldMetadataType, - MessageParticipantRole, - RelationOnDeleteAction, -} from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; +import { type MessageParticipantRole } from 'twenty-shared/types'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.messageParticipant, - - namePlural: 'messageParticipants', - labelSingular: msg`Message Participant`, - labelPlural: msg`Message Participants`, - description: msg`Message Participants`, - icon: STANDARD_OBJECT_ICONS.messageParticipant, - labelIdentifierStandardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.handle, -}) -@WorkspaceIsNotAuditLogged() -@WorkspaceIsSystem() export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.role, - type: FieldMetadataType.SELECT, - label: msg`Role`, - description: msg`Role`, - icon: 'IconAt', - options: [ - { - value: MessageParticipantRole.FROM, - label: 'From', - position: 0, - color: 'green', - }, - { - value: MessageParticipantRole.TO, - label: 'To', - position: 1, - color: 'blue', - }, - { - value: MessageParticipantRole.CC, - label: 'Cc', - position: 2, - color: 'orange', - }, - { - value: MessageParticipantRole.BCC, - label: 'Bcc', - position: 3, - color: 'red', - }, - ], - defaultValue: `'${MessageParticipantRole.FROM}'`, - }) - @WorkspaceIsFieldUIReadOnly() role: MessageParticipantRole; - - @WorkspaceField({ - standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.handle, - type: FieldMetadataType.TEXT, - label: msg`Handle`, - description: msg`Handle`, - icon: 'IconAt', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() handle: string | null; - - @WorkspaceField({ - standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.displayName, - type: FieldMetadataType.TEXT, - label: msg`Display Name`, - description: msg`Display Name`, - icon: 'IconUser', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() displayName: string | null; - - @WorkspaceRelation({ - standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.message, - type: RelationType.MANY_TO_ONE, - label: msg`Message`, - description: msg`Message`, - icon: 'IconMessage', - inverseSideTarget: () => MessageWorkspaceEntity, - inverseSideFieldKey: 'messageParticipants', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - message: Relation; - - @WorkspaceJoinColumn('message') + message: EntityRelation; messageId: string; - - @WorkspaceRelation({ - standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.person, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`Person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'messageParticipants', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - person: Relation | null; - - @WorkspaceJoinColumn('person') + person: EntityRelation | null; personId: string | null; - - @WorkspaceRelation({ - standardId: MESSAGE_PARTICIPANT_STANDARD_FIELD_IDS.workspaceMember, - type: RelationType.MANY_TO_ONE, - label: msg`Workspace Member`, - description: msg`Workspace member`, - icon: 'IconCircleUser', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'messageParticipants', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workspaceMember: Relation | null; - - @WorkspaceJoinColumn('workspaceMember') + workspaceMember: EntityRelation | null; workspaceMemberId: string | null; } diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts index c1708a286c9..260e5a6d4bf 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts @@ -1,43 +1,7 @@ -import { msg } from '@lingui/core/macro'; -import { RelationOnDeleteAction } from 'twenty-shared/types'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { MESSAGE_THREAD_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.messageThread, - - namePlural: 'messageThreads', - labelSingular: msg`Message Thread`, - labelPlural: msg`Message Threads`, - description: msg`A group of related messages (e.g. email thread, chat thread)`, - icon: STANDARD_OBJECT_ICONS.messageThread, -}) -@WorkspaceIsNotAuditLogged() -@WorkspaceIsSystem() export class MessageThreadWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceRelation({ - standardId: MESSAGE_THREAD_STANDARD_FIELD_IDS.messages, - type: RelationType.ONE_TO_MANY, - label: msg`Messages`, - description: msg`Messages from the thread.`, - icon: 'IconMessage', - inverseSideTarget: () => MessageWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messages: Relation; + messages: EntityRelation; } diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts index 490a8adb031..36c1c88f004 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts @@ -1,124 +1,18 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { MESSAGE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity'; -import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; -import { MessageThreadWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type MessageChannelMessageAssociationWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity'; +import { type MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; +import { type MessageThreadWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-thread.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.message, - - namePlural: 'messages', - labelSingular: msg`Message`, - labelPlural: msg`Messages`, - description: msg`A message sent or received through a messaging channel (email, chat, etc.)`, - icon: STANDARD_OBJECT_ICONS.message, - labelIdentifierStandardId: MESSAGE_STANDARD_FIELD_IDS.subject, -}) -@WorkspaceIsNotAuditLogged() -@WorkspaceIsSystem() export class MessageWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: MESSAGE_STANDARD_FIELD_IDS.headerMessageId, - type: FieldMetadataType.TEXT, - label: msg`Header message Id`, - description: msg`Message id from the message header`, - icon: 'IconHash', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() headerMessageId: string | null; - - @WorkspaceField({ - standardId: MESSAGE_STANDARD_FIELD_IDS.subject, - type: FieldMetadataType.TEXT, - label: msg`Subject`, - description: msg`Subject`, - icon: 'IconMessage', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() subject: string | null; - - @WorkspaceField({ - standardId: MESSAGE_STANDARD_FIELD_IDS.text, - type: FieldMetadataType.TEXT, - label: msg`Text`, - description: msg`Text`, - icon: 'IconMessage', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() text: string | null; - - @WorkspaceField({ - standardId: MESSAGE_STANDARD_FIELD_IDS.receivedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Received At`, - description: msg`The date the message was received`, - icon: 'IconCalendar', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() receivedAt: Date | null; - - @WorkspaceRelation({ - standardId: MESSAGE_STANDARD_FIELD_IDS.messageThread, - type: RelationType.MANY_TO_ONE, - label: msg`Message Thread Id`, - description: msg`Message Thread Id`, - icon: 'IconHash', - inverseSideTarget: () => MessageThreadWorkspaceEntity, - inverseSideFieldKey: 'messages', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messageThread: Relation | null; - - @WorkspaceJoinColumn('messageThread') + messageThread: EntityRelation | null; messageThreadId: string | null; - - @WorkspaceRelation({ - standardId: MESSAGE_STANDARD_FIELD_IDS.messageParticipants, - type: RelationType.ONE_TO_MANY, - label: msg`Message Participants`, - description: msg`Message Participants`, - icon: 'IconUserCircle', - inverseSideTarget: () => MessageParticipantWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messageParticipants: Relation; - - @WorkspaceRelation({ - standardId: MESSAGE_STANDARD_FIELD_IDS.messageChannelMessageAssociations, - type: RelationType.ONE_TO_MANY, - label: msg`Message Channel Association`, - description: msg`Messages from the channel.`, - icon: 'IconMessage', - inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - messageChannelMessageAssociations: Relation< + messageParticipants: EntityRelation; + messageChannelMessageAssociations: EntityRelation< MessageChannelMessageAssociationWorkspaceEntity[] >; } diff --git a/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts b/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts index e30c375e30f..91a4824e226 100644 --- a/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts +++ b/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts @@ -1,119 +1,19 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { NOTE_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.noteTarget, - - namePlural: 'noteTargets', - labelSingular: msg`Note Target`, - labelPlural: msg`Note Targets`, - description: msg`A note target`, - icon: STANDARD_OBJECT_ICONS.noteTarget, -}) -@WorkspaceIsSystem() export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceRelation({ - standardId: NOTE_TARGET_STANDARD_FIELD_IDS.note, - type: RelationType.MANY_TO_ONE, - label: msg`Note`, - description: msg`NoteTarget note`, - icon: 'IconNotes', - inverseSideTarget: () => NoteWorkspaceEntity, - inverseSideFieldKey: 'noteTargets', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - note: Relation | null; - - @WorkspaceJoinColumn('note') + note: EntityRelation | null; noteId: string | null; - - @WorkspaceRelation({ - standardId: NOTE_TARGET_STANDARD_FIELD_IDS.person, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`NoteTarget person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'noteTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - person: Relation | null; - - @WorkspaceJoinColumn('person') + person: EntityRelation | null; personId: string | null; - - @WorkspaceRelation({ - standardId: NOTE_TARGET_STANDARD_FIELD_IDS.company, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`NoteTarget company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'noteTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - company: Relation | null; - - @WorkspaceJoinColumn('company') + company: EntityRelation | null; companyId: string | null; - - @WorkspaceRelation({ - standardId: NOTE_TARGET_STANDARD_FIELD_IDS.opportunity, - type: RelationType.MANY_TO_ONE, - label: msg`Opportunity`, - description: msg`NoteTarget opportunity`, - icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityWorkspaceEntity, - inverseSideFieldKey: 'noteTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - opportunity: Relation | null; - - @WorkspaceJoinColumn('opportunity') + opportunity: EntityRelation | null; opportunityId: string | null; - - // todo: remove this decorator and the custom field - @WorkspaceDynamicRelation({ - type: RelationType.MANY_TO_ONE, - argsFactory: (oppositeObjectMetadata) => ({ - standardId: NOTE_TARGET_STANDARD_FIELD_IDS.custom, - name: oppositeObjectMetadata.nameSingular, - label: oppositeObjectMetadata.labelSingular, - description: `NoteTarget ${oppositeObjectMetadata.labelSingular}`, - joinColumn: `${oppositeObjectMetadata.nameSingular}Id`, - icon: 'IconBuildingSkyscraper', - }), - inverseSideTarget: () => CustomWorkspaceEntity, - inverseSideFieldKey: 'noteTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - custom: Relation; + custom: EntityRelation; } diff --git a/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts b/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts index f60b242438e..b261b49977b 100644 --- a/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts +++ b/packages/twenty-server/src/modules/note/standard-objects/note.workspace-entity.ts @@ -1,36 +1,16 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { - ActorMetadata, + type ActorMetadata, FieldMetadataType, - RelationOnDeleteAction, type RichTextV2Metadata, } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { NOTE_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; const TITLE_FIELD_NAME = 'title'; const BODY_V2_FIELD_NAME = 'bodyV2'; @@ -40,135 +20,15 @@ export const SEARCH_FIELDS_FOR_NOTES: FieldTypeAndNameMetadata[] = [ { name: BODY_V2_FIELD_NAME, type: FieldMetadataType.RICH_TEXT_V2 }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.note, - - namePlural: 'notes', - labelSingular: msg`Note`, - labelPlural: msg`Notes`, - description: msg`A note`, - icon: STANDARD_OBJECT_ICONS.note, - shortcut: 'N', - labelIdentifierStandardId: NOTE_STANDARD_FIELD_IDS.title, -}) -@WorkspaceIsSearchable() export class NoteWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: NOTE_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Note record position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: NOTE_STANDARD_FIELD_IDS.title, - type: FieldMetadataType.TEXT, - label: msg`Title`, - description: msg`Note title`, - icon: 'IconNotes', - }) - @WorkspaceIsNullable() title: string; - - @WorkspaceField({ - standardId: NOTE_STANDARD_FIELD_IDS.bodyV2, - type: FieldMetadataType.RICH_TEXT_V2, - label: msg`Body`, - description: msg`Note body`, - icon: 'IconFilePencil', - }) - @WorkspaceIsNullable() bodyV2: RichTextV2Metadata | null; - - @WorkspaceField({ - standardId: NOTE_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: NOTE_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceRelation({ - standardId: NOTE_STANDARD_FIELD_IDS.noteTargets, - label: msg`Relations`, - description: msg`Note targets`, - icon: 'IconArrowUpRight', - type: RelationType.ONE_TO_MANY, - inverseSideTarget: () => NoteTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - noteTargets: Relation; - - @WorkspaceRelation({ - standardId: NOTE_STANDARD_FIELD_IDS.attachments, - label: msg`Attachments`, - description: msg`Note attachments`, - icon: 'IconFileImport', - type: RelationType.ONE_TO_MANY, - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceRelation({ - standardId: NOTE_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline Activities linked to the note.`, - icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetNote', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceRelation({ - standardId: NOTE_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the note`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceField({ - standardId: NOTE_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_NOTES, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) + noteTargets: EntityRelation; + attachments: EntityRelation; + timelineActivities: EntityRelation; + favorites: EntityRelation; searchVector: string; } diff --git a/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts b/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts index c9669045b82..0c45937a821 100644 --- a/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts +++ b/packages/twenty-server/src/modules/opportunity/standard-objects/opportunity.workspace-entity.ts @@ -1,41 +1,19 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { - ActorMetadata, + type ActorMetadata, type CurrencyMetadata, FieldMetadataType, - RelationOnDeleteAction, } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { OPPORTUNITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; const NAME_FIELD_NAME = 'name'; @@ -43,223 +21,24 @@ export const SEARCH_FIELDS_FOR_OPPORTUNITY: FieldTypeAndNameMetadata[] = [ { name: NAME_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.opportunity, - - namePlural: 'opportunities', - labelSingular: msg`Opportunity`, - labelPlural: msg`Opportunities`, - description: msg`An opportunity`, - icon: STANDARD_OBJECT_ICONS.opportunity, - shortcut: 'O', - labelIdentifierStandardId: OPPORTUNITY_STANDARD_FIELD_IDS.name, -}) -@WorkspaceIsSearchable() export class OpportunityWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`The opportunity name`, - icon: 'IconTargetArrow', - }) - @WorkspaceIsNullable() name: string; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.amount, - type: FieldMetadataType.CURRENCY, - label: msg`Amount`, - description: msg`Opportunity amount`, - icon: 'IconCurrencyDollar', - }) - @WorkspaceIsNullable() amount: CurrencyMetadata | null; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.closeDate, - type: FieldMetadataType.DATE_TIME, - label: msg`Close date`, - description: msg`Opportunity close date`, - icon: 'IconCalendarEvent', - }) - @WorkspaceIsNullable() closeDate: Date | null; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.stage, - type: FieldMetadataType.SELECT, - label: msg`Stage`, - description: msg`Opportunity stage`, - icon: 'IconProgressCheck', - options: [ - { value: 'NEW', label: 'New', position: 0, color: 'red' }, - { value: 'SCREENING', label: 'Screening', position: 1, color: 'purple' }, - { value: 'MEETING', label: 'Meeting', position: 2, color: 'sky' }, - { - value: 'PROPOSAL', - label: 'Proposal', - position: 3, - color: 'turquoise', - }, - { value: 'CUSTOMER', label: 'Customer', position: 4, color: 'yellow' }, - ], - defaultValue: "'NEW'", - }) - @WorkspaceFieldIndex() stage: string; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Opportunity record position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.pointOfContact, - type: RelationType.MANY_TO_ONE, - label: msg`Point of Contact`, - description: msg`Opportunity point of contact`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'pointOfContactForOpportunities', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - pointOfContact: Relation | null; - - @WorkspaceJoinColumn('pointOfContact') + pointOfContact: EntityRelation | null; pointOfContactId: string | null; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.company, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`Opportunity company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'opportunities', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - company: Relation | null; - - @WorkspaceJoinColumn('company') + company: EntityRelation | null; companyId: string | null; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the opportunity`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.taskTargets, - type: RelationType.ONE_TO_MANY, - label: msg`Tasks`, - description: msg`Tasks tied to the opportunity`, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - taskTargets: Relation; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.noteTargets, - type: RelationType.ONE_TO_MANY, - label: msg`Notes`, - description: msg`Notes tied to the opportunity`, - icon: 'IconNotes', - inverseSideTarget: () => NoteTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - noteTargets: Relation; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.attachments, - type: RelationType.ONE_TO_MANY, - label: msg`Attachments`, - description: msg`Attachments linked to the opportunity`, - icon: 'IconFileImport', - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceRelation({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline Activities linked to the opportunity.`, - icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetOpportunity', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.probabilityDeprecated, - type: FieldMetadataType.TEXT, - label: msg`Probability`, - description: msg`Opportunity probability`, - icon: 'IconProgressCheck', - defaultValue: "'0'", - }) - @WorkspaceIsDeprecated() + favorites: EntityRelation; + taskTargets: EntityRelation; + noteTargets: EntityRelation; + attachments: EntityRelation; + timelineActivities: EntityRelation; + /** @deprecated */ probability: string; - - @WorkspaceField({ - standardId: OPPORTUNITY_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_OPPORTUNITY, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) searchVector: string; } diff --git a/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts b/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts index 78830b46b03..2960e251b61 100644 --- a/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts +++ b/packages/twenty-server/src/modules/person/standard-objects/person.workspace-entity.ts @@ -1,48 +1,24 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { - ActorMetadata, - EmailsMetadata, + type ActorMetadata, + type EmailsMetadata, FieldMetadataType, - PhonesMetadata, - RelationOnDeleteAction, type FullNameMetadata, type LinksMetadata, + type PhonesMetadata, } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceDuplicateCriteria } from 'src/engine/twenty-orm/decorators/workspace-duplicate-criteria.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceIsUnique } from 'src/engine/twenty-orm/decorators/workspace-is-unique.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { PERSON_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - getTsVectorColumnExpressionFromFields, - type FieldTypeAndNameMetadata, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; -import { NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; +import { type NoteTargetWorkspaceEntity } from 'src/modules/note/standard-objects/note-target.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; const NAME_FIELD_NAME = 'name'; const EMAILS_FIELD_NAME = 'emails'; @@ -56,286 +32,31 @@ export const SEARCH_FIELDS_FOR_PERSON: FieldTypeAndNameMetadata[] = [ { name: JOB_TITLE_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.person, - - namePlural: 'people', - labelSingular: msg`Person`, - labelPlural: msg`People`, - description: msg`A person`, - icon: STANDARD_OBJECT_ICONS.person, - shortcut: 'P', - labelIdentifierStandardId: PERSON_STANDARD_FIELD_IDS.name, - imageIdentifierStandardId: PERSON_STANDARD_FIELD_IDS.avatarUrl, -}) -@WorkspaceDuplicateCriteria([ - ['nameFirstName', 'nameLastName'], - ['linkedinLinkPrimaryLinkUrl'], - ['emailsPrimaryEmail'], -]) -@WorkspaceIsSearchable() export class PersonWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.FULL_NAME, - label: msg`Name`, - description: msg`Contact’s name`, - icon: 'IconUser', - }) - @WorkspaceIsNullable() name: FullNameMetadata | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.emails, - type: FieldMetadataType.EMAILS, - label: msg`Emails`, - description: msg`Contact’s Emails`, - icon: 'IconMail', - settings: { - maxNumberOfValues: 1, - }, - }) - @WorkspaceIsUnique() - @WorkspaceIsNullable() emails: EmailsMetadata; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.linkedinLink, - type: FieldMetadataType.LINKS, - label: msg`Linkedin`, - description: msg`Contact’s Linkedin account`, - icon: 'IconBrandLinkedin', - }) - @WorkspaceIsNullable() linkedinLink: LinksMetadata | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.xLink, - type: FieldMetadataType.LINKS, - label: msg`X`, - description: msg`Contact’s X/Twitter account`, - icon: 'IconBrandX', - }) - @WorkspaceIsNullable() xLink: LinksMetadata | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.jobTitle, - type: FieldMetadataType.TEXT, - label: msg`Job Title`, - description: msg`Contact’s job title`, - icon: 'IconBriefcase', - }) - @WorkspaceIsNullable() jobTitle: string | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.phone, - type: FieldMetadataType.TEXT, - label: msg`Phone`, - description: msg`Contact’s phone number`, - icon: 'IconPhone', - }) - @WorkspaceIsDeprecated() - @WorkspaceIsNullable() + /** @deprecated Use `phones` field instead */ phone: string | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.phones, - type: FieldMetadataType.PHONES, - label: msg`Phones`, - description: msg`Contact’s phone numbers`, - icon: 'IconPhone', - settings: { - maxNumberOfValues: 1, - }, - }) - @WorkspaceIsNullable() phones: PhonesMetadata; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.city, - type: FieldMetadataType.TEXT, - label: msg`City`, - description: msg`Contact’s city`, - icon: 'IconMap', - }) - @WorkspaceIsNullable() city: string | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.avatarUrl, - type: FieldMetadataType.TEXT, - label: msg`Avatar`, - description: msg`Contact’s avatar`, - icon: 'IconFileUpload', - }) - @WorkspaceIsSystem() - @WorkspaceIsNullable() avatarUrl: string | null; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Person record Position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - // Relations - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.company, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`Contact’s company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'people', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - company: Relation | null; - - @WorkspaceJoinColumn('company') + company: EntityRelation | null; companyId: string | null; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.pointOfContactForOpportunities, - type: RelationType.ONE_TO_MANY, - label: msg`Opportunities`, - description: msg`List of opportunities for which that person is the point of contact`, - icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityWorkspaceEntity, - inverseSideFieldKey: 'pointOfContact', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - pointOfContactForOpportunities: Relation; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.taskTargets, - type: RelationType.ONE_TO_MANY, - label: msg`Tasks`, - description: msg`Tasks tied to the contact`, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - taskTargets: Relation; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.noteTargets, - type: RelationType.ONE_TO_MANY, - label: msg`Notes`, - description: msg`Notes tied to the contact`, - icon: 'IconNotes', - inverseSideTarget: () => NoteTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - noteTargets: Relation; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the contact`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.attachments, - type: RelationType.ONE_TO_MANY, - label: msg`Attachments`, - description: msg`Attachments linked to the contact.`, - icon: 'IconFileImport', - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.messageParticipants, - type: RelationType.ONE_TO_MANY, - label: msg`Message Participants`, - description: msg`Message Participants`, - icon: 'IconUserCircle', - inverseSideTarget: () => MessageParticipantWorkspaceEntity, - inverseSideFieldKey: 'person', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsSystem() - messageParticipants: Relation; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.calendarEventParticipants, - type: RelationType.ONE_TO_MANY, - label: msg`Calendar Event Participants`, - description: msg`Calendar Event Participants`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsSystem() - calendarEventParticipants: Relation< + pointOfContactForOpportunities: EntityRelation; + taskTargets: EntityRelation; + noteTargets: EntityRelation; + favorites: EntityRelation; + attachments: EntityRelation; + messageParticipants: EntityRelation; + calendarEventParticipants: EntityRelation< CalendarEventParticipantWorkspaceEntity[] >; - - @WorkspaceRelation({ - standardId: PERSON_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Events`, - description: msg`Events linked to the person`, - icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetPerson', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceField({ - standardId: PERSON_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_PERSON, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) + timelineActivities: EntityRelation; searchVector: string; } diff --git a/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts b/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts index d055436b8b2..c7ec9d726dd 100644 --- a/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts +++ b/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts @@ -1,119 +1,19 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { RelationOnDeleteAction } from 'twenty-shared/types'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { TASK_TARGET_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; +import { type CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.taskTarget, - - namePlural: 'taskTargets', - labelSingular: msg`Task Target`, - labelPlural: msg`Task Targets`, - description: msg`A task target`, - icon: STANDARD_OBJECT_ICONS.taskTarget, -}) -@WorkspaceIsSystem() export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceRelation({ - standardId: TASK_TARGET_STANDARD_FIELD_IDS.task, - type: RelationType.MANY_TO_ONE, - label: msg`Task`, - description: msg`TaskTarget task`, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskWorkspaceEntity, - inverseSideFieldKey: 'taskTargets', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - task: Relation | null; - - @WorkspaceJoinColumn('task') + task: EntityRelation | null; taskId: string | null; - - @WorkspaceRelation({ - standardId: TASK_TARGET_STANDARD_FIELD_IDS.person, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`TaskTarget person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'taskTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - person: Relation | null; - - @WorkspaceJoinColumn('person') + person: EntityRelation | null; personId: string | null; - - @WorkspaceRelation({ - standardId: TASK_TARGET_STANDARD_FIELD_IDS.company, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`TaskTarget company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'taskTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - company: Relation | null; - - @WorkspaceJoinColumn('company') + company: EntityRelation | null; companyId: string | null; - - @WorkspaceRelation({ - standardId: TASK_TARGET_STANDARD_FIELD_IDS.opportunity, - type: RelationType.MANY_TO_ONE, - label: msg`Opportunity`, - description: msg`TaskTarget opportunity`, - icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityWorkspaceEntity, - inverseSideFieldKey: 'taskTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - opportunity: Relation | null; - - @WorkspaceJoinColumn('opportunity') + opportunity: EntityRelation | null; opportunityId: string | null; - - // todo: remove this decorator and the custom field - @WorkspaceDynamicRelation({ - type: RelationType.MANY_TO_ONE, - argsFactory: (oppositeObjectMetadata) => ({ - standardId: TASK_TARGET_STANDARD_FIELD_IDS.custom, - name: oppositeObjectMetadata.nameSingular, - label: oppositeObjectMetadata.labelSingular, - description: `TaskTarget ${oppositeObjectMetadata.labelSingular}`, - joinColumn: `${oppositeObjectMetadata.nameSingular}Id`, - icon: 'IconBuildingSkyscraper', - }), - inverseSideTarget: () => CustomWorkspaceEntity, - inverseSideFieldKey: 'taskTargets', - onDelete: RelationOnDeleteAction.CASCADE, - }) - custom: Relation; + custom: EntityRelation; } diff --git a/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts b/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts index f6788fdc428..cc79a9112bd 100644 --- a/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts +++ b/packages/twenty-server/src/modules/task/standard-objects/task.workspace-entity.ts @@ -1,41 +1,19 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; import { - ActorMetadata, + type ActorMetadata, FieldMetadataType, - RelationOnDeleteAction, type RichTextV2Metadata, } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { TASK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type TaskTargetWorkspaceEntity } from 'src/modules/task/standard-objects/task-target.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; const TITLE_FIELD_NAME = 'title'; - const BODY_V2_FIELD_NAME = 'bodyV2'; export const SEARCH_FIELDS_FOR_TASKS: FieldTypeAndNameMetadata[] = [ @@ -43,187 +21,19 @@ export const SEARCH_FIELDS_FOR_TASKS: FieldTypeAndNameMetadata[] = [ { name: BODY_V2_FIELD_NAME, type: FieldMetadataType.RICH_TEXT_V2 }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.task, - - namePlural: 'tasks', - labelSingular: msg`Task`, - labelPlural: msg`Tasks`, - description: msg`A task`, - icon: STANDARD_OBJECT_ICONS.task, - shortcut: 'T', - labelIdentifierStandardId: TASK_STANDARD_FIELD_IDS.title, -}) -@WorkspaceIsSearchable() export class TaskWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Task record position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.title, - type: FieldMetadataType.TEXT, - label: msg`Title`, - description: msg`Task title`, - icon: 'IconNotes', - }) - @WorkspaceIsNullable() title: string | null; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.bodyV2, - type: FieldMetadataType.RICH_TEXT_V2, - label: msg`Body`, - description: msg`Task body`, - icon: 'IconFilePencil', - }) - @WorkspaceIsNullable() bodyV2: RichTextV2Metadata | null; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.dueAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Due Date`, - description: msg`Task due date`, - icon: 'IconCalendarEvent', - }) - @WorkspaceIsNullable() dueAt: Date | null; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.status, - type: FieldMetadataType.SELECT, - label: msg`Status`, - description: msg`Task status`, - icon: 'IconCheck', - defaultValue: "'TODO'", - options: [ - { value: 'TODO', label: 'To do', position: 0, color: 'sky' }, - { - value: 'IN_PROGRESS', - label: 'In progress', - position: 1, - color: 'purple', - }, - { - value: 'DONE', - label: 'Done', - position: 2, - color: 'green', - }, - ], - }) - @WorkspaceIsNullable() status: string | null; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceRelation({ - standardId: TASK_STANDARD_FIELD_IDS.taskTargets, - label: msg`Relations`, - description: msg`Task targets`, - icon: 'IconArrowUpRight', - type: RelationType.ONE_TO_MANY, - inverseSideTarget: () => TaskTargetWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - taskTargets: Relation; - - @WorkspaceRelation({ - standardId: TASK_STANDARD_FIELD_IDS.attachments, - label: msg`Attachments`, - description: msg`Task attachments`, - icon: 'IconFileImport', - type: RelationType.ONE_TO_MANY, - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceRelation({ - standardId: TASK_STANDARD_FIELD_IDS.assignee, - label: msg`Assignee`, - description: msg`Task assignee`, - icon: 'IconUserCircle', - type: RelationType.MANY_TO_ONE, - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'assignedTasks', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - assignee: Relation | null; - - @WorkspaceJoinColumn('assignee') + taskTargets: EntityRelation; + attachments: EntityRelation; + assignee: EntityRelation | null; assigneeId: string | null; - - @WorkspaceRelation({ - standardId: TASK_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline Activities linked to the task.`, - icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetTask', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceRelation({ - standardId: TASK_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the task`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceField({ - standardId: TASK_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_TASKS, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) + timelineActivities: EntityRelation; + favorites: EntityRelation; searchVector: string; } diff --git a/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts b/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts index d79700c423d..cd31ca4f83d 100644 --- a/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts +++ b/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts @@ -1,334 +1,44 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; -import { capitalize } from 'twenty-shared/utils'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; -import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { TIMELINE_ACTIVITY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; -import { NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; -import { OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; -import { PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; -import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; -import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; -import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; -import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; -import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; +import { type CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type DashboardWorkspaceEntity } from 'src/modules/dashboard/standard-objects/dashboard.workspace-entity'; +import { type NoteWorkspaceEntity } from 'src/modules/note/standard-objects/note.workspace-entity'; +import { type OpportunityWorkspaceEntity } from 'src/modules/opportunity/standard-objects/opportunity.workspace-entity'; +import { type PersonWorkspaceEntity } from 'src/modules/person/standard-objects/person.workspace-entity'; +import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; +import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; +import { type WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; +import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; +import { type WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity'; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.timelineActivity, - - namePlural: 'timelineActivities', - labelSingular: msg`Timeline Activity`, - labelPlural: msg`Timeline Activities`, - description: msg`Aggregated / filtered event to be displayed on the timeline`, - icon: STANDARD_OBJECT_ICONS.timelineActivity, - labelIdentifierStandardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.name, -}) -@WorkspaceIsSystem() -@WorkspaceIsNotAuditLogged() export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.happensAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Creation date`, - description: msg`Creation date`, - icon: 'IconCalendar', - defaultValue: 'now', - }) - @WorkspaceIsFieldUIReadOnly() happensAt: Date; - - @WorkspaceField({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Event name`, - description: msg`Event name`, - icon: 'IconAbc', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() name: string | null; - - @WorkspaceField({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.properties, - type: FieldMetadataType.RAW_JSON, - label: msg`Event details`, - description: msg`Json value for event details`, - icon: 'IconListDetails', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() properties: JSON | null; - - // Special objects that don't have their own timeline and are 'link' to the main object - @WorkspaceField({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedRecordCachedName, - type: FieldMetadataType.TEXT, - label: msg`Linked Record cached name`, - description: msg`Cached record name`, - icon: 'IconAbc', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() linkedRecordCachedName: string | null; - - @WorkspaceField({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedRecordId, - type: FieldMetadataType.UUID, - label: msg`Linked Record id`, - description: msg`Linked Record id`, - icon: 'IconAbc', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() linkedRecordId: string | null; - - @WorkspaceField({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.linkedObjectMetadataId, - type: FieldMetadataType.UUID, - label: msg`Linked Object Metadata Id`, - description: msg`Linked Object Metadata Id`, - icon: 'IconAbc', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() linkedObjectMetadataId: string | null; - - // Who made the action - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.workspaceMember, - type: RelationType.MANY_TO_ONE, - label: msg`Workspace Member`, - description: msg`Event workspace member`, - icon: 'IconCircleUser', - inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workspaceMember: Relation | null; - - @WorkspaceJoinColumn('workspaceMember') + workspaceMember: EntityRelation | null; workspaceMemberId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetPerson, - type: RelationType.MANY_TO_ONE, - label: msg`Person`, - description: msg`Event person`, - icon: 'IconUser', - inverseSideTarget: () => PersonWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetPerson: Relation | null; - - @WorkspaceJoinColumn('targetPerson') + targetPerson: EntityRelation | null; targetPersonId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetCompany, - type: RelationType.MANY_TO_ONE, - label: msg`Company`, - description: msg`Event company`, - icon: 'IconBuildingSkyscraper', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetCompany: Relation | null; - - @WorkspaceJoinColumn('targetCompany') + targetCompany: EntityRelation | null; targetCompanyId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetOpportunity, - type: RelationType.MANY_TO_ONE, - label: msg`Opportunity`, - description: msg`Event opportunity`, - icon: 'IconTargetArrow', - inverseSideTarget: () => OpportunityWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.SET_NULL, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetOpportunity: Relation | null; - - @WorkspaceJoinColumn('targetOpportunity') + targetOpportunity: EntityRelation | null; targetOpportunityId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetNote, - type: RelationType.MANY_TO_ONE, - label: msg`Note`, - description: msg`Event note`, - icon: 'IconTargetArrow', - inverseSideTarget: () => NoteWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.SET_NULL, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetNote: Relation | null; - - @WorkspaceJoinColumn('targetNote') + targetNote: EntityRelation | null; targetNoteId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetTask, - type: RelationType.MANY_TO_ONE, - label: msg`Task`, - description: msg`Event task`, - icon: 'IconTargetArrow', - inverseSideTarget: () => TaskWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.SET_NULL, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetTask: Relation | null; - - @WorkspaceJoinColumn('targetTask') + targetTask: EntityRelation | null; targetTaskId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetWorkflow, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`Event workflow`, - icon: 'IconTargetArrow', - inverseSideTarget: () => WorkflowWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetWorkflow: Relation | null; - - @WorkspaceJoinColumn('targetWorkflow') + targetWorkflow: EntityRelation | null; targetWorkflowId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetWorkflowVersion, - type: RelationType.MANY_TO_ONE, - label: msg`WorkflowVersion`, - description: msg`Event workflow version`, - icon: 'IconTargetArrow', - inverseSideTarget: () => WorkflowVersionWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetWorkflowVersion: Relation | null; - - @WorkspaceJoinColumn('targetWorkflowVersion') + targetWorkflowVersion: EntityRelation | null; targetWorkflowVersionId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetWorkflowRun, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow Run`, - description: msg`Event workflow run`, - icon: 'IconTargetArrow', - inverseSideTarget: () => WorkflowRunWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetWorkflowRun: Relation | null; - - @WorkspaceJoinColumn('targetWorkflowRun') + targetWorkflowRun: EntityRelation | null; targetWorkflowRunId: string | null; - - @WorkspaceRelation({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetDashboard, - type: RelationType.MANY_TO_ONE, - label: msg`Dashboard`, - description: msg`Event dashboard`, - icon: 'IconTargetArrow', - inverseSideTarget: () => DashboardWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.SET_NULL, - isMorphRelation: true, - morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - targetDashboard: Relation | null; - - @WorkspaceJoinColumn('targetDashboard') + targetDashboard: EntityRelation | null; targetDashboardId: string | null; - - // todo: remove this decorator and the custom field - @WorkspaceDynamicRelation({ - type: RelationType.MANY_TO_ONE, - argsFactory: (oppositeObjectMetadata) => ({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetCustom, - name: oppositeObjectMetadata.nameSingular, - label: oppositeObjectMetadata.labelSingular, - description: `Timeline Activity ${oppositeObjectMetadata.labelSingular}`, - joinColumn: `${oppositeObjectMetadata.nameSingular}Id`, - icon: 'IconTimeline', - }), - inverseSideTarget: () => CustomWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - }) - custom: Relation; - - @WorkspaceDynamicRelation({ - type: RelationType.MANY_TO_ONE, - argsFactory: (oppositeObjectMetadata) => ({ - standardId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetCustom, - name: oppositeObjectMetadata.nameSingular, - label: oppositeObjectMetadata.labelSingular, - description: `Timeline Activity ${oppositeObjectMetadata.labelSingular}`, - joinColumn: `target${capitalize(oppositeObjectMetadata.nameSingular)}Id`, - icon: 'IconTimeline', - }), - inverseSideTarget: () => CustomWorkspaceEntity, - inverseSideFieldKey: 'timelineActivities', - onDelete: RelationOnDeleteAction.CASCADE, - }) - targetCustom: Relation; + custom: EntityRelation; + targetCustom: EntityRelation; } diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts index be28f75f5f7..6daf1ddb7c9 100644 --- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts @@ -1,84 +1,17 @@ -import { msg } from '@lingui/core/macro'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; -import { Relation } from 'typeorm'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; - -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; - import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { WORKFLOW_AUTOMATED_TRIGGER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { AutomatedTriggerSettings } from 'src/modules/workflow/workflow-trigger/automated-trigger/constants/automated-trigger-settings'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AutomatedTriggerSettings } from 'src/modules/workflow/workflow-trigger/automated-trigger/constants/automated-trigger-settings'; -import { WorkflowWorkspaceEntity } from './workflow.workspace-entity'; +import { type WorkflowWorkspaceEntity } from './workflow.workspace-entity'; export enum AutomatedTriggerType { DATABASE_EVENT = 'DATABASE_EVENT', CRON = 'CRON', } -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.workflowAutomatedTrigger, - - namePlural: 'workflowAutomatedTriggers', - labelSingular: msg`WorkflowAutomatedTrigger`, - labelPlural: msg`WorkflowAutomatedTriggers`, - description: msg`A workflow automated trigger`, - icon: STANDARD_OBJECT_ICONS.workflowAutomatedTrigger, -}) -@WorkspaceIsSystem() export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: WORKFLOW_AUTOMATED_TRIGGER_STANDARD_FIELD_IDS.type, - type: FieldMetadataType.SELECT, - label: msg`Automated Trigger Type`, - description: msg`The workflow automated trigger type`, - options: [ - { - value: AutomatedTriggerType.DATABASE_EVENT, - label: 'Database Event', - position: 0, - color: 'green', - }, - { - value: AutomatedTriggerType.CRON, - label: 'Cron', - position: 1, - color: 'blue', - }, - ], - }) - @WorkspaceIsFieldUIReadOnly() type: AutomatedTriggerType; - - @WorkspaceField({ - standardId: WORKFLOW_AUTOMATED_TRIGGER_STANDARD_FIELD_IDS.settings, - type: FieldMetadataType.RAW_JSON, - label: msg`Settings`, - description: msg`The workflow automated trigger settings`, - }) - @WorkspaceIsFieldUIReadOnly() settings: AutomatedTriggerSettings; - - @WorkspaceRelation({ - standardId: WORKFLOW_AUTOMATED_TRIGGER_STANDARD_FIELD_IDS.workflow, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`WorkflowAutomatedTrigger workflow`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowWorkspaceEntity, - inverseSideFieldKey: 'automatedTriggers', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - workflow: Relation; - - @WorkspaceJoinColumn('workflow') + workflow: EntityRelation; workflowId: string; } diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts index 56f5773d92a..001c32a4dc0 100644 --- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts @@ -1,39 +1,15 @@ import { registerEnumType } from '@nestjs/graphql'; -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - ActorMetadata, - FieldMetadataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; +import { type ActorMetadata, FieldMetadataType } from 'twenty-shared/types'; import { type WorkflowRunStepInfos } from 'twenty-shared/workflow'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { WORKFLOW_RUN_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; -import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; -import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; +import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; import { type WorkflowActionOutput } from 'src/modules/workflow/workflow-executor/types/workflow-action-output.type'; import { type WorkflowAction } from 'src/modules/workflow/workflow-executor/workflow-actions/types/workflow-action.type'; import { type WorkflowTrigger } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type'; @@ -82,233 +58,21 @@ export const SEARCH_FIELDS_FOR_WORKFLOW_RUNS: FieldTypeAndNameMetadata[] = [ { name: NAME_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.workflowRun, - - namePlural: 'workflowRuns', - labelSingular: msg`Workflow Run`, - labelPlural: msg`Workflow Runs`, - description: msg`A workflow run`, - labelIdentifierStandardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name, - icon: STANDARD_OBJECT_ICONS.workflowRun, -}) -@WorkspaceIsSystem() -@WorkspaceIsNotAuditLogged() export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`Name of the workflow run`, - icon: 'IconSettingsAutomation', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() name: string | null; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.enqueuedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Workflow run enqueued at`, - description: msg`Workflow run enqueued at`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() enqueuedAt: Date | null; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.startedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Workflow run started at`, - description: msg`Workflow run started at`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() startedAt: string | null; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.endedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Workflow run ended at`, - description: msg`Workflow run ended at`, - icon: 'IconHistory', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() endedAt: string | null; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.status, - type: FieldMetadataType.SELECT, - label: msg`Workflow run status`, - description: msg`Workflow run status`, - icon: 'IconStatusChange', - options: [ - { - value: WorkflowRunStatus.NOT_STARTED, - label: 'Not started', - position: 0, - color: 'gray', - }, - { - value: WorkflowRunStatus.RUNNING, - label: 'Running', - position: 1, - color: 'yellow', - }, - { - value: WorkflowRunStatus.COMPLETED, - label: 'Completed', - position: 2, - color: 'green', - }, - { - value: WorkflowRunStatus.FAILED, - label: 'Failed', - position: 3, - color: 'red', - }, - { - value: WorkflowRunStatus.ENQUEUED, - label: 'Enqueued', - position: 4, - color: 'blue', - }, - { - value: WorkflowRunStatus.STOPPING, - label: 'Stopping', - position: 5, - color: 'orange', - }, - { - value: WorkflowRunStatus.STOPPED, - label: 'Stopped', - position: 6, - color: 'gray', - }, - ], - defaultValue: "'NOT_STARTED'", - }) - @WorkspaceIsFieldUIReadOnly() status: WorkflowRunStatus; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Executed by`, - icon: 'IconCreativeCommonsSa', - description: msg`The executor of the workflow`, - }) - @WorkspaceIsFieldUIReadOnly() createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.state, - type: FieldMetadataType.RAW_JSON, - label: msg`State`, - description: msg`State of the workflow run`, - icon: 'IconHierarchy2', - }) - @WorkspaceIsFieldUIReadOnly() state: WorkflowRunState; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Workflow run position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_WORKFLOW_RUNS, - ), - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) searchVector: string; - - // Relations - @WorkspaceRelation({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.workflowVersion, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow version`, - description: msg`Workflow version linked to the run.`, - icon: 'IconVersions', - inverseSideTarget: () => WorkflowVersionWorkspaceEntity, - inverseSideFieldKey: 'runs', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - workflowVersion: Relation; - - @WorkspaceJoinColumn('workflowVersion') + workflowVersion: EntityRelation; workflowVersionId: string; - - @WorkspaceRelation({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.workflow, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`Workflow linked to the run.`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowWorkspaceEntity, - inverseSideFieldKey: 'runs', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - workflow: Relation; - - @WorkspaceJoinColumn('workflow') + workflow: EntityRelation; workflowId: string; - - @WorkspaceRelation({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the workflow run`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline activities linked to the run`, - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetWorkflowRun', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() - timelineActivities: Relation; + favorites: EntityRelation; + timelineActivities: EntityRelation; } diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts index e82c860de63..24c03022514 100644 --- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts @@ -1,32 +1,12 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types'; +import { FieldMetadataType } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { WORKFLOW_VERSION_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; -import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; -import { WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; +import { type WorkflowWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow.workspace-entity'; import { type WorkflowAction } from 'src/modules/workflow/workflow-executor/workflow-actions/types/workflow-action.type'; import { type WorkflowTrigger } from 'src/modules/workflow/workflow-trigger/types/workflow-trigger.type'; @@ -37,179 +17,22 @@ export enum WorkflowVersionStatus { ARCHIVED = 'ARCHIVED', } -const WorkflowVersionStatusOptions: FieldMetadataComplexOption[] = [ - { - value: WorkflowVersionStatus.DRAFT, - label: 'Draft', - position: 0, - color: 'yellow', - }, - { - value: WorkflowVersionStatus.ACTIVE, - label: 'Active', - position: 1, - color: 'green', - }, - { - value: WorkflowVersionStatus.DEACTIVATED, - label: 'Deactivated', - position: 2, - color: 'orange', - }, - { - value: WorkflowVersionStatus.ARCHIVED, - label: 'Archived', - position: 3, - color: 'gray', - }, -]; - const NAME_FIELD_NAME = 'name'; export const SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS: FieldTypeAndNameMetadata[] = [ { name: NAME_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.workflowVersion, - - namePlural: 'workflowVersions', - labelSingular: msg`Workflow Version`, - labelPlural: msg`Workflow Versions`, - description: msg`A workflow version`, - icon: STANDARD_OBJECT_ICONS.workflowVersion, - labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name, -}) -@WorkspaceIsSystem() export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`The workflow version name`, - icon: 'IconSettingsAutomation', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() name: string | null; - - @WorkspaceField({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.trigger, - type: FieldMetadataType.RAW_JSON, - label: msg`Version trigger`, - description: msg`Json object to provide trigger`, - icon: 'IconSettingsAutomation', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() trigger: WorkflowTrigger | null; - - @WorkspaceField({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.steps, - type: FieldMetadataType.RAW_JSON, - label: msg`Version steps`, - description: msg`Json object to provide steps`, - icon: 'IconSettingsAutomation', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() steps: WorkflowAction[] | null; - - @WorkspaceField({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.status, - type: FieldMetadataType.SELECT, - label: msg`Version status`, - description: msg`The workflow version status`, - icon: 'IconStatusChange', - options: WorkflowVersionStatusOptions, - defaultValue: "'DRAFT'", - }) - @WorkspaceIsFieldUIReadOnly() status: WorkflowVersionStatus; - - @WorkspaceField({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Workflow version position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS, - ), - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) searchVector: string; - - // Relations - @WorkspaceRelation({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.workflow, - type: RelationType.MANY_TO_ONE, - label: msg`Workflow`, - description: msg`WorkflowVersion workflow`, - icon: 'IconSettingsAutomation', - inverseSideTarget: () => WorkflowWorkspaceEntity, - inverseSideFieldKey: 'versions', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - workflow: Relation; - - @WorkspaceJoinColumn('workflow') + workflow: EntityRelation; workflowId: string; - - @WorkspaceRelation({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.runs, - type: RelationType.ONE_TO_MANY, - label: msg`Runs`, - description: msg`Workflow runs linked to the version.`, - icon: 'IconRun', - inverseSideTarget: () => WorkflowRunWorkspaceEntity, - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - runs: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the workflow version`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline activities linked to the version`, - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetWorkflowVersion', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() - timelineActivities: Relation; + runs: EntityRelation; + favorites: EntityRelation; + timelineActivities: EntityRelation; } diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts index c40767e05dc..f707ef75389 100644 --- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow.workspace-entity.ts @@ -1,37 +1,14 @@ -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { - ActorMetadata, - FieldMetadataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; +import { type ActorMetadata, FieldMetadataType } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { WORKFLOW_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; -import { WorkflowAutomatedTriggerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity'; -import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; -import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type WorkflowAutomatedTriggerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity'; +import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; +import { type WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; export enum WorkflowStatus { DRAFT = 'DRAFT', @@ -39,195 +16,24 @@ export enum WorkflowStatus { DEACTIVATED = 'DEACTIVATED', } -const WorkflowStatusOptions: FieldMetadataComplexOption[] = [ - { - value: WorkflowStatus.DRAFT, - label: 'Draft', - position: 0, - color: 'yellow', - }, - { - value: WorkflowStatus.ACTIVE, - label: 'Active', - position: 1, - color: 'green', - }, - { - value: WorkflowStatus.DEACTIVATED, - label: 'Deactivated', - position: 2, - color: 'gray', - }, -]; - const NAME_FIELD_NAME = 'name'; export const SEARCH_FIELDS_FOR_WORKFLOWS: FieldTypeAndNameMetadata[] = [ { name: NAME_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.workflow, - - namePlural: 'workflows', - labelSingular: msg`Workflow`, - labelPlural: msg`Workflows`, - description: msg`A workflow`, - icon: STANDARD_OBJECT_ICONS.workflow, - shortcut: 'W', - labelIdentifierStandardId: WORKFLOW_STANDARD_FIELD_IDS.name, -}) export class WorkflowWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`The workflow name`, - icon: 'IconSettingsAutomation', - }) - @WorkspaceIsNullable() name: string | null; - - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.lastPublishedVersionId, - type: FieldMetadataType.TEXT, - label: msg`Last published Version Id`, - description: msg`The workflow last published version id`, - icon: 'IconVersions', - }) - @WorkspaceIsNullable() - @WorkspaceIsFieldUIReadOnly() lastPublishedVersionId: string | null; - - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.statuses, - type: FieldMetadataType.MULTI_SELECT, - label: msg`Statuses`, - description: msg`The current statuses of the workflow versions`, - icon: 'IconStatusChange', - options: WorkflowStatusOptions, - }) - @WorkspaceIsNullable() - @WorkspaceIsFieldUIReadOnly() statuses: WorkflowStatus[] | null; - - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Workflow record position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_WORKFLOWS, - ), - }) - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) searchVector: string; - - // Relations - @WorkspaceRelation({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.versions, - type: RelationType.ONE_TO_MANY, - label: msg`Versions`, - description: msg`Workflow versions linked to the workflow.`, - icon: 'IconVersions', - inverseSideTarget: () => WorkflowVersionWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - versions: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.runs, - type: RelationType.ONE_TO_MANY, - label: msg`Runs`, - description: msg`Workflow runs linked to the workflow.`, - icon: 'IconRun', - inverseSideTarget: () => WorkflowRunWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - runs: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.automatedTriggers, - type: RelationType.ONE_TO_MANY, - label: msg`Automated Triggers`, - description: msg`Workflow automated triggers linked to the workflow.`, - inverseSideTarget: () => WorkflowAutomatedTriggerWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - @WorkspaceIsFieldUIReadOnly() - automatedTriggers: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the workflow`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - favorites: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Timeline Activities`, - description: msg`Timeline activities linked to the workflow`, - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - inverseSideFieldKey: 'targetWorkflow', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceRelation({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.attachments, - type: RelationType.ONE_TO_MANY, - label: msg`Attachments`, - description: msg`Attachments linked to the workflow`, - icon: 'IconFileUpload', - inverseSideTarget: () => AttachmentWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsSystem() - attachments: Relation; - - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.createdBy, - type: FieldMetadataType.ACTOR, - label: msg`Created by`, - icon: 'IconCreativeCommonsSa', - description: msg`The creator of the record`, - }) - @WorkspaceIsFieldUIReadOnly() + versions: EntityRelation; + runs: EntityRelation; + automatedTriggers: EntityRelation; + favorites: EntityRelation; + timelineActivities: EntityRelation; + attachments: EntityRelation; createdBy: ActorMetadata; - - @WorkspaceField({ - standardId: WORKFLOW_STANDARD_FIELD_IDS.updatedBy, - type: FieldMetadataType.ACTOR, - label: msg`Updated by`, - icon: 'IconUserCircle', - description: msg`The workspace member who last updated the record`, - }) - @WorkspaceIsFieldUIReadOnly() updatedBy: ActorMetadata; } diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts index 7f04643161c..833cff20dc4 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/services/workflow-execution-context.service.ts @@ -7,9 +7,9 @@ import { type WorkspaceAuthContext } from 'src/engine/api/common/interfaces/work import { ApplicationService } from 'src/engine/core-modules/application/application.service'; import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; +import { ADMIN_ROLE } from 'src/engine/metadata-modules/role/constants/admin-role'; import { RoleService } from 'src/engine/metadata-modules/role/role.service'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; -import { ADMIN_ROLE } from 'src/engine/workspace-manager/workspace-sync-metadata/standard-roles/roles/admin-role'; import { type WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; import { type WorkflowExecutionContext } from 'src/modules/workflow/workflow-executor/types/workflow-execution-context.type'; import { WorkflowRunWorkspaceService as WorkflowRunService } from 'src/modules/workflow/workflow-runner/workflow-run/workflow-run.workspace-service'; diff --git a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts index 8f4e6ec5b65..df9deead3fe 100644 --- a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts @@ -1,45 +1,20 @@ import { registerEnumType } from '@nestjs/graphql'; -import { msg } from '@lingui/core/macro'; -import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata'; -import { type APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared/translations'; -import { - FieldMetadataType, - FullNameMetadata, - NumberDataType, - RelationOnDeleteAction, -} from 'twenty-shared/types'; +import { type APP_LOCALES } from 'twenty-shared/translations'; +import { FieldMetadataType, type FullNameMetadata } from 'twenty-shared/types'; -import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface'; -import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface'; - -import { IndexType } from 'src/engine/metadata-modules/index-metadata/types/indexType.types'; -import { SEARCH_VECTOR_FIELD } from 'src/engine/metadata-modules/search-field-metadata/constants/search-vector-field.constants'; import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WorkspaceIsUnique } from 'src/engine/twenty-orm/decorators/workspace-is-unique.decorator'; -import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator'; -import { WORKSPACE_MEMBER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { - type FieldTypeAndNameMetadata, - getTsVectorColumnExpressionFromFields, -} from 'src/engine/workspace-manager/workspace-sync-metadata/utils/get-ts-vector-column-expression.util'; -import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; -import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity'; -import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; -import { CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; -import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; -import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; -import { MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; -import { TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; -import { TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; +import { type FieldTypeAndNameMetadata } from 'src/engine/workspace-manager/utils/get-ts-vector-column-expression.util'; +import { type EntityRelation } from 'src/engine/workspace-manager/workspace-migration/types/entity-relation.interface'; +import { type AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; +import { type BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity'; +import { type CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity'; +import { type CompanyWorkspaceEntity } from 'src/modules/company/standard-objects/company.workspace-entity'; +import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; +import { type FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity'; +import { type MessageParticipantWorkspaceEntity } from 'src/modules/messaging/common/standard-objects/message-participant.workspace-entity'; +import { type TaskWorkspaceEntity } from 'src/modules/task/standard-objects/task.workspace-entity'; +import { type TimelineActivityWorkspaceEntity } from 'src/modules/timeline/standard-objects/timeline-activity.workspace-entity'; export enum WorkspaceMemberDateFormatEnum { SYSTEM = 'SYSTEM', @@ -86,378 +61,29 @@ export const SEARCH_FIELDS_FOR_WORKSPACE_MEMBER: FieldTypeAndNameMetadata[] = [ { name: USER_EMAIL_FIELD_NAME, type: FieldMetadataType.TEXT }, ]; -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.workspaceMember, - - namePlural: 'workspaceMembers', - labelSingular: msg`Workspace Member`, - labelPlural: msg`Workspace Members`, - description: msg`A workspace member`, - icon: STANDARD_OBJECT_ICONS.workspaceMember, - labelIdentifierStandardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name, - imageIdentifierStandardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.avatarUrl, -}) -@WorkspaceIsSystem() -@WorkspaceIsSearchable() export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.position, - type: FieldMetadataType.POSITION, - label: msg`Position`, - description: msg`Workspace member position`, - icon: 'IconHierarchy2', - defaultValue: 0, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() position: number; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.FULL_NAME, - label: msg`Name`, - description: msg`Workspace member name`, - icon: 'IconCircleUser', - }) - @WorkspaceIsFieldUIReadOnly() name: FullNameMetadata; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.colorScheme, - type: FieldMetadataType.TEXT, - label: msg`Color Scheme`, - description: msg`Preferred color scheme`, - icon: 'IconColorSwatch', - defaultValue: "'System'", - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() colorScheme: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.locale, - type: FieldMetadataType.TEXT, - label: msg`Language`, - description: msg`Preferred language`, - icon: 'IconLanguage', - defaultValue: `'${SOURCE_LOCALE}'`, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() locale: keyof typeof APP_LOCALES; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.avatarUrl, - type: FieldMetadataType.TEXT, - label: msg`Avatar Url`, - description: msg`Workspace member avatar`, - icon: 'IconFileUpload', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsSystem() avatarUrl: string | null; - - @WorkspaceIsUnique() - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.userEmail, - type: FieldMetadataType.TEXT, - label: msg`User Email`, - description: msg`Related user email address`, - icon: 'IconMail', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsSystem() userEmail: string | null; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.calendarStartDay, - type: FieldMetadataType.NUMBER, - label: msg`Start of the week`, - defaultValue: 7, - description: msg`User's preferred start day of the week`, - settings: { - dataType: NumberDataType.INT, - }, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() calendarStartDay: number; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.userId, - type: FieldMetadataType.UUID, - label: msg`User Id`, - description: msg`Associated User Id`, - icon: 'IconCircleUsers', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() userId: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeZone, - type: FieldMetadataType.TEXT, - label: msg`Time zone`, - defaultValue: "'system'", - description: msg`User time zone`, - icon: 'IconTimezone', - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() timeZone: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.dateFormat, - type: FieldMetadataType.SELECT, - label: msg`Date format`, - description: msg`User's preferred date format`, - icon: 'IconCalendarEvent', - options: [ - { - value: WorkspaceMemberDateFormatEnum.SYSTEM, - label: 'System', - position: 0, - color: 'turquoise', - }, - { - value: WorkspaceMemberDateFormatEnum.MONTH_FIRST, - label: 'Month First', - position: 1, - color: 'red', - }, - { - value: WorkspaceMemberDateFormatEnum.DAY_FIRST, - label: 'Day First', - position: 2, - color: 'purple', - }, - { - value: WorkspaceMemberDateFormatEnum.YEAR_FIRST, - label: 'Year First', - position: 3, - color: 'sky', - }, - ], - defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() dateFormat: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeFormat, - type: FieldMetadataType.SELECT, - label: msg`Time format`, - description: msg`User's preferred time format`, - icon: 'IconClock2', - options: [ - { - value: WorkspaceMemberTimeFormatEnum.SYSTEM, - label: 'System', - position: 0, - color: 'sky', - }, - { - value: WorkspaceMemberTimeFormatEnum.HOUR_24, - label: '24HRS', - position: 1, - color: 'red', - }, - { - value: WorkspaceMemberTimeFormatEnum.HOUR_12, - label: '12HRS', - position: 2, - color: 'purple', - }, - ], - defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() timeFormat: string; - - // Relations - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.assignedTasks, - type: RelationType.ONE_TO_MANY, - label: msg`Assigned tasks`, - description: msg`Tasks assigned to the workspace member`, - icon: 'IconCheckbox', - inverseSideTarget: () => TaskWorkspaceEntity, - inverseSideFieldKey: 'assignee', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - assignedTasks: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.favorites, - type: RelationType.ONE_TO_MANY, - label: msg`Favorites`, - description: msg`Favorites linked to the workspace member`, - icon: 'IconHeart', - inverseSideTarget: () => FavoriteWorkspaceEntity, - inverseSideFieldKey: 'forWorkspaceMember', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - favorites: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.accountOwnerForCompanies, - type: RelationType.ONE_TO_MANY, - label: msg`Account Owner For Companies`, - description: msg`Account owner for companies`, - icon: 'IconBriefcase', - inverseSideTarget: () => CompanyWorkspaceEntity, - inverseSideFieldKey: 'accountOwner', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - accountOwnerForCompanies: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.authoredAttachments, - type: RelationType.ONE_TO_MANY, - label: msg`Authored attachments`, - description: msg`Attachments created by the workspace member`, - icon: 'IconFileImport', - inverseSideTarget: () => AttachmentWorkspaceEntity, - inverseSideFieldKey: 'author', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() - authoredAttachments: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.connectedAccounts, - type: RelationType.ONE_TO_MANY, - label: msg`Connected accounts`, - description: msg`Connected accounts`, - icon: 'IconAt', - inverseSideTarget: () => ConnectedAccountWorkspaceEntity, - inverseSideFieldKey: 'accountOwner', - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - connectedAccounts: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.messageParticipants, - type: RelationType.ONE_TO_MANY, - label: msg`Message Participants`, - description: msg`Message Participants`, - icon: 'IconUserCircle', - inverseSideTarget: () => MessageParticipantWorkspaceEntity, - inverseSideFieldKey: 'workspaceMember', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - messageParticipants: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.blocklist, - type: RelationType.ONE_TO_MANY, - label: msg`Blocklist`, - description: msg`Blocklisted handles`, - icon: 'IconForbid2', - inverseSideTarget: () => BlocklistWorkspaceEntity, - inverseSideFieldKey: 'workspaceMember', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - blocklist: Relation; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.calendarEventParticipants, - type: RelationType.ONE_TO_MANY, - label: msg`Calendar Event Participants`, - description: msg`Calendar Event Participants`, - icon: 'IconCalendar', - inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity, - inverseSideFieldKey: 'workspaceMember', - onDelete: RelationOnDeleteAction.SET_NULL, - }) - @WorkspaceIsFieldUIReadOnly() - calendarEventParticipants: Relation< + assignedTasks: EntityRelation; + favorites: EntityRelation; + accountOwnerForCompanies: EntityRelation; + authoredAttachments: EntityRelation; + connectedAccounts: EntityRelation; + messageParticipants: EntityRelation; + blocklist: EntityRelation; + calendarEventParticipants: EntityRelation< CalendarEventParticipantWorkspaceEntity[] >; - - @WorkspaceRelation({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timelineActivities, - type: RelationType.ONE_TO_MANY, - label: msg`Events`, - description: msg`Events linked to the workspace member`, - icon: 'IconTimelineEvent', - inverseSideTarget: () => TimelineActivityWorkspaceEntity, - onDelete: RelationOnDeleteAction.CASCADE, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsSystem() - timelineActivities: Relation; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.searchVector, - type: FieldMetadataType.TS_VECTOR, - label: SEARCH_VECTOR_FIELD.label, - description: SEARCH_VECTOR_FIELD.description, - icon: 'IconUser', - generatedType: 'STORED', - asExpression: getTsVectorColumnExpressionFromFields( - SEARCH_FIELDS_FOR_WORKSPACE_MEMBER, - ), - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsNullable() - @WorkspaceIsSystem() - @WorkspaceFieldIndex({ indexType: IndexType.GIN }) + timelineActivities: EntityRelation; searchVector: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.numberFormat, - type: FieldMetadataType.SELECT, - label: msg`Number format`, - description: msg`User's preferred number format`, - icon: 'IconNumbers', - options: [ - { - value: WorkspaceMemberNumberFormatEnum.SYSTEM, - label: 'System', - position: 0, - color: 'turquoise', - }, - { - value: WorkspaceMemberNumberFormatEnum.COMMAS_AND_DOT, - label: 'Commas and dot', - position: 1, - color: 'blue', - }, - { - value: WorkspaceMemberNumberFormatEnum.SPACES_AND_COMMA, - label: 'Spaces and comma', - position: 2, - color: 'green', - }, - { - value: WorkspaceMemberNumberFormatEnum.DOTS_AND_COMMA, - label: 'Dots and comma', - position: 3, - color: 'orange', - }, - { - value: WorkspaceMemberNumberFormatEnum.APOSTROPHE_AND_DOT, - label: 'Apostrophe and dot', - position: 4, - color: 'purple', - }, - ], - defaultValue: `'${WorkspaceMemberNumberFormatEnum.SYSTEM}'`, - }) - @WorkspaceIsFieldUIReadOnly() - @WorkspaceIsSystem() numberFormat: string; } diff --git a/packages/twenty-server/test/integration/graphql/suites/inputs-validation/filter-validation/constants/failing-filter-input-by-field-metadata-type.constant.ts b/packages/twenty-server/test/integration/graphql/suites/inputs-validation/filter-validation/constants/failing-filter-input-by-field-metadata-type.constant.ts index 0a36286dd37..96a4f5e5a51 100644 --- a/packages/twenty-server/test/integration/graphql/suites/inputs-validation/filter-validation/constants/failing-filter-input-by-field-metadata-type.constant.ts +++ b/packages/twenty-server/test/integration/graphql/suites/inputs-validation/filter-validation/constants/failing-filter-input-by-field-metadata-type.constant.ts @@ -2,7 +2,7 @@ import { type FieldMetadataTypesToTestForFilterInputValidation } from 'test/inte import { joinColumnNameForManyToOneMorphRelationField1 } from 'test/integration/graphql/suites/inputs-validation/utils/setup-test-objects-with-all-field-types.util'; import { FieldMetadataType } from 'twenty-shared/types'; -import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/workspace-migration/factories/composite-column-action.factory'; +import { type CompositeFieldMetadataType } from 'src/engine/metadata-modules/field-metadata/types/composite-field-metadata-type.type'; export const failingFilterInputByFieldMetadataType: { [K in Exclude< diff --git a/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation-v1.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation-v1.integration-spec.ts deleted file mode 100644 index 521b9f38ee7..00000000000 --- a/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation-v1.integration-spec.ts +++ /dev/null @@ -1,332 +0,0 @@ -import { randomUUID } from 'crypto'; - -import { activateWorkspace } from 'test/integration/graphql/utils/activate-workspace.util'; -import { deleteUser } from 'test/integration/graphql/utils/delete-user.util'; -import { findManyApplications } from 'test/integration/graphql/utils/find-many-applications.util'; -import { getAuthTokensFromLoginToken } from 'test/integration/graphql/utils/get-auth-tokens-from-login-token.util'; -import { getCurrentUser } from 'test/integration/graphql/utils/get-current-user.util'; -import { signUpInNewWorkspace } from 'test/integration/graphql/utils/sign-up-in-new-workspace.util'; -import { signUp } from 'test/integration/graphql/utils/sign-up.util'; -import { createOneObjectMetadata } from 'test/integration/metadata/suites/object-metadata/utils/create-one-object-metadata.util'; -import { createOneCronTrigger } from 'test/integration/metadata/suites/serverless-function/utils/create-one-cron-trigger.util'; -import { createOneDatabaseEventTrigger } from 'test/integration/metadata/suites/serverless-function/utils/create-one-database-event-trigger.util'; -import { createOneRouteTrigger } from 'test/integration/metadata/suites/serverless-function/utils/create-one-route-trigger.util'; -import { createOneServerlessFunction } from 'test/integration/metadata/suites/serverless-function/utils/create-one-serverless-function.util'; -import { updateFeatureFlag } from 'test/integration/metadata/suites/utils/update-feature-flag.util'; -import { jestExpectToBeDefined } from 'test/utils/jest-expect-to-be-defined.util.test'; -import { HTTPMethod } from 'twenty-shared/types'; -import { isDefined } from 'twenty-shared/utils'; -import { WorkspaceActivationStatus } from 'twenty-shared/workspace'; - -import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { TWENTY_STANDARD_APPLICATION } from 'src/engine/workspace-manager/twenty-standard-application/constants/twenty-standard-applications'; - -describe('Successful user and workspace creation', () => { - let createdUserAccessToken: string | undefined; - - afterEach(async () => { - if (!isDefined(createdUserAccessToken)) { - return; - } - - await deleteUser({ - accessToken: createdUserAccessToken, - expectToFail: false, - }); - }); - - beforeAll(async () => { - await updateFeatureFlag({ - expectToFail: false, - featureFlag: FeatureFlagKey.IS_WORKSPACE_CREATION_V2_ENABLED, - value: false, - }); - }); - - afterAll(async () => { - await updateFeatureFlag({ - expectToFail: false, - featureFlag: FeatureFlagKey.IS_WORKSPACE_CREATION_V2_ENABLED, - value: true, - }); - }); - - it('should sign up a new user and create a new workspace successfully', async () => { - const uniqueEmail = `test-${randomUUID()}@example.com`; - - const { data } = await signUp({ - input: { - email: uniqueEmail, - password: 'Test123!@#', - }, - - expectToFail: false, - }); - - createdUserAccessToken = - data.signUp.tokens.accessOrWorkspaceAgnosticToken.token; - - // Mark email as verified to bypass email verification requirement - await testDataSource.query( - 'UPDATE core."user" SET "isEmailVerified" = true WHERE email = $1', - [uniqueEmail], - ); - - const { - data: { signUpInNewWorkspace: signUpInNewWorkspaceData }, - } = await signUpInNewWorkspace({ - accessToken: createdUserAccessToken, - expectToFail: false, - }); - - const { - data: { getAuthTokensFromLoginToken: authTokensData }, - } = await getAuthTokensFromLoginToken({ - origin: signUpInNewWorkspaceData.workspace.workspaceUrls.subdomainUrl, - loginToken: signUpInNewWorkspaceData.loginToken.token, - expectToFail: false, - }); - - const newWorkspaceAccessToken = - authTokensData.tokens.accessOrWorkspaceAgnosticToken.token; - - const { - data: { activateWorkspace: activateWorkspaceData }, - } = await activateWorkspace({ - accessToken: newWorkspaceAccessToken, - displayName: '42 answer', - expectToFail: false, - }); - - expect(activateWorkspaceData.activationStatus).toBe( - WorkspaceActivationStatus.ACTIVE, - ); - - const { - data: { currentUser }, - } = await getCurrentUser({ - accessToken: newWorkspaceAccessToken, - expectToFail: false, - }); - - jestExpectToBeDefined(currentUser.currentWorkspace); - const { inviteHash: _, ...expectedCurrentWorkspace } = - activateWorkspaceData; - - jestExpectToBeDefined(currentUser.currentWorkspace); - expect(currentUser.currentWorkspace).toMatchObject( - expectedCurrentWorkspace, - ); - - const { - data: { findManyApplications: findManyApplicationsData }, - } = await findManyApplications({ - accessToken: newWorkspaceAccessToken, - expectToFail: false, - }); - - expect(findManyApplicationsData.length).toBe(2); - const twentyStandardApp = findManyApplicationsData.find( - (application) => - application.universalIdentifier === - TWENTY_STANDARD_APPLICATION.universalIdentifier, - ); - - jestExpectToBeDefined(twentyStandardApp); - const { - sourcePath: _sourcePath, - sourceType: _sourceType, - ...expectedStandardTwentyApplication - } = TWENTY_STANDARD_APPLICATION; - - expect(twentyStandardApp).toMatchObject(expectedStandardTwentyApplication); - - const workpsaceCustomApplication = findManyApplicationsData.find( - (application) => - application.id === - currentUser.currentWorkspace?.workspaceCustomApplicationId, - ); - - jestExpectToBeDefined(workpsaceCustomApplication); - expect(workpsaceCustomApplication.universalIdentifier).toEqual( - workpsaceCustomApplication.id, - ); - }); - - it('should delete workspace and related metadata entities when last user is deleted', async () => { - const uniqueEmail = `test-delete-${randomUUID()}@example.com`; - - const { data } = await signUp({ - input: { - email: uniqueEmail, - password: 'Test123!@#', - }, - expectToFail: false, - }); - - createdUserAccessToken = - data.signUp.tokens.accessOrWorkspaceAgnosticToken.token; - - // Mark email as verified to bypass email verification requirement - await testDataSource.query( - 'UPDATE core."user" SET "isEmailVerified" = true WHERE email = $1', - [uniqueEmail], - ); - - const { - data: { signUpInNewWorkspace: signUpInNewWorkspaceData }, - } = await signUpInNewWorkspace({ - accessToken: createdUserAccessToken, - expectToFail: false, - }); - - const workspaceId = signUpInNewWorkspaceData.workspace.id; - - const { - data: { getAuthTokensFromLoginToken: authTokensData }, - } = await getAuthTokensFromLoginToken({ - origin: signUpInNewWorkspaceData.workspace.workspaceUrls.subdomainUrl, - loginToken: signUpInNewWorkspaceData.loginToken.token, - expectToFail: false, - }); - - const newWorkspaceAccessToken = - authTokensData.tokens.accessOrWorkspaceAgnosticToken.token; - - await activateWorkspace({ - accessToken: newWorkspaceAccessToken, - displayName: 'Test Workspace for Deletion', - expectToFail: false, - }); - - await createOneObjectMetadata({ - input: { - nameSingular: 'workspaceEviction', - namePlural: 'workspaceEvictions', - labelPlural: 'whatevers', - labelSingular: 'whatever', - isLabelSyncedWithName: false, - }, - token: newWorkspaceAccessToken, - expectToFail: false, - }); - - // Create a serverless function with route, cron, and database event triggers - const { - data: { createOneServerlessFunction: serverlessFunction }, - } = await createOneServerlessFunction({ - input: { - name: 'test-function-for-deletion', - description: 'A test serverless function for workspace deletion test', - }, - token: newWorkspaceAccessToken, - expectToFail: false, - }); - - // Create a route trigger for the serverless function - await createOneRouteTrigger({ - input: { - path: '/test-route-for-deletion', - isAuthRequired: true, - httpMethod: HTTPMethod.GET, - serverlessFunctionId: serverlessFunction.id, - }, - token: newWorkspaceAccessToken, - expectToFail: false, - }); - - // Create a cron trigger for the serverless function - await createOneCronTrigger({ - input: { - settings: { - pattern: '0 0 * * *', - }, - serverlessFunctionId: serverlessFunction.id, - }, - token: newWorkspaceAccessToken, - expectToFail: false, - }); - - // Create a database event trigger for the serverless function - await createOneDatabaseEventTrigger({ - input: { - settings: { - eventName: 'company.created', - }, - serverlessFunctionId: serverlessFunction.id, - }, - token: newWorkspaceAccessToken, - expectToFail: false, - }); - - const workspaceBeforeDeletion = await testDataSource.query( - 'SELECT * FROM core.workspace WHERE id = $1', - [workspaceId], - ); - - expect(workspaceBeforeDeletion).toHaveLength(1); - - const tablesToVerify = [ - 'dataSource', - 'objectMetadata', - 'fieldMetadata', - 'indexMetadata', - 'searchFieldMetadata', - 'workspaceMigration', - 'role', - 'roleTarget', - 'objectPermission', - 'fieldPermission', - 'permissionFlag', - 'serverlessFunction', - 'serverlessFunctionLayer', - 'agent', - 'databaseEventTrigger', - 'view', - 'viewField', - 'viewFilter', - 'viewFilterGroup', - 'viewGroup', - 'viewSort', - 'cronTrigger', - 'routeTrigger', - ]; - - let totalRecordsBefore = 0; - - for (const table of tablesToVerify) { - const result = await testDataSource.query( - `SELECT COUNT(*) as count FROM core."${table}" WHERE "workspaceId" = $1`, - [workspaceId], - ); - - totalRecordsBefore += parseInt(result[0].count); - } - - expect(totalRecordsBefore).toBeGreaterThan(0); - - await deleteUser({ - accessToken: createdUserAccessToken, - expectToFail: false, - }); - - createdUserAccessToken = undefined; - - const workspaceAfterDeletion = await testDataSource.query( - 'SELECT * FROM core.workspace WHERE id = $1', - [workspaceId], - ); - - expect(workspaceAfterDeletion).toHaveLength(0); - - for (const table of tablesToVerify) { - const result = await testDataSource.query( - `SELECT COUNT(*) as count FROM core."${table}" WHERE "workspaceId" = $1`, - [workspaceId], - ); - const count = parseInt(result[0].count); - - expect({ count, table }).toEqual({ count: 0, table }); - } - }); -}); diff --git a/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation.integration-spec.ts index 31d4b9e53cd..8d22f667d5b 100644 --- a/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/workspace/successful-user-and-workspace-creation.integration-spec.ts @@ -254,7 +254,6 @@ describe('Successful user and workspace creation', () => { 'fieldMetadata', 'indexMetadata', 'searchFieldMetadata', - 'workspaceMigration', 'role', 'roleTarget', 'objectPermission',