From 6f72f1af33ae72f6f01ac9a3030d3ed5eedd42a4 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Tue, 28 Jan 2025 11:48:09 +0100 Subject: [PATCH] Fix Messaging sync upsert in messageChannel association (#9880) We have recently changed an .insert into a .upsert but we forgot to add the unique index on the postgres schema. --- .../message-channel-message-association.workspace-entity.ts | 5 +++++ .../services/messaging-message.service.ts | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts index 3121accc0..5fb528f79 100644 --- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts +++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts @@ -7,6 +7,7 @@ import { RelationMetadataType } from 'src/engine/metadata-modules/relation-metad import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; +import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator'; import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator'; import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; @@ -32,6 +33,10 @@ import { MessageWorkspaceEntity } from 'src/modules/messaging/common/standard-ob }) @WorkspaceIsNotAuditLogged() @WorkspaceIsSystem() +@WorkspaceIndex(['messageChannelId', 'messageId'], { + isUnique: true, + indexWhereClause: '"deletedAt" IS NULL', +}) export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceField({ standardId: diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message.service.ts index 2d308034a..429252fe7 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-message.service.ts @@ -65,7 +65,7 @@ export class MessagingMessageService { messageExternalId: message.externalId, messageThreadExternalId: message.messageThreadExternalId, }, - ['messageChannelId'], + ['messageChannelId', 'messageId'], transactionManager, );