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 index 64505b9c5..83285f1c4 100644 --- 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 @@ -19,6 +19,7 @@ export interface WorkspaceFieldOptions< defaultValue?: FieldMetadataDefaultValue; options?: FieldMetadataOptions; settings?: FieldMetadataSettings; + isActive?: boolean; } export function WorkspaceField( @@ -75,6 +76,7 @@ export function WorkspaceField( isSystem, gate, isDeprecated, + isActive: options.isActive, }); }; } diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts index 0574fb792..862d72a25 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-field-metadata-args.interface.ts @@ -78,4 +78,9 @@ export interface WorkspaceFieldMetadataArgs { * Is deprecated field. */ readonly isDeprecated?: boolean; + + /** + * Is active field. + */ + readonly isActive?: boolean; } diff --git a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts index 861b1e7d4..40de6f318 100644 --- a/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts +++ b/packages/twenty-server/src/engine/twenty-orm/interfaces/workspace-relation-metadata-args.interface.ts @@ -81,4 +81,9 @@ export interface WorkspaceRelationMetadataArgs { * Field gate. */ readonly gate?: Gate; + + /** + * Is active field. + */ + readonly isActive?: boolean; } 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 index a54b77c38..9012a5900 100644 --- 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 @@ -172,6 +172,7 @@ export class StandardFieldFactory { isNullable: workspaceFieldMetadataArgs.isNullable, isCustom: workspaceFieldMetadataArgs.isDeprecated ? true : false, isSystem: workspaceFieldMetadataArgs.isSystem ?? false, + isActive: workspaceFieldMetadataArgs.isActive ?? true, }, ]; } @@ -222,6 +223,7 @@ export class StandardFieldFactory { isCustom: false, isSystem: true, isNullable: workspaceRelationMetadataArgs.isNullable, + isActive: workspaceRelationMetadataArgs.isActive ?? true, }); } @@ -239,6 +241,7 @@ export class StandardFieldFactory { workspaceEntityMetadataArgs?.isSystem || workspaceRelationMetadataArgs.isSystem, isNullable: true, + isActive: workspaceRelationMetadataArgs.isActive ?? true, }); return fieldMetadataCollection; 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 index c36e2da75..81722ad20 100644 --- 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 @@ -15,6 +15,7 @@ export type PartialFieldMetadata = Omit< isSystem?: boolean; workspaceId: string; objectMetadataId?: string; + isActive?: boolean; }; export type PartialComputedFieldMetadata = { 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 index 1ae597c2d..219ce346a 100644 --- 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 @@ -7,23 +7,23 @@ import { In, ObjectLiteral, } from 'typeorm'; -import { v4 as uuidV4 } from 'uuid'; import { DeepPartial } from 'typeorm/common/DeepPartial'; +import { v4 as uuidV4 } from 'uuid'; import { PartialFieldMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-field-metadata.interface'; import { PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface'; -import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; import { FieldMetadataEntity, FieldMetadataType, } from 'src/engine/metadata-modules/field-metadata/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 { RelationMetadataEntity } from 'src/engine/metadata-modules/relation-metadata/relation-metadata.entity'; -import { FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; -import { WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; import { FieldMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; import { ObjectMetadataUpdate } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-object.factory'; -import { IndexMetadataEntity } from 'src/engine/metadata-modules/index-metadata/index-metadata.entity'; +import { WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage'; @Injectable() export class WorkspaceMetadataUpdaterService { @@ -104,7 +104,6 @@ export class WorkspaceMetadataUpdaterService { ), } : {}), - isActive: true, }; }