diff --git a/packages/twenty-server/src/integrations/email/email-job.service.ts b/packages/twenty-server/src/integrations/email/email-job.service.ts deleted file mode 100644 index cb3b049f196..00000000000 --- a/packages/twenty-server/src/integrations/email/email-job.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Inject, Injectable } from '@nestjs/common'; - -import { SendMailOptions } from 'nodemailer'; - -import { MessageQueue } from 'src/integrations/message-queue/message-queue.constants'; -import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service'; -import { EmailJob } from 'src/integrations/email/email.job'; - -@Injectable() -export class EmailJobService { - constructor( - @Inject(MessageQueue.emailQueue) - private readonly messageQueueService: MessageQueueService, - ) {} - - async send(sendMailOptions: SendMailOptions): Promise { - await this.messageQueueService.add( - EmailJob.name, - sendMailOptions, - { retryLimit: 3 }, - ); - } -} diff --git a/packages/twenty-server/src/integrations/email/email.job.ts b/packages/twenty-server/src/integrations/email/email-sender.job.ts similarity index 55% rename from packages/twenty-server/src/integrations/email/email.job.ts rename to packages/twenty-server/src/integrations/email/email-sender.job.ts index 5acfe6bfa34..3eca5f3d549 100644 --- a/packages/twenty-server/src/integrations/email/email.job.ts +++ b/packages/twenty-server/src/integrations/email/email-sender.job.ts @@ -4,15 +4,15 @@ import { SendMailOptions } from 'nodemailer'; import { MessageQueueJob } from 'src/integrations/message-queue/interfaces/message-queue-job.interface'; -import { EmailService } from 'src/integrations/email/email.service'; +import { EmailSenderService } from 'src/integrations/email/email-sender.service'; @Injectable() -export class EmailJob implements MessageQueueJob { - constructor(private readonly emailService: EmailService) {} +export class EmailSenderJob implements MessageQueueJob { + constructor(private readonly emailSenderService: EmailSenderService) {} async handle(data: SendMailOptions): Promise { console.log('sending email', data); - await this.emailService.send(data); + await this.emailSenderService.send(data); console.log('done'); } } diff --git a/packages/twenty-server/src/integrations/email/email-sender.service.ts b/packages/twenty-server/src/integrations/email/email-sender.service.ts new file mode 100644 index 00000000000..58b6c4a9c18 --- /dev/null +++ b/packages/twenty-server/src/integrations/email/email-sender.service.ts @@ -0,0 +1,16 @@ +import { Inject, Injectable } from '@nestjs/common'; + +import { SendMailOptions } from 'nodemailer'; + +import { EmailDriver } from 'src/integrations/email/drivers/interfaces/email-driver.interface'; + +import { EMAIL_DRIVER } from 'src/integrations/email/email.constants'; + +@Injectable() +export class EmailSenderService implements EmailDriver { + constructor(@Inject(EMAIL_DRIVER) private driver: EmailDriver) {} + + async send(sendMailOptions: SendMailOptions): Promise { + await this.driver.send(sendMailOptions); + } +} diff --git a/packages/twenty-server/src/integrations/email/email.module.ts b/packages/twenty-server/src/integrations/email/email.module.ts index db2c481fa10..d18fa71fdbc 100644 --- a/packages/twenty-server/src/integrations/email/email.module.ts +++ b/packages/twenty-server/src/integrations/email/email.module.ts @@ -6,7 +6,7 @@ import { EMAIL_DRIVER } from 'src/integrations/email/email.constants'; import { LoggerDriver } from 'src/integrations/email/drivers/logger.driver'; import { SmtpDriver } from 'src/integrations/email/drivers/smtp.driver'; import { EmailService } from 'src/integrations/email/email.service'; -import { EmailJobService } from 'src/integrations/email/email-job.service'; +import { EmailSenderService } from 'src/integrations/email/email-sender.service'; @Global() export class EmailModule { @@ -23,8 +23,8 @@ export class EmailModule { return { module: EmailModule, - providers: [EmailService, EmailJobService, provider], - exports: [EmailService, EmailJobService], + providers: [EmailSenderService, EmailService, provider], + exports: [EmailSenderService, EmailService], }; } } diff --git a/packages/twenty-server/src/integrations/email/email.service.ts b/packages/twenty-server/src/integrations/email/email.service.ts index 1c94c33b117..8963ce74d9c 100644 --- a/packages/twenty-server/src/integrations/email/email.service.ts +++ b/packages/twenty-server/src/integrations/email/email.service.ts @@ -2,15 +2,22 @@ import { Inject, Injectable } from '@nestjs/common'; import { SendMailOptions } from 'nodemailer'; -import { EmailDriver } from 'src/integrations/email/drivers/interfaces/email-driver.interface'; - -import { EMAIL_DRIVER } from 'src/integrations/email/email.constants'; +import { MessageQueue } from 'src/integrations/message-queue/message-queue.constants'; +import { MessageQueueService } from 'src/integrations/message-queue/services/message-queue.service'; +import { EmailSenderJob } from 'src/integrations/email/email-sender.job'; @Injectable() -export class EmailService implements EmailDriver { - constructor(@Inject(EMAIL_DRIVER) private driver: EmailDriver) {} +export class EmailService { + constructor( + @Inject(MessageQueue.emailQueue) + private readonly messageQueueService: MessageQueueService, + ) {} async send(sendMailOptions: SendMailOptions): Promise { - await this.driver.send(sendMailOptions); + await this.messageQueueService.add( + EmailSenderJob.name, + sendMailOptions, + { retryLimit: 3 }, + ); } } diff --git a/packages/twenty-server/src/integrations/message-queue/jobs.module.ts b/packages/twenty-server/src/integrations/message-queue/jobs.module.ts index a9b1aabd256..11047184648 100644 --- a/packages/twenty-server/src/integrations/message-queue/jobs.module.ts +++ b/packages/twenty-server/src/integrations/message-queue/jobs.module.ts @@ -10,7 +10,7 @@ import { ObjectMetadataModule } from 'src/metadata/object-metadata/object-metada import { DataSourceModule } from 'src/metadata/data-source/data-source.module'; import { TypeORMModule } from 'src/database/typeorm/typeorm.module'; import { FetchWorkspaceMessagesModule } from 'src/workspace/messaging/services/fetch-workspace-messages.module'; -import { EmailJob } from 'src/integrations/email/email.job'; +import { EmailSenderJob } from 'src/integrations/email/email-sender.job'; @Module({ imports: [ @@ -35,8 +35,8 @@ import { EmailJob } from 'src/integrations/email/email.job'; useClass: CallWebhookJob, }, { - provide: EmailJob.name, - useClass: EmailJob, + provide: EmailSenderJob.name, + useClass: EmailSenderJob, }, ], }) diff --git a/packages/twenty-server/src/workspace/toto.command.ts b/packages/twenty-server/src/workspace/toto.command.ts index b67d7ce83e4..95869f4da42 100644 --- a/packages/twenty-server/src/workspace/toto.command.ts +++ b/packages/twenty-server/src/workspace/toto.command.ts @@ -2,13 +2,13 @@ import { Command, CommandRunner } from 'nest-commander'; import { render } from '@react-email/render'; import CleanInactiveWorkspaceEmail from 'src/workspace/emails/clean-inactive-workspace.email'; -import { EmailJobService } from 'src/integrations/email/email-job.service'; +import { EmailService } from 'src/integrations/email/email.service'; @Command({ name: 'test-send-email', }) export class TotoCommand extends CommandRunner { - constructor(private readonly emailJobService: EmailJobService) { + constructor(private readonly emailService: EmailService) { super(); } @@ -16,7 +16,7 @@ export class TotoCommand extends CommandRunner { const html = render(CleanInactiveWorkspaceEmail(), { pretty: true }); const text = render(CleanInactiveWorkspaceEmail(), { plainText: true }); - await this.emailJobService.send({ to: 'martmull@hotmail.fr', html, text }); + await this.emailService.send({ to: 'martmull@hotmail.fr', html, text }); //await this.emailService.send({ to: 'martmull@hotmail.fr', html, text }); } }