From 0c17decfb992cfd2dc696504bfc6b7b9abb03925 Mon Sep 17 00:00:00 2001 From: bosiraphael <71827178+bosiraphael@users.noreply.github.com> Date: Fri, 8 Mar 2024 16:29:40 +0100 Subject: [PATCH] 4284 create calendarchanneleventassociation data model (#4350) * create model * add calendar channel relation * add calendar event relation * add to index.ts * done * updates * update relation * update relation * updates after comments --- ...annel-event-association.object-metadata.ts | 47 +++++++++++++++++++ .../calendar-channel.object-metadata.ts | 19 ++++++++ .../calendar-event.object-metadata.ts | 18 +++++++ .../standard-objects/index.ts | 2 + .../person.object-metadata.ts | 1 - 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata.ts diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata.ts new file mode 100644 index 000000000..d22382d98 --- /dev/null +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata.ts @@ -0,0 +1,47 @@ +import { FeatureFlagKeys } from 'src/core/feature-flag/feature-flag.entity'; +import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity'; +import { FieldMetadata } from 'src/workspace/workspace-sync-metadata/decorators/field-metadata.decorator'; +import { Gate } from 'src/workspace/workspace-sync-metadata/decorators/gate.decorator'; +import { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-system.decorator'; +import { ObjectMetadata } from 'src/workspace/workspace-sync-metadata/decorators/object-metadata.decorator'; +import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata'; +import { CalendarEventObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-event.object-metadata'; + +@ObjectMetadata({ + namePlural: 'calendarChannelEventAssociations', + labelSingular: 'Calendar Channel Event Association', + labelPlural: 'Calendar Channel Event Associations', + description: 'Calendar Channel Event Associations', + icon: 'IconCalendar', +}) +@IsSystem() +@Gate({ + featureFlag: FeatureFlagKeys.IsCalendarEnabled, +}) +export class CalendarChannelEventAssociationObjectMetadata extends BaseObjectMetadata { + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Channel ID', + description: 'Channel ID', + icon: 'IconCalendar', + joinColumn: 'calendarChannelId', + }) + calendarChannel: CalendarEventObjectMetadata; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Event ID', + description: 'Event ID', + icon: 'IconCalendar', + joinColumn: 'calendarEventId', + }) + calendarEvent: CalendarEventObjectMetadata; + + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Event external ID', + description: 'Event external ID', + icon: 'IconCalendar', + }) + eventExternalId: string; +} diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata.ts index 267844cc5..b30e06332 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata.ts @@ -1,3 +1,7 @@ +import { + RelationMetadataType, + RelationOnDeleteAction, +} from 'src/metadata/relation-metadata/relation-metadata.entity'; import { FeatureFlagKeys } from 'src/core/feature-flag/feature-flag.entity'; import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity'; import { FieldMetadata } from 'src/workspace/workspace-sync-metadata/decorators/field-metadata.decorator'; @@ -6,6 +10,8 @@ import { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-sy import { ObjectMetadata } from 'src/workspace/workspace-sync-metadata/decorators/object-metadata.decorator'; import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata'; import { ConnectedAccountObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata'; +import { CalendarChannelEventAssociationObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata'; +import { RelationMetadata } from 'src/workspace/workspace-sync-metadata/decorators/relation-metadata.decorator'; export enum CalendarChannelVisibility { METADATA = 'METADATA', @@ -90,4 +96,17 @@ export class CalendarChannelObjectMetadata extends BaseObjectMetadata { icon: 'IconReload', }) syncCursor: string; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Calendar Channel Event Associations', + description: 'Calendar Channel Event Associations', + icon: 'IconCalendar', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + inverseSideTarget: () => CalendarChannelEventAssociationObjectMetadata, + onDelete: RelationOnDeleteAction.CASCADE, + }) + calendarChannelEventAssociations: CalendarChannelEventAssociationObjectMetadata[]; } diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event.object-metadata.ts index 7aa7e7af5..02857e619 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event.object-metadata.ts @@ -10,6 +10,7 @@ import { Gate } from 'src/workspace/workspace-sync-metadata/decorators/gate.deco import { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-system.decorator'; import { ObjectMetadata } from 'src/workspace/workspace-sync-metadata/decorators/object-metadata.decorator'; import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata'; +import { CalendarChannelEventAssociationObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata'; import { CalendarEventAttendeeObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata'; @ObjectMetadata({ @@ -128,6 +129,23 @@ export class CalendarEventObjectMetadata extends BaseObjectMetadata { }) recurringEventExternalId: string; + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Calendar Channel Event Associations', + description: 'Calendar Channel Event Associations', + icon: 'IconCalendar', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + inverseSideTarget: () => CalendarChannelEventAssociationObjectMetadata, + onDelete: RelationOnDeleteAction.CASCADE, + inverseSideFieldKey: 'calendarEvent', + }) + @Gate({ + featureFlag: 'IS_CALENDAR_ENABLED', + }) + calendarChannelEventAssociations: CalendarChannelEventAssociationObjectMetadata[]; + @FieldMetadata({ type: FieldMetadataType.RELATION, label: 'Event Attendees', diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/index.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/index.ts index 6c476298d..988b1a22a 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/index.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/index.ts @@ -24,6 +24,7 @@ import { ViewSortObjectMetadata } from 'src/workspace/workspace-sync-metadata/st import { ViewObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/view.object-metadata'; import { WebhookObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/webhook.object-metadata'; import { WorkspaceMemberObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata'; +import { CalendarChannelEventAssociationObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-channel-event-association.object-metadata'; export const standardObjectMetadataDefinitions = [ ActivityTargetObjectMetadata, @@ -51,5 +52,6 @@ export const standardObjectMetadataDefinitions = [ MessageChannelMessageAssociationObjectMetadata, CalendarEventObjectMetadata, CalendarChannelObjectMetadata, + CalendarChannelEventAssociationObjectMetadata, CalendarEventAttendeeObjectMetadata, ]; diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/person.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/person.object-metadata.ts index 1b892b897..09155cba4 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/person.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/person.object-metadata.ts @@ -191,7 +191,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata { @RelationMetadata({ type: RelationMetadataType.ONE_TO_MANY, inverseSideTarget: () => CalendarEventAttendeeObjectMetadata, - inverseSideFieldKey: 'person', }) @Gate({ featureFlag: 'IS_CALENDAR_ENABLED',