* create utils service * getLastSyncHistoryId * getHistory * add historyTypes messageAdded and messageDeleted * getMessageIdsAndThreadIdsNotInDatabase * wip * fix messageThreadId null * no need to fetch threads anymore * get messagesAdded in partial sync * adding errors * save lastSyncHistoryId * improve * renaming * create partial sync job * improve partial sync * adding messages with partial sync is working * now adding messages with partial sync is working * deleting messages and empty threads is working * wip * wip * fix bug to delete threads * update partial sync to cover edge cases * renaming * modify ambiguous naming * renaming
39 lines
1.4 KiB
TypeScript
39 lines
1.4 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
|
|
import { MessageQueueJob } from 'src/integrations/message-queue/interfaces/message-queue-job.interface';
|
|
|
|
import { EnvironmentService } from 'src/integrations/environment/environment.service';
|
|
import { GmailRefreshAccessTokenService } from 'src/workspace/messaging/services/gmail-refresh-access-token.service';
|
|
import { GmailFullSyncService } from 'src/workspace/messaging/services/gmail-full-sync.service';
|
|
|
|
export type GmailFullSyncJobData = {
|
|
workspaceId: string;
|
|
connectedAccountId: string;
|
|
};
|
|
|
|
@Injectable()
|
|
export class GmailFullSyncJob implements MessageQueueJob<GmailFullSyncJobData> {
|
|
constructor(
|
|
private readonly environmentService: EnvironmentService,
|
|
private readonly gmailRefreshAccessTokenService: GmailRefreshAccessTokenService,
|
|
private readonly fetchWorkspaceMessagesService: GmailFullSyncService,
|
|
) {}
|
|
|
|
async handle(data: GmailFullSyncJobData): Promise<void> {
|
|
console.log(
|
|
`fetching messages for workspace ${data.workspaceId} and account ${
|
|
data.connectedAccountId
|
|
} with ${this.environmentService.getMessageQueueDriverType()}`,
|
|
);
|
|
await this.gmailRefreshAccessTokenService.refreshAndSaveAccessToken(
|
|
data.workspaceId,
|
|
data.connectedAccountId,
|
|
);
|
|
|
|
await this.fetchWorkspaceMessagesService.fetchConnectedAccountThreads(
|
|
data.workspaceId,
|
|
data.connectedAccountId,
|
|
);
|
|
}
|
|
}
|