Migrate connected account model (#2944)

* migrate-connectedAccount-model

* update accountOwerId

* prevent user from connecting multiple times with the same account

* Delete .yarn/releases/yarn-1.22.21.cjs

* Delete .yarnrc

* modified according to comments

* updates
This commit is contained in:
bosiraphael
2023-12-12 11:09:20 +01:00
committed by GitHub
parent 3f422f9640
commit 95002f5f9a
8 changed files with 113 additions and 96 deletions

View File

@ -0,0 +1,59 @@
import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity';
import {
ObjectMetadata,
IsSystem,
FieldMetadata,
} from 'src/workspace/workspace-sync-metadata/decorators/metadata.decorator';
import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.object-metadata';
import { WorkspaceMemberObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/workspace-member.object-metadata';
@ObjectMetadata({
namePlural: 'connectedAccounts',
labelSingular: 'Connected Account',
labelPlural: 'Connected Accounts',
description: 'A connected account',
icon: 'IconAt',
})
@IsSystem()
export class ConnectedAccountObjectMetadata extends BaseObjectMetadata {
@FieldMetadata({
type: FieldMetadataType.TEXT,
label: 'email',
description: 'The account email',
icon: 'IconMail',
})
email: string;
@FieldMetadata({
type: FieldMetadataType.TEXT,
label: 'provider',
description: 'The account provider',
icon: 'IconSettings',
})
provider: string;
@FieldMetadata({
type: FieldMetadataType.TEXT,
label: 'accessToken',
description: 'Messaging provider access token',
icon: 'IconKey',
})
accessToken: string;
@FieldMetadata({
type: FieldMetadataType.TEXT,
label: 'refreshToken',
description: 'Messaging provider refresh token',
icon: 'IconKey',
})
refreshToken: string;
@FieldMetadata({
type: FieldMetadataType.RELATION,
label: 'Account Owner',
description: 'Account Owner',
icon: 'IconUserCircle',
joinColumn: 'accountOwnerId',
})
accountOwner: WorkspaceMemberObjectMetadata;
}

View File

@ -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 { 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';
import { FavoriteObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/favorite.object-metadata';
import { OpportunityObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/opportunity.object-metadata';
import { PersonObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/person.object-metadata';
@ -22,6 +23,7 @@ export const standardObjectMetadata = [
AttachmentObjectMetadata,
CommentObjectMetadata,
CompanyObjectMetadata,
ConnectedAccountObjectMetadata,
FavoriteObjectMetadata,
OpportunityObjectMetadata,
PersonObjectMetadata,

View File

@ -13,6 +13,7 @@ import { AttachmentObjectMetadata } from 'src/workspace/workspace-sync-metadata/
import { BaseObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/base.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';
import { FavoriteObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/favorite.object-metadata';
@ObjectMetadata({
@ -149,4 +150,18 @@ export class WorkspaceMemberObjectMetadata extends BaseObjectMetadata {
})
@IsNullable()
authoredComments: CommentObjectMetadata[];
@FieldMetadata({
type: FieldMetadataType.RELATION,
label: 'Connected accounts',
description: 'Connected accounts',
icon: 'IconAt',
})
@RelationMetadata({
type: RelationMetadataType.ONE_TO_MANY,
objectName: 'connectedAccount',
inverseSideFieldName: 'accountOwner',
})
@IsNullable()
connectedAccounts: ConnectedAccountObjectMetadata[];
}