import { emailQueue } from '../queues/email.queue' import { config } from '../config/env' interface EmailOptions { to: string subject: string html: string text: string } export class EmailService { async sendEmail(options: EmailOptions): Promise { const email = { from: config.email.from, ...options } // Add to queue instead of sending directly await emailQueue.add('send-email', email, { removeOnComplete: true, // removeOnFail: 1000 }) } async getQueueStatus() { const [waiting, active, completed, failed] = await Promise.all([ emailQueue.getWaitingCount(), emailQueue.getActiveCount(), emailQueue.getCompletedCount(), emailQueue.getFailedCount() ]) return { waiting, active, completed, failed } } }