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
This commit is contained in:
bosiraphael
2024-03-08 16:29:40 +01:00
committed by GitHub
parent 250bb6134e
commit 0c17decfb9
5 changed files with 86 additions and 1 deletions

View File

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

View File

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

View File

@ -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',

View File

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

View File

@ -191,7 +191,6 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
@RelationMetadata({
type: RelationMetadataType.ONE_TO_MANY,
inverseSideTarget: () => CalendarEventAttendeeObjectMetadata,
inverseSideFieldKey: 'person',
})
@Gate({
featureFlag: 'IS_CALENDAR_ENABLED',