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 new file mode 100644 index 000000000..3c29f4dce --- /dev/null +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata.ts @@ -0,0 +1,81 @@ +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 { ConnectedAccountObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata'; + +@ObjectMetadata({ + namePlural: 'calendarChannels', + labelSingular: 'Calendar Channel', + labelPlural: 'Calendar Channels', + description: 'Calendar Channels', + icon: 'IconCalendar', +}) +@IsSystem() +@Gate({ + featureFlag: 'IS_CALENDAR_ENABLED', +}) +export class CalendarChannelObjectMetadata extends BaseObjectMetadata { + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Connected Account', + description: 'Connected Account', + icon: 'IconUserCircle', + joinColumn: 'connectedAccountId', + }) + connectedAccount: ConnectedAccountObjectMetadata; + + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Handle', + description: 'Handle', + icon: 'IconAt', + }) + handle: string; + + @FieldMetadata({ + type: FieldMetadataType.SELECT, + label: 'Visibility', + description: 'Visibility', + icon: 'IconEyeglass', + options: [ + { value: 'metadata', label: 'Metadata', position: 0, color: 'green' }, + { + value: 'share_everything', + label: 'Share Everything', + position: 1, + color: 'orange', + }, + ], + defaultValue: { value: 'share_everything' }, + }) + visibility: string; + + @FieldMetadata({ + type: FieldMetadataType.BOOLEAN, + label: 'Is Contact Auto Creation Enabled', + description: 'Is Contact Auto Creation Enabled', + icon: 'IconUserCircle', + defaultValue: { value: true }, + }) + isContactAutoCreationEnabled: boolean; + + @FieldMetadata({ + type: FieldMetadataType.BOOLEAN, + label: 'Is Sync Enabled', + description: 'Is Sync Enabled', + icon: 'IconRefresh', + defaultValue: { value: true }, + }) + isSyncEnabled: boolean; + + @FieldMetadata({ + type: FieldMetadataType.TEXT, + label: 'Next Sync Token', + description: 'Next Sync Token', + icon: 'IconReload', + }) + nextSyncToken: string; +} diff --git a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata.ts b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata.ts index 554535847..d66c70c65 100644 --- a/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata.ts +++ b/packages/twenty-server/src/workspace/workspace-sync-metadata/standard-objects/connected-account.object-metadata.ts @@ -4,11 +4,12 @@ import { RelationOnDeleteAction, } from 'src/metadata/relation-metadata/relation-metadata.entity'; import { FieldMetadata } from 'src/workspace/workspace-sync-metadata/decorators/field-metadata.decorator'; -import { IsNullable } from 'src/workspace/workspace-sync-metadata/decorators/is-nullable.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 { RelationMetadata } from 'src/workspace/workspace-sync-metadata/decorators/relation-metadata.decorator'; import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata'; +import { CalendarChannelObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/calendar-channel.object-metadata'; import { MessageChannelObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/message-channel.object-metadata'; import { WorkspaceMemberObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata'; @@ -81,6 +82,21 @@ export class ConnectedAccountObjectMetadata extends BaseObjectMetadata { objectName: 'messageChannel', onDelete: RelationOnDeleteAction.CASCADE, }) - @IsNullable() messageChannels: MessageChannelObjectMetadata[]; + + @FieldMetadata({ + type: FieldMetadataType.RELATION, + label: 'Calendar Channel', + description: 'Calendar Channel', + icon: 'IconCalendar', + }) + @RelationMetadata({ + type: RelationMetadataType.ONE_TO_MANY, + objectName: 'calendarChannel', + onDelete: RelationOnDeleteAction.CASCADE, + }) + @Gate({ + featureFlag: 'IS_CALENDAR_ENABLED', + }) + calendarChannels: CalendarChannelObjectMetadata[]; } 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 804dc3a31..fec25da75 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 @@ -3,6 +3,7 @@ import { ActivityObjectMetadata } from 'src/workspace/workspace-sync-metadata/st import { ApiKeyObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/api-key.object-metadata'; 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 { 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'; @@ -46,4 +47,5 @@ export const standardObjectMetadataCollection = [ MessageChannelObjectMetadata, MessageParticipantObjectMetadata, MessageChannelMessageAssociationObjectMetadata, + CalendarChannelObjectMetadata, ];