From d4eb75abff50415c769982670f05bed77ae5ce03 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Tue, 26 Mar 2024 16:49:18 +0100 Subject: [PATCH] Add isRemote field on object metadata (#4668) Add isRemote field Co-authored-by: Thomas Trompette --- .../1711466822763-addIsRemoteField.ts | 17 +++++++++++++++++ .../open-api/utils/components.utils.ts | 1 + .../composite-types/currency.composite-type.ts | 1 + .../composite-types/full-name.composite-type.ts | 1 + .../composite-types/link.composite-type.ts | 1 + .../interfaces/object-metadata.interface.ts | 1 + .../object-metadata/dtos/object-metadata.dto.ts | 3 +++ .../object-metadata/object-metadata.entity.ts | 3 +++ .../object-metadata/object-metadata.service.ts | 1 + .../decorators/object-metadata.decorator.ts | 1 + .../reflect-object-metadata.interface.ts | 1 + 11 files changed, 31 insertions(+) create mode 100644 packages/twenty-server/src/database/typeorm/metadata/migrations/1711466822763-addIsRemoteField.ts diff --git a/packages/twenty-server/src/database/typeorm/metadata/migrations/1711466822763-addIsRemoteField.ts b/packages/twenty-server/src/database/typeorm/metadata/migrations/1711466822763-addIsRemoteField.ts new file mode 100644 index 000000000..77b814324 --- /dev/null +++ b/packages/twenty-server/src/database/typeorm/metadata/migrations/1711466822763-addIsRemoteField.ts @@ -0,0 +1,17 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddIsRemoteField1711466822763 implements MigrationInterface { + name = 'AddIsRemoteField1711466822763'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "metadata"."objectMetadata" ADD "isRemote" boolean NOT NULL DEFAULT false`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "metadata"."objectMetadata" DROP COLUMN "isRemote"`, + ); + } +} diff --git a/packages/twenty-server/src/engine/core-modules/open-api/utils/components.utils.ts b/packages/twenty-server/src/engine/core-modules/open-api/utils/components.utils.ts index 50c72bbf8..bff151900 100644 --- a/packages/twenty-server/src/engine/core-modules/open-api/utils/components.utils.ts +++ b/packages/twenty-server/src/engine/core-modules/open-api/utils/components.utils.ts @@ -173,6 +173,7 @@ export const computeMetadataSchemaComponents = ( description: { type: 'string' }, icon: { type: 'string' }, isCustom: { type: 'boolean' }, + isRemote: { type: 'boolean' }, isActive: { type: 'boolean' }, isSystem: { type: 'boolean' }, createdAt: { type: 'string' }, diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts index 3e0194c85..b9fe00f45 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/currency.composite-type.ts @@ -74,6 +74,7 @@ export const currencyObjectDefinition = { isActive: true, isSystem: true, isCustom: false, + isRemote: false, } satisfies ObjectMetadataInterface; export type CurrencyMetadata = { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts index e05939c52..8cada9ccc 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/full-name.composite-type.ts @@ -74,6 +74,7 @@ export const fullNameObjectDefinition = { isActive: true, isSystem: true, isCustom: false, + isRemote: false, } satisfies ObjectMetadataInterface; export type FullNameMetadata = { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/link.composite-type.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/link.composite-type.ts index 7776a1f8d..0202ecad7 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/link.composite-type.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/composite-types/link.composite-type.ts @@ -74,6 +74,7 @@ export const linkObjectDefinition = { isActive: true, isSystem: true, isCustom: false, + isRemote: false, } satisfies ObjectMetadataInterface; export type LinkMetadata = { diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface.ts index e6629cfbf..d20201de8 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/interfaces/object-metadata.interface.ts @@ -15,4 +15,5 @@ export interface ObjectMetadataInterface { isSystem: boolean; isCustom: boolean; isActive: boolean; + isRemote: boolean; } diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto.ts index 0ca4d75ae..15804368a 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/dtos/object-metadata.dto.ts @@ -53,6 +53,9 @@ export class ObjectMetadataDTO { @FilterableField() isCustom: boolean; + @FilterableField() + isRemote: boolean; + @FilterableField() isActive: boolean; 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 d6e68baf8..0af78d9f1 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 @@ -55,6 +55,9 @@ export class ObjectMetadataEntity implements ObjectMetadataInterface { @Column({ default: false }) isCustom: boolean; + @Column({ default: false }) + isRemote: boolean; + @Column({ default: false }) isActive: boolean; 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 0ba6b0a7a..e63045454 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 @@ -235,6 +235,7 @@ export class ObjectMetadataService extends TypeOrmQueryService