/** * Send Purge Report Edge Function * Version: 2.0 * Last updated: 2025-01-20 * Purpose: Send email reports about article purge operations to admin users */ import { serve } from "https://deno.land/std@0.177.0/http/server.ts"; import { Resend } from "npm:resend@2.0.0"; const resend = new Resend(Deno.env.get("RESEND_API_KEY")); const corsHeaders = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type", }; interface PurgeReportRequest { deletedCount: number; adminEmails: string[]; timestamp: string; } const handler = async (req: Request): Promise => { console.log('📧 Send-purge-report function invoked at', new Date().toISOString()); // Handle CORS preflight requests if (req.method === "OPTIONS") { console.log('📝 CORS preflight request handled'); return new Response(null, { headers: corsHeaders }); } try { const { deletedCount, adminEmails, timestamp }: PurgeReportRequest = await req.json(); console.log('📨 Preparing to send purge report email...'); console.log(`📊 Report details: ${deletedCount} articles deleted, ${adminEmails?.length || 0} admins to notify`); console.log('📧 Admin emails:', adminEmails); const emailDate = new Date(timestamp); const formattedDate = emailDate.toLocaleDateString('fr-FR', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }); const emailHtml = `

🗑️ Rapport de Purge Automatique

✓ EXÉCUTION RÉUSSIE

Bonjour,

La purge automatique des articles a été exécutée avec succès.

Articles supprimés
${deletedCount}
Date d'exécution
${formattedDate}

📋 Critères de purge appliqués

  • Ă‚ge des articles : Plus de 48 heures (2 jours)
  • Articles prĂ©servĂ©s :
    • Articles Ă©pinglĂ©s par au moins un utilisateur
    • Articles avec plus de 20 lectures
  • FrĂ©quence : Tous les jours Ă  3h00 du matin
${deletedCount === 0 ? `
ℹ️ Information : Aucun article ne correspondait aux critères de purge.
` : ''}
`; const emailResponse = await resend.emails.send({ from: "News Aggregator ", to: adminEmails, subject: `📊 Rapport de purge automatique - ${deletedCount} article${deletedCount > 1 ? 's' : ''} supprimé${deletedCount > 1 ? 's' : ''}`, html: emailHtml, }); console.log("Purge report email sent successfully:", emailResponse); return new Response(JSON.stringify({ success: true, emailResponse }), { status: 200, headers: { "Content-Type": "application/json", ...corsHeaders, }, }); } catch (error: any) { console.error("Error in send-purge-report function:", error); return new Response( JSON.stringify({ error: error?.message || 'Unknown error' }), { status: 500, headers: { "Content-Type": "application/json", ...corsHeaders }, } ); } }; serve(handler);