feat: standard fields on custom (#4332)
* feat: add ability to sync standard fields on custom object * fix: clean * fix: wrong compute during object creation * fix: missing cascade delete * fix: remove unused injected class * fix: naming * fix: rename factory to paramsFactory and clean * fix: rename ExtendCustomObjectMetadata to BaseCustomObjectMetadata * fix: partial fix inconsistent label and description * Fixes * Fix --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { CustomObjectMetadata } from 'src/workspace/workspace-sync-metadata/custom-objects/custom.object-metadata';
|
||||
import { DynamicRelationFieldMetadata } from 'src/workspace/workspace-sync-metadata/decorators/dynamic-field-metadata.interface';
|
||||
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 { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-system.decorator';
|
||||
@ -57,4 +59,13 @@ export class ActivityTargetObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@IsNullable()
|
||||
opportunity: OpportunityObjectMetadata;
|
||||
|
||||
@DynamicRelationFieldMetadata((oppositeObjectMetadata) => ({
|
||||
name: oppositeObjectMetadata.nameSingular,
|
||||
label: oppositeObjectMetadata.labelSingular,
|
||||
description: `ActivityTarget ${oppositeObjectMetadata.labelSingular}`,
|
||||
joinColumn: `${oppositeObjectMetadata.nameSingular}Id`,
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
}))
|
||||
custom: CustomObjectMetadata;
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ export class ActivityObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'activityTarget',
|
||||
inverseSideTarget: () => ActivityTargetObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
activityTargets: ActivityTargetObjectMetadata[];
|
||||
@ -93,7 +93,7 @@ export class ActivityObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'attachment',
|
||||
inverseSideTarget: () => AttachmentObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
attachments: AttachmentObjectMetadata[];
|
||||
@ -106,7 +106,7 @@ export class ActivityObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'comment',
|
||||
inverseSideTarget: () => CommentObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
comments: CommentObjectMetadata[];
|
||||
@ -123,7 +123,7 @@ export class ActivityObjectMetadata extends BaseObjectMetadata {
|
||||
@FieldMetadata({
|
||||
type: FieldMetadataType.RELATION,
|
||||
label: 'Assignee',
|
||||
description: 'Acitivity assignee',
|
||||
description: 'Activity assignee',
|
||||
icon: 'IconUserCircle',
|
||||
joinColumn: 'assigneeId',
|
||||
})
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { CustomObjectMetadata } from 'src/workspace/workspace-sync-metadata/custom-objects/custom.object-metadata';
|
||||
import { DynamicRelationFieldMetadata } from 'src/workspace/workspace-sync-metadata/decorators/dynamic-field-metadata.interface';
|
||||
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 { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-system.decorator';
|
||||
@ -91,4 +93,13 @@ export class AttachmentObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@IsNullable()
|
||||
opportunity: OpportunityObjectMetadata;
|
||||
|
||||
@DynamicRelationFieldMetadata((oppositeObjectMetadata) => ({
|
||||
name: oppositeObjectMetadata.nameSingular,
|
||||
label: oppositeObjectMetadata.labelSingular,
|
||||
description: `Attachment ${oppositeObjectMetadata.labelSingular}`,
|
||||
joinColumn: `${oppositeObjectMetadata.nameSingular}Id`,
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
}))
|
||||
custom: CustomObjectMetadata;
|
||||
}
|
||||
|
||||
@ -6,7 +6,9 @@ export abstract class BaseObjectMetadata {
|
||||
@FieldMetadata({
|
||||
type: FieldMetadataType.UUID,
|
||||
label: 'Id',
|
||||
description: 'Id',
|
||||
defaultValue: { type: 'uuid' },
|
||||
icon: 'Icon123',
|
||||
})
|
||||
@IsSystem()
|
||||
id: string;
|
||||
@ -14,6 +16,7 @@ export abstract class BaseObjectMetadata {
|
||||
@FieldMetadata({
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
label: 'Creation date',
|
||||
description: 'Creation date',
|
||||
icon: 'IconCalendar',
|
||||
defaultValue: { type: 'now' },
|
||||
})
|
||||
@ -22,6 +25,7 @@ export abstract class BaseObjectMetadata {
|
||||
@FieldMetadata({
|
||||
type: FieldMetadataType.DATE_TIME,
|
||||
label: 'Update date',
|
||||
description: 'Update date',
|
||||
icon: 'IconCalendar',
|
||||
defaultValue: { type: 'now' },
|
||||
})
|
||||
|
||||
@ -136,7 +136,7 @@ export class CalendarEventObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'calendarEventAttendee',
|
||||
inverseSideTarget: () => CalendarEventAttendeeObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
eventAttendees: CalendarEventAttendeeObjectMetadata[];
|
||||
|
||||
@ -117,7 +117,7 @@ export class CompanyObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'person',
|
||||
inverseSideTarget: () => PersonObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
people: PersonObjectMetadata[];
|
||||
@ -141,7 +141,7 @@ export class CompanyObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'activityTarget',
|
||||
inverseSideTarget: () => ActivityTargetObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
@ -155,7 +155,7 @@ export class CompanyObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'opportunity',
|
||||
inverseSideTarget: () => OpportunityObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
opportunities: OpportunityObjectMetadata[];
|
||||
@ -168,7 +168,7 @@ export class CompanyObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'favorite',
|
||||
inverseSideTarget: () => FavoriteObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
@ -182,7 +182,7 @@ export class CompanyObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'attachment',
|
||||
inverseSideTarget: () => AttachmentObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
|
||||
@ -80,7 +80,7 @@ export class ConnectedAccountObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageChannel',
|
||||
inverseSideTarget: () => MessageChannelObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
messageChannels: MessageChannelObjectMetadata[];
|
||||
@ -93,7 +93,7 @@ export class ConnectedAccountObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'calendarChannel',
|
||||
inverseSideTarget: () => CalendarChannelObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@Gate({
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
|
||||
import { CustomObjectMetadata } from 'src/workspace/workspace-sync-metadata/custom-objects/custom.object-metadata';
|
||||
import { DynamicRelationFieldMetadata } from 'src/workspace/workspace-sync-metadata/decorators/dynamic-field-metadata.interface';
|
||||
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 { IsSystem } from 'src/workspace/workspace-sync-metadata/decorators/is-system.decorator';
|
||||
@ -66,4 +68,13 @@ export class FavoriteObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@IsNullable()
|
||||
opportunity: OpportunityObjectMetadata;
|
||||
|
||||
@DynamicRelationFieldMetadata((oppositeObjectMetadata) => ({
|
||||
name: oppositeObjectMetadata.nameSingular,
|
||||
label: oppositeObjectMetadata.labelSingular,
|
||||
description: `Favorite ${oppositeObjectMetadata.labelSingular}`,
|
||||
joinColumn: `${oppositeObjectMetadata.nameSingular}Id`,
|
||||
icon: 'IconBuildingSkyscraper',
|
||||
}))
|
||||
custom: CustomObjectMetadata;
|
||||
}
|
||||
|
||||
@ -25,7 +25,7 @@ import { ViewObjectMetadata } from 'src/workspace/workspace-sync-metadata/standa
|
||||
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';
|
||||
|
||||
export const standardObjectMetadataCollection = [
|
||||
export const standardObjectMetadataDefinitions = [
|
||||
ActivityTargetObjectMetadata,
|
||||
ActivityObjectMetadata,
|
||||
ApiKeyObjectMetadata,
|
||||
|
||||
@ -87,7 +87,7 @@ export class MessageChannelObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageChannelMessageAssociation',
|
||||
inverseSideTarget: () => MessageChannelMessageAssociationObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
|
||||
@ -29,7 +29,7 @@ export class MessageThreadObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'message',
|
||||
inverseSideTarget: () => MessageObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
@ -43,7 +43,7 @@ export class MessageThreadObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageChannelMessageAssociation',
|
||||
inverseSideTarget: () => MessageChannelMessageAssociationObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.RESTRICT,
|
||||
})
|
||||
@IsNullable()
|
||||
|
||||
@ -86,8 +86,8 @@ export class MessageObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageParticipant',
|
||||
inverseSideFieldName: 'message',
|
||||
inverseSideTarget: () => MessageParticipantObjectMetadata,
|
||||
inverseSideFieldKey: 'message',
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
@ -101,7 +101,7 @@ export class MessageObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageChannelMessageAssociation',
|
||||
inverseSideTarget: () => MessageChannelMessageAssociationObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
|
||||
@ -130,7 +130,7 @@ export class OpportunityObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'favorite',
|
||||
inverseSideTarget: () => FavoriteObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
@ -144,7 +144,7 @@ export class OpportunityObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'activityTarget',
|
||||
inverseSideTarget: () => ActivityTargetObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
@IsNullable()
|
||||
@ -158,7 +158,7 @@ export class OpportunityObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'attachment',
|
||||
inverseSideTarget: () => AttachmentObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
attachments: AttachmentObjectMetadata[];
|
||||
|
||||
@ -124,8 +124,8 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'opportunity',
|
||||
inverseSideFieldName: 'pointOfContact',
|
||||
inverseSideTarget: () => OpportunityObjectMetadata,
|
||||
inverseSideFieldKey: 'pointOfContact',
|
||||
})
|
||||
pointOfContactForOpportunities: OpportunityObjectMetadata[];
|
||||
|
||||
@ -137,7 +137,7 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'activityTarget',
|
||||
inverseSideTarget: () => ActivityTargetObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
activityTargets: ActivityTargetObjectMetadata[];
|
||||
@ -150,7 +150,7 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'favorite',
|
||||
inverseSideTarget: () => FavoriteObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
favorites: FavoriteObjectMetadata[];
|
||||
@ -163,7 +163,7 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'attachment',
|
||||
inverseSideTarget: () => AttachmentObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
attachments: AttachmentObjectMetadata[];
|
||||
@ -176,8 +176,8 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageParticipant',
|
||||
inverseSideFieldName: 'person',
|
||||
inverseSideTarget: () => MessageParticipantObjectMetadata,
|
||||
inverseSideFieldKey: 'person',
|
||||
})
|
||||
messageParticipants: MessageParticipantObjectMetadata[];
|
||||
|
||||
@ -189,8 +189,8 @@ export class PersonObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'calendarEventAttendee',
|
||||
inverseSideFieldName: 'person',
|
||||
inverseSideTarget: () => CalendarEventAttendeeObjectMetadata,
|
||||
inverseSideFieldKey: 'person',
|
||||
})
|
||||
@Gate({
|
||||
featureFlag: 'IS_CALENDAR_ENABLED',
|
||||
|
||||
@ -52,7 +52,7 @@ export class PipelineStepObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'opportunity',
|
||||
inverseSideTarget: () => OpportunityObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
opportunities: OpportunityObjectMetadata[];
|
||||
|
||||
@ -57,7 +57,7 @@ export class ViewObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'viewField',
|
||||
inverseSideTarget: () => ViewFieldObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
viewFields: ViewFieldObjectMetadata[];
|
||||
@ -70,7 +70,7 @@ export class ViewObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'viewFilter',
|
||||
inverseSideTarget: () => ViewFilterObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
viewFilters: ViewFilterObjectMetadata[];
|
||||
@ -83,7 +83,7 @@ export class ViewObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'viewSort',
|
||||
inverseSideTarget: () => ViewSortObjectMetadata,
|
||||
})
|
||||
@IsNullable()
|
||||
viewSorts: ViewSortObjectMetadata[];
|
||||
|
||||
@ -6,7 +6,6 @@ import {
|
||||
} 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';
|
||||
import { RelationMetadata } from 'src/workspace/workspace-sync-metadata/decorators/relation-metadata.decorator';
|
||||
@ -89,8 +88,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'activity',
|
||||
inverseSideFieldName: 'author',
|
||||
inverseSideTarget: () => ActivityObjectMetadata,
|
||||
inverseSideFieldKey: 'author',
|
||||
})
|
||||
authoredActivities: ActivityObjectMetadata[];
|
||||
|
||||
@ -102,10 +101,11 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'activity',
|
||||
inverseSideFieldName: 'assignee',
|
||||
inverseSideTarget: () => ActivityObjectMetadata,
|
||||
inverseSideFieldKey: 'assignee',
|
||||
})
|
||||
@IsNullable()
|
||||
assignedActivities: ActivityObjectMetadata[];
|
||||
|
||||
@FieldMetadata({
|
||||
type: FieldMetadataType.RELATION,
|
||||
label: 'Favorites',
|
||||
@ -114,7 +114,7 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'favorite',
|
||||
inverseSideTarget: () => FavoriteObjectMetadata,
|
||||
onDelete: RelationOnDeleteAction.CASCADE,
|
||||
})
|
||||
favorites: FavoriteObjectMetadata[];
|
||||
@ -127,8 +127,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'company',
|
||||
inverseSideFieldName: 'accountOwner',
|
||||
inverseSideTarget: () => CompanyObjectMetadata,
|
||||
inverseSideFieldKey: 'accountOwner',
|
||||
})
|
||||
accountOwnerForCompanies: CompanyObjectMetadata[];
|
||||
|
||||
@ -140,8 +140,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'attachment',
|
||||
inverseSideFieldName: 'author',
|
||||
inverseSideTarget: () => AttachmentObjectMetadata,
|
||||
inverseSideFieldKey: 'author',
|
||||
})
|
||||
authoredAttachments: AttachmentObjectMetadata[];
|
||||
|
||||
@ -153,8 +153,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'comment',
|
||||
inverseSideFieldName: 'author',
|
||||
inverseSideTarget: () => CommentObjectMetadata,
|
||||
inverseSideFieldKey: 'author',
|
||||
})
|
||||
authoredComments: CommentObjectMetadata[];
|
||||
|
||||
@ -166,8 +166,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'connectedAccount',
|
||||
inverseSideFieldName: 'accountOwner',
|
||||
inverseSideTarget: () => ConnectedAccountObjectMetadata,
|
||||
inverseSideFieldKey: 'accountOwner',
|
||||
})
|
||||
connectedAccounts: ConnectedAccountObjectMetadata[];
|
||||
|
||||
@ -179,8 +179,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'messageParticipant',
|
||||
inverseSideFieldName: 'workspaceMember',
|
||||
inverseSideTarget: () => MessageParticipantObjectMetadata,
|
||||
inverseSideFieldKey: 'workspaceMember',
|
||||
})
|
||||
messageParticipants: MessageParticipantObjectMetadata[];
|
||||
|
||||
@ -192,8 +192,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'blocklist',
|
||||
inverseSideFieldName: 'workspaceMember',
|
||||
inverseSideTarget: () => BlocklistObjectMetadata,
|
||||
inverseSideFieldKey: 'workspaceMember',
|
||||
})
|
||||
blocklist: BlocklistObjectMetadata[];
|
||||
|
||||
@ -205,8 +205,8 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
|
||||
})
|
||||
@RelationMetadata({
|
||||
type: RelationMetadataType.ONE_TO_MANY,
|
||||
objectName: 'calendarEventAttendee',
|
||||
inverseSideFieldName: 'workspaceMember',
|
||||
inverseSideTarget: () => CalendarEventAttendeeObjectMetadata,
|
||||
inverseSideFieldKey: 'workspaceMember',
|
||||
})
|
||||
@Gate({
|
||||
featureFlag: 'IS_CALENDAR_ENABLED',
|
||||
|
||||
Reference in New Issue
Block a user