3921 delete messagethreads after deleting connectedaccount (#3925)
* created listener * working --------- Co-authored-by: Weiko <corentin@twenty.com>
This commit is contained in:
@ -0,0 +1,40 @@
|
|||||||
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
|
|
||||||
|
import { MessageQueueJob } from 'src/integrations/message-queue/interfaces/message-queue-job.interface';
|
||||||
|
|
||||||
|
import { MessageChannelMessageAssociationService } from 'src/workspace/messaging/message-channel-message-association/message-channel-message-association.service';
|
||||||
|
|
||||||
|
export type DeleteMessageChannelMessageAssociationJobData = {
|
||||||
|
workspaceId: string;
|
||||||
|
messageChannelId: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class DeleteMessageChannelMessageAssociationJob
|
||||||
|
implements MessageQueueJob<DeleteMessageChannelMessageAssociationJobData>
|
||||||
|
{
|
||||||
|
private readonly logger = new Logger(
|
||||||
|
DeleteMessageChannelMessageAssociationJob.name,
|
||||||
|
);
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private readonly messageChannelMessageAssociationService: MessageChannelMessageAssociationService,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
async handle(
|
||||||
|
data: DeleteMessageChannelMessageAssociationJobData,
|
||||||
|
): Promise<void> {
|
||||||
|
this.logger.log(
|
||||||
|
`Deleting message channel message association for message channel ${data.messageChannelId} in workspace ${data.workspaceId}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.messageChannelMessageAssociationService.deleteByMessageChannelId(
|
||||||
|
data.messageChannelId,
|
||||||
|
data.workspaceId,
|
||||||
|
);
|
||||||
|
|
||||||
|
this.logger.log(
|
||||||
|
`Deleted message channel message association for message channel ${data.messageChannelId} in workspace ${data.workspaceId}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
|
import { OnEvent } from '@nestjs/event-emitter';
|
||||||
|
|
||||||
|
import { ObjectRecordDeleteEvent } from 'src/integrations/event-emitter/types/object-record-delete.event';
|
||||||
|
import { MessageQueue } from 'src/integrations/message-queue/message-queue.constants';
|
||||||
|
import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service';
|
||||||
|
import {
|
||||||
|
DeleteMessageChannelMessageAssociationJob,
|
||||||
|
DeleteMessageChannelMessageAssociationJobData,
|
||||||
|
} from 'src/workspace/messaging/jobs/delete-message-channel-message-association.job';
|
||||||
|
import { MessageChannelObjectMetadata } from 'src/workspace/workspace-sync-metadata/standard-objects/message-channel.object-metadata';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class MessagingMessageChannelListener {
|
||||||
|
constructor(
|
||||||
|
@Inject(MessageQueue.messagingQueue)
|
||||||
|
private readonly messageQueueService: MessageQueueService,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
@OnEvent('messageChannel.deleted')
|
||||||
|
handleDeletedEvent(
|
||||||
|
payload: ObjectRecordDeleteEvent<MessageChannelObjectMetadata>,
|
||||||
|
) {
|
||||||
|
this.messageQueueService.add<DeleteMessageChannelMessageAssociationJobData>(
|
||||||
|
DeleteMessageChannelMessageAssociationJob.name,
|
||||||
|
{
|
||||||
|
workspaceId: payload.workspaceId,
|
||||||
|
messageChannelId: payload.deletedRecord.id,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -67,6 +67,22 @@ export class MessageChannelMessageAssociationService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async deleteByMessageChannelId(
|
||||||
|
messageChannelId: string,
|
||||||
|
workspaceId: string,
|
||||||
|
transactionManager?: EntityManager,
|
||||||
|
) {
|
||||||
|
const dataSourceSchema =
|
||||||
|
this.workspaceDataSourceService.getSchemaName(workspaceId);
|
||||||
|
|
||||||
|
await this.workspaceDataSourceService.executeRawQuery(
|
||||||
|
`DELETE FROM ${dataSourceSchema}."messageChannelMessageAssociation" WHERE "messageChannelId" = $1`,
|
||||||
|
[messageChannelId],
|
||||||
|
workspaceId,
|
||||||
|
transactionManager,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public async deleteByIds(
|
public async deleteByIds(
|
||||||
ids: string[],
|
ids: string[],
|
||||||
workspaceId: string,
|
workspaceId: string,
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import { IsPersonEmailService } from 'src/workspace/messaging/services/is-person
|
|||||||
import { WorkspaceDataSourceModule } from 'src/workspace/workspace-datasource/workspace-datasource.module';
|
import { WorkspaceDataSourceModule } from 'src/workspace/workspace-datasource/workspace-datasource.module';
|
||||||
import { MessageParticipantModule } from 'src/workspace/messaging/message-participant/message-participant.module';
|
import { MessageParticipantModule } from 'src/workspace/messaging/message-participant/message-participant.module';
|
||||||
import { MessagingWorkspaceMemberListener } from 'src/workspace/messaging/listeners/messaging-workspace-member.listener';
|
import { MessagingWorkspaceMemberListener } from 'src/workspace/messaging/listeners/messaging-workspace-member.listener';
|
||||||
|
import { MessagingMessageChannelListener } from 'src/workspace/messaging/listeners/messaging-message-channel.listener';
|
||||||
import { MessageService } from 'src/workspace/messaging/message/message.service';
|
import { MessageService } from 'src/workspace/messaging/message/message.service';
|
||||||
import { CreateQueriesFromMessageIdsService } from 'src/workspace/messaging/services/utils/create-queries-from-message-ids.service';
|
import { CreateQueriesFromMessageIdsService } from 'src/workspace/messaging/services/utils/create-queries-from-message-ids.service';
|
||||||
|
|
||||||
@ -43,6 +44,7 @@ import { CreateQueriesFromMessageIdsService } from 'src/workspace/messaging/serv
|
|||||||
CreateCompanyService,
|
CreateCompanyService,
|
||||||
MessagingPersonListener,
|
MessagingPersonListener,
|
||||||
MessagingWorkspaceMemberListener,
|
MessagingWorkspaceMemberListener,
|
||||||
|
MessagingMessageChannelListener,
|
||||||
MessageService,
|
MessageService,
|
||||||
CreateQueriesFromMessageIdsService,
|
CreateQueriesFromMessageIdsService,
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user