4747 create deleted listener on blocklist (#5067)

Closes #4747
This commit is contained in:
bosiraphael
2024-04-24 16:10:56 +02:00
committed by GitHub
parent adbc8ab96f
commit 0f47426d19
12 changed files with 364 additions and 21 deletions

View File

@ -0,0 +1,59 @@
import { Injectable, Logger } from '@nestjs/common';
import { MessageQueueJob } from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface';
import { InjectObjectMetadataRepository } from 'src/engine/object-metadata-repository/object-metadata-repository.decorator';
import { GoogleCalendarSyncService } from 'src/modules/calendar/services/google-calendar-sync/google-calendar-sync.service';
import { ConnectedAccountRepository } from 'src/modules/connected-account/repositories/connected-account.repository';
import { ConnectedAccountObjectMetadata } from 'src/modules/connected-account/standard-objects/connected-account.object-metadata';
export type BlocklistReimportCalendarEventsJobData = {
workspaceId: string;
workspaceMemberId: string;
handle: string;
};
@Injectable()
export class BlocklistReimportCalendarEventsJob
implements MessageQueueJob<BlocklistReimportCalendarEventsJobData>
{
private readonly logger = new Logger(BlocklistReimportCalendarEventsJob.name);
constructor(
@InjectObjectMetadataRepository(ConnectedAccountObjectMetadata)
private readonly connectedAccountRepository: ConnectedAccountRepository,
private readonly googleCalendarSyncService: GoogleCalendarSyncService,
) {}
async handle(data: BlocklistReimportCalendarEventsJobData): Promise<void> {
const { workspaceId, workspaceMemberId, handle } = data;
this.logger.log(
`Reimporting calendar events from handle ${handle} in workspace ${workspaceId} for workspace member ${workspaceMemberId}`,
);
const connectedAccount =
await this.connectedAccountRepository.getAllByWorkspaceMemberId(
workspaceMemberId,
workspaceId,
);
if (!connectedAccount || connectedAccount.length === 0) {
this.logger.error(
`No connected account found for workspace member ${workspaceMemberId} in workspace ${workspaceId}`,
);
return;
}
await this.googleCalendarSyncService.startGoogleCalendarSync(
workspaceId,
connectedAccount[0].id,
handle,
);
this.logger.log(
`Reimporting calendar events from ${handle} in workspace ${workspaceId} for workspace member ${workspaceMemberId} done`,
);
}
}