4282 create calendarchannel data model (#4314)

* create model

* add connected account relation

* fix import

* relation is working

* remove isNullable
This commit is contained in:
bosiraphael 2024-03-05 16:12:56 +01:00 committed by GitHub
parent 28a093d495
commit 9fc421876f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 101 additions and 2 deletions

View File

@ -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;
}

View File

@ -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[];
}

View File

@ -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,
];