From 151867f10bdc82ff8751be71eb3bdf081ea8595d Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Tue, 5 Mar 2024 17:10:37 +0100 Subject: [PATCH 1/9] add person relation --- ...calendar-event-attendee.object-metadata.ts | 82 +++++++++++++++++++ .../person.object-metadata.ts | 20 +++-- 2 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts new file mode 100644 index 000000000000..73f414c16c1a --- /dev/null +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts @@ -0,0 +1,82 @@ +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 { IsNullable } from 'src/workspace/workspace-sync-metadata/decorators/is-nullable.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 { 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'; + +@ObjectMetadata({ + namePlural: 'calendarEventAttendees', + labelSingular: 'Calendar event attendee', + labelPlural: 'Calendar event attendees', + description: 'Calendar event attendees', + icon: 'IconCalendar', +}) +@IsSystem() +@Gate({ + featureFlag: 'IS_CALENDAR_ENABLED', +}) +export class CalendarEventAttendeeObjectMetadata extends BaseObjectMetadata { + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Event ID', + description: 'Event ID', + icon: 'IconCalendar', + }) + eventId: string; + + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Handle', + description: 'Handle', + icon: 'IconMail', + }) + handle: string; + + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Display Name', + description: 'Display Name', + icon: 'IconUser', + }) + displayName: string; + + @FieldMetadata({ + type: FieldMetadataType.BOOLEAN, + label: 'Is Organizer', + description: 'Is Organizer', + icon: 'IconUser', + }) + isOrganizer: boolean; + + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Response Status', + description: 'Response Status', + icon: 'IconUser', + }) + responseStatus: string; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Person', + description: 'Person', + icon: 'IconUser', + joinColumn: 'personId', + }) + @IsNullable() + person: PersonObjectMetadata; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Workspace Member', + description: 'Workspace Member', + icon: 'IconUser', + joinColumn: 'workspaceMemberId', + }) + @IsNullable() + workspaceMember: WorkspaceMemberObjectMetadata; +} 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 e067212c12de..6814950363a5 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 @@ -13,6 +13,7 @@ import { RelationMetadata } from 'src/workspace/workspace-sync-metadata/decorato 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 { CalendarEventAttendeeObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.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'; import { MessageParticipantObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/message-participant.object-metadata'; @@ -112,7 +113,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata { icon: 'IconBuildingSkyscraper', joinColumn: 'companyId', }) - @IsNullable() company: CompanyObjectMetadata; @FieldMetadata({ @@ -126,7 +126,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata { objectName: 'opportunity', inverseSideFieldName: 'pointOfContact', }) - @IsNullable() pointOfContactForOpportunities: OpportunityObjectMetadata[]; @FieldMetadata({ @@ -140,7 +139,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata { objectName: 'activityTarget', onDelete: RelationOnDeleteAction.CASCADE, }) - @IsNullable() activityTargets: ActivityTargetObjectMetadata[]; @FieldMetadata({ @@ -154,7 +152,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata { objectName: 'favorite', onDelete: RelationOnDeleteAction.CASCADE, }) - @IsNullable() favorites: FavoriteObjectMetadata[]; @FieldMetadata({ @@ -168,7 +165,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata { objectName: 'attachment', onDelete: RelationOnDeleteAction.CASCADE, }) - @IsNullable() attachments: AttachmentObjectMetadata[]; @FieldMetadata({ @@ -182,6 +178,18 @@ export class PersonObjectMetadata extends BaseObjectMetadata { objectName: 'messageParticipant', inverseSideFieldName: 'person', }) - @IsNullable() messageParticipants: MessageParticipantObjectMetadata[]; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Calendar Event Attendees', + description: 'Calendar Event Attendees', + icon: 'IconCalendar', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + objectName: 'calendarEventAttendee', + inverseSideFieldName: 'person', + }) + calendarEventAttendees: CalendarEventAttendeeObjectMetadata[]; } From 6f8fca870be48c624f2b6c78604b064cd8982390 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Tue, 5 Mar 2024 17:13:14 +0100 Subject: [PATCH 2/9] add workspaceMember relation --- .../person.object-metadata.ts | 4 +++ .../workspace-member.object-metadata.ts | 28 ++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) 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 6814950363a5..165e96b03934 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 @@ -6,6 +6,7 @@ import { RelationOnDeleteAction, } from 'src/metadata/relation-metadata/relation-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 { IsNullable } from 'src/workspace/workspace-sync-metadata/decorators/is-nullable.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'; @@ -191,5 +192,8 @@ export class PersonObjectMetadata extends BaseObjectMetadata { objectName: 'calendarEventAttendee', inverseSideFieldName: 'person', }) + @Gate({ + featureFlag: 'IS_CALENDAR_ENABLED', + }) calendarEventAttendees: CalendarEventAttendeeObjectMetadata[]; } diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata.ts index 2ddf038d5128..fe213ca38a57 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata.ts @@ -5,6 +5,7 @@ import { RelationOnDeleteAction, } from 'src/metadata/relation-metadata/relation-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 { IsNullable } from 'src/workspace/workspace-sync-metadata/decorators/is-nullable.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'; @@ -13,6 +14,7 @@ import { ActivityObjectMetadata } from 'src/workspace/workspace-sync-metadata/st 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 { BlocklistObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/blocklist.object-metadata'; +import { CalendarEventAttendeeObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata'; import { CommentObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/comment.object-metadata'; import { CompanyObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/company.object-metadata'; import { ConnectedAccountObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata'; @@ -90,7 +92,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'activity', inverseSideFieldName: 'author', }) - @IsNullable() authoredActivities: ActivityObjectMetadata[]; @FieldMetadata({ @@ -105,8 +106,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { inverseSideFieldName: 'assignee', }) @IsNullable() - assignedActivities: ActivityObjectMetadata[]; - @FieldMetadata({ type: FieldMetadataType.RELATION, label: 'Favorites', @@ -118,7 +117,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'favorite', onDelete: RelationOnDeleteAction.CASCADE, }) - @IsNullable() favorites: FavoriteObjectMetadata[]; @FieldMetadata({ @@ -132,7 +130,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'company', inverseSideFieldName: 'accountOwner', }) - @IsNullable() accountOwnerForCompanies: CompanyObjectMetadata[]; @FieldMetadata({ @@ -146,7 +143,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'attachment', inverseSideFieldName: 'author', }) - @IsNullable() authoredAttachments: AttachmentObjectMetadata[]; @FieldMetadata({ @@ -160,7 +156,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'comment', inverseSideFieldName: 'author', }) - @IsNullable() authoredComments: CommentObjectMetadata[]; @FieldMetadata({ @@ -174,7 +169,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'connectedAccount', inverseSideFieldName: 'accountOwner', }) - @IsNullable() connectedAccounts: ConnectedAccountObjectMetadata[]; @FieldMetadata({ @@ -188,7 +182,6 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'messageParticipant', inverseSideFieldName: 'workspaceMember', }) - @IsNullable() messageParticipants: MessageParticipantObjectMetadata[]; @FieldMetadata({ @@ -202,6 +195,21 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata { objectName: 'blocklist', inverseSideFieldName: 'workspaceMember', }) - @IsNullable() blocklist: BlocklistObjectMetadata[]; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Calendar Event Attendees', + description: 'Calendar Event Attendees', + icon: 'IconCalendar', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + objectName: 'calendarEventAttendee', + inverseSideFieldName: 'workspaceMember', + }) + @Gate({ + featureFlag: 'IS_CALENDAR_ENABLED', + }) + calendarEventAttendees: CalendarEventAttendeeObjectMetadata[]; } From 8a75bde343eb31f7c65b6aced9f2619657a4ddb4 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Tue, 5 Mar 2024 17:17:01 +0100 Subject: [PATCH 3/9] done --- .../workspace/workspace-sync-metadata/standard-objects/index.ts | 2 ++ 1 file changed, 2 insertions(+) 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 fec25da75f56..3429a52ca357 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 @@ -4,6 +4,7 @@ import { ApiKeyObjectMetadata } from 'src/workspace/workspace-sync-metadata/stan import { AttachmentObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/attachment.object-metadata'; import { BlocklistObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/blocklist.object-metadata'; import { CalendarChannelObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata'; +import { CalendarEventAttendeeObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata'; import { CommentObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/comment.object-metadata'; import { CompanyObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/company.object-metadata'; import { ConnectedAccountObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata'; @@ -48,4 +49,5 @@ export const standardObjectMetadataCollection = [ MessageParticipantObjectMetadata, MessageChannelMessageAssociationObjectMetadata, CalendarChannelObjectMetadata, + CalendarEventAttendeeObjectMetadata, ]; From 4534c55b5522868ecfb584824ccc0bc048aaf29a Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Tue, 5 Mar 2024 18:27:59 +0100 Subject: [PATCH 4/9] update channel --- .../calendar-channel.object-metadata.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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 a543d70e6980..f76443626a57 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 @@ -7,6 +7,11 @@ import { ObjectMetadata } from 'src/workspace/workspace-sync-metadata/decorators 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'; +export enum CalendarChannelVisibility { + METADATA = 'METADATA', + SHARE_EVERYTHING = 'SHARE_EVERYTHING', +} + @ObjectMetadata({ namePlural: 'calendarChannels', labelSingular: 'Calendar Channel', @@ -42,15 +47,20 @@ export class CalendarChannelObjectMetadata extends BaseObjectMetadata { description: 'Visibility', icon: 'IconEyeglass', options: [ - { value: 'metadata', label: 'Metadata', position: 0, color: 'green' }, { - value: 'share_everything', + value: CalendarChannelVisibility.METADATA, + label: 'Metadata', + position: 0, + color: 'green', + }, + { + value: CalendarChannelVisibility.SHARE_EVERYTHING, label: 'Share Everything', position: 1, color: 'orange', }, ], - defaultValue: { value: 'share_everything' }, + defaultValue: { value: CalendarChannelVisibility.METADATA }, }) visibility: string; From dc1c761ab70f1de14b6af398c349fb8170153737 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Tue, 5 Mar 2024 18:31:23 +0100 Subject: [PATCH 5/9] update event data-model --- .../calendar-event.object-metadata.ts | 37 +++---------------- 1 file changed, 5 insertions(+), 32 deletions(-) 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 927fb5d0b596..b3406d611c5b 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 @@ -6,12 +6,6 @@ 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'; -export enum CalendarEventStatus { - CONFIRMED = 'CONFIRMED', - TENTATIVE = 'TENTATIVE', - CANCELED = 'CANCELED', -} - @ObjectMetadata({ namePlural: 'calendarEvents', labelSingular: 'Calendar event', @@ -33,33 +27,12 @@ export class CalendarEventObjectMetadata extends BaseObjectMetadata { title: string; @FieldMetadata({ - type: FieldMetadataType.SELECT, - label: 'Status', - description: 'Status', - icon: 'IconCheckbox', - options: [ - { - value: CalendarEventStatus.CONFIRMED, - label: 'Confirmed', - position: 0, - color: 'green', - }, - { - value: CalendarEventStatus.TENTATIVE, - label: 'Tentative', - position: 1, - color: 'blue', - }, - { - value: CalendarEventStatus.CANCELED, - label: 'Canceled', - position: 2, - color: 'red', - }, - ], - defaultValue: { value: CalendarEventStatus.CONFIRMED }, + type: FieldMetadataType.BOOLEAN, + label: 'Is cancelled', + description: 'Is cancelled', + icon: 'IconCalendarCancel', }) - status: string; + isCancelled: boolean; @FieldMetadata({ type: FieldMetadataType.BOOLEAN, From a97abe1833641fb56c66c48c23a7e3dade3ed7a6 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Tue, 5 Mar 2024 18:59:45 +0100 Subject: [PATCH 6/9] add relation --- ...calendar-event-attendee.object-metadata.ts | 3 ++- .../calendar-event.object-metadata.ts | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts index 73f414c16c1a..104aef216b5d 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts @@ -21,10 +21,11 @@ import { WorkspaceMemberObjectMetadata } from 'src/workspace/workspace-sync-meta }) export class CalendarEventAttendeeObjectMetadata extends BaseObjectMetadata { @FieldMetadata({ - type: FieldMetadataType.TEXT, + type: FieldMetadataType.RELATION, label: 'Event ID', description: 'Event ID', icon: 'IconCalendar', + joinColumn: 'eventId', }) eventId: string; 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 b3406d611c5b..a036b4b51bf9 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 @@ -1,10 +1,16 @@ +import { RelationMetadata } from 'src/workspace/workspace-sync-metadata/decorators/relation-metadata.decorator'; import { FeatureFlagKeys } from 'src/core/feature-flag/feature-flag.entity'; import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity'; +import { + RelationMetadataType, + RelationOnDeleteAction, +} from 'src/metadata/relation-metadata/relation-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 { CalendarEventAttendeeObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata'; @ObjectMetadata({ namePlural: 'calendarEvents', @@ -121,4 +127,17 @@ export class CalendarEventObjectMetadata extends BaseObjectMetadata { icon: 'IconHistory', }) recurringEventExternalId: string; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Event Attendees', + description: 'Event Attendees', + icon: 'IconUserCircle', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + objectName: 'calendarEventAttendee', + onDelete: RelationOnDeleteAction.CASCADE, + }) + eventAttendees: CalendarEventAttendeeObjectMetadata[]; } From 5218bc21fa1a7368f964935a188459033097ced6 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Wed, 6 Mar 2024 12:09:43 +0100 Subject: [PATCH 7/9] done --- .../standard-objects/calendar-channel.object-metadata.ts | 7 ++++--- .../calendar-event-attendee.object-metadata.ts | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) 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 f76443626a57..d96a3491f2d9 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 @@ -84,9 +84,10 @@ export class CalendarChannelObjectMetadata extends BaseObjectMetadata { @FieldMetadata({ type: FieldMetadataType.TEXT, - label: 'Next Sync Token', - description: 'Next Sync Token', + label: 'Sync Cursor', + description: + 'Sync Cursor. Used for syncing events from the calendar provider', icon: 'IconReload', }) - nextSyncToken: string; + syncCursor: string; } diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts index 104aef216b5d..a3bb85a9d314 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts @@ -5,6 +5,7 @@ import { IsNullable } from 'src/workspace/workspace-sync-metadata/decorators/is- 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'; 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'; @@ -25,9 +26,9 @@ export class CalendarEventAttendeeObjectMetadata extends BaseObjectMetadata { label: 'Event ID', description: 'Event ID', icon: 'IconCalendar', - joinColumn: 'eventId', + joinColumn: 'calendarEventId', }) - eventId: string; + calendarEvent: CalendarEventObjectMetadata; @FieldMetadata({ type: FieldMetadataType.TEXT, From 787376b1da6142de2ac84d753cab87cb0b78b5b8 Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Wed, 6 Mar 2024 16:02:41 +0100 Subject: [PATCH 8/9] changes after review --- .../standard-objects/calendar-channel.object-metadata.ts | 2 +- .../standard-objects/calendar-event.object-metadata.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) 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 d96a3491f2d9..267844cc57af 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 @@ -60,7 +60,7 @@ export class CalendarChannelObjectMetadata extends BaseObjectMetadata { color: 'orange', }, ], - defaultValue: { value: CalendarChannelVisibility.METADATA }, + defaultValue: { value: CalendarChannelVisibility.SHARE_EVERYTHING }, }) visibility: string; 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 a036b4b51bf9..ef45311ecbb5 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 @@ -34,11 +34,11 @@ export class CalendarEventObjectMetadata extends BaseObjectMetadata { @FieldMetadata({ type: FieldMetadataType.BOOLEAN, - label: 'Is cancelled', - description: 'Is cancelled', + label: 'Is canceled', + description: 'Is canceled', icon: 'IconCalendarCancel', }) - isCancelled: boolean; + isCanceled: boolean; @FieldMetadata({ type: FieldMetadataType.BOOLEAN, From 682da776dfbcfe53684728f443d6e87618cb63cc Mon Sep 17 00:00:00 2001 From: bosiraphael Date: Wed, 6 Mar 2024 16:30:46 +0100 Subject: [PATCH 9/9] update model --- ...calendar-event-attendee.object-metadata.ts | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts index a3bb85a9d314..29efc22d3980 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-event-attendee.object-metadata.ts @@ -9,6 +9,13 @@ import { CalendarEventObjectMetadata } from 'src/workspace/workspace-sync-metada 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'; +export enum CalendarEventAttendeeResponseStatus { + NEEDS_ACTION = 'NEEDS_ACTION', + DECLINED = 'DECLINED', + TENTATIVE = 'TENTATIVE', + ACCEPTED = 'ACCEPTED', +} + @ObjectMetadata({ namePlural: 'calendarEventAttendees', labelSingular: 'Calendar event attendee', @@ -55,10 +62,37 @@ export class CalendarEventAttendeeObjectMetadata extends BaseObjectMetadata { isOrganizer: boolean; @FieldMetadata({ - type: FieldMetadataType.TEXT, + type: FieldMetadataType.SELECT, label: 'Response Status', description: 'Response Status', icon: 'IconUser', + options: [ + { + value: CalendarEventAttendeeResponseStatus.NEEDS_ACTION, + label: 'Needs Action', + position: 0, + color: 'orange', + }, + { + value: CalendarEventAttendeeResponseStatus.DECLINED, + label: 'Declined', + position: 1, + color: 'red', + }, + { + value: CalendarEventAttendeeResponseStatus.TENTATIVE, + label: 'Tentative', + position: 2, + color: 'yellow', + }, + { + value: CalendarEventAttendeeResponseStatus.ACCEPTED, + label: 'Accepted', + position: 3, + color: 'green', + }, + ], + defaultValue: { value: CalendarEventAttendeeResponseStatus.NEEDS_ACTION }, }) responseStatus: string;