From 6ee179442a7064c057ddff2e6504bbcaef957830 Mon Sep 17 00:00:00 2001 From: Thomas Trompette Date: Thu, 8 Feb 2024 15:22:52 +0100 Subject: [PATCH] Add one to many relation between opportunity and attachment (#3866) * Add one to many relation between opportunity and attachment * Fix opportunity type --------- Co-authored-by: Thomas Trompette --- .../standard-objects/attachment.object-metadata.ts | 11 +++++++++++ .../opportunity.object-metadata.ts | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/attachment.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/attachment.object-metadata.ts index bc299edc1..282c750af 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/attachment.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/attachment.object-metadata.ts @@ -6,6 +6,7 @@ import { ObjectMetadata } from 'src/workspace/workspace-sync-metadata/decorators import { ActivityObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/activity.object-metadata'; import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata'; import { CompanyObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/company.object-metadata'; +import { OpportunityObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/opportunity.object-metadata'; import { PersonObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/person.object-metadata'; import { WorkspaceMemberObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata'; @@ -80,4 +81,14 @@ export class AttachmentObjectMetadata extends BaseObjectMetadata { }) @IsNullable() company: CompanyObjectMetadata; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Opportunity', + description: 'Attachment opportunity', + icon: 'IconBuildingSkyscraper', + joinColumn: 'opportunityId', + }) + @IsNullable() + opportunity: OpportunityObjectMetadata; } diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/opportunity.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/opportunity.object-metadata.ts index d7f1a0360..8c0888f9c 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/opportunity.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/opportunity.object-metadata.ts @@ -7,6 +7,7 @@ import { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-sy import { ObjectMetadata } from 'src/workspace/workspace-sync-metadata/decorators/object-metadata.decorator'; import { RelationMetadata } from 'src/workspace/workspace-sync-metadata/decorators/relation-metadata.decorator'; import { ActivityTargetObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/activity-target.object-metadata'; +import { AttachmentObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/attachment.object-metadata'; import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata'; import { CompanyObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/company.object-metadata'; import { FavoriteObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/favorite.object-metadata'; @@ -143,4 +144,17 @@ export class OpportunityObjectMetadata extends BaseObjectMetadata { }) @IsNullable() activityTargets: ActivityTargetObjectMetadata[]; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Attachments', + description: 'Attachments linked to the opportunity.', + icon: 'IconFileImport', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + objectName: 'attachment', + }) + @IsNullable() + attachments: AttachmentObjectMetadata[]; }