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:
@@ -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;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user