feat: implement immediate email processing for unscheduled emails

- Added logic to process emails immediately if no scheduling is provided or if the scheduled time has passed.
- Introduced error handling for immediate email scheduling to ensure the mutation does not fail if scheduling encounters an error.
- Updated comments for clarity on email processing behavior.
This commit is contained in:
2025-11-13 16:46:08 -03:00
parent 73d550aa96
commit aa0b03ed3f

View File

@@ -138,9 +138,25 @@ export const enfileirarEmail = mutation({
agendadaPara: args.agendadaPara, agendadaPara: args.agendadaPara,
}); });
// O cron job processará emails automaticamente: // Processar imediatamente se não houver agendamento ou se o agendamento já passou
// - Emails sem agendamento serão processados imediatamente (próxima execução do cron) const agora = Date.now();
// - Emails agendados serão processados quando a hora chegar const deveProcessarAgora =
args.agendadaPara === undefined ||
args.agendadaPara <= agora;
if (deveProcessarAgora) {
// Agendar envio imediato via action (não bloqueia a mutation)
ctx.scheduler
.runAfter(0, api.actions.email.enviar, {
emailId: emailId,
})
.catch((error: unknown) => {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error(`Erro ao agendar envio imediato de email ${emailId}:`, errorMessage);
// Não falha a mutation se houver erro ao agendar - o cron pode processar depois
});
}
// Emails agendados para o futuro serão processados pelo cron quando a hora chegar
return emailId; return emailId;
}, },