${escalationReason}
import { serve } from "https://deno.land/std@0.190.0/http/server.ts"; import { createEdgeFunction, type EdgeFunctionContext } from '../_shared/edgeFunctionWrapper.ts'; import { corsHeaders } from '../_shared/cors.ts'; import { addSpanEvent } from '../_shared/logger.ts'; import { withEdgeRetry } from '../_shared/retryHelper.ts'; interface EscalationRequest { submissionId: string; escalationReason: string; escalatedBy: string; } const handler = async (req: Request, { supabase, span, requestId }: EdgeFunctionContext) => { const { submissionId, escalationReason, escalatedBy }: EscalationRequest = await req.json(); addSpanEvent(span, 'processing_escalation', { submissionId, escalatedBy }); // Fetch submission details const { data: submission, error: submissionError } = await supabase .from('content_submissions') .select('*, profiles:user_id(username, display_name, id)') .eq('id', submissionId) .single(); if (submissionError || !submission) { throw new Error(`Failed to fetch submission: ${submissionError?.message || 'Not found'}`); } // Fetch escalator details const { data: escalator, error: escalatorError } = await supabase .from('profiles') .select('username, display_name') .eq('user_id', escalatedBy) .single(); if (escalatorError) { addSpanEvent(span, 'escalator_profile_fetch_failed', { error: escalatorError.message }); } // Fetch submission items count const { count: itemsCount, error: countError } = await supabase .from('submission_items') .select('*', { count: 'exact', head: true }) .eq('submission_id', submissionId); if (countError) { addSpanEvent(span, 'items_count_fetch_failed', { error: countError.message }); } // Prepare email content const escalatorName = escalator?.display_name || escalator?.username || 'Unknown User'; const submitterName = submission.profiles?.display_name || submission.profiles?.username || 'Unknown User'; const submissionType = submission.submission_type || 'Unknown'; const itemCount = itemsCount || 0; const emailSubject = `🚨 Submission Escalated: ${submissionType} - ID: ${submissionId.substring(0, 8)}`; const emailHtml = `
Admin review required
${escalationReason}