import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'; import { createClient } from 'https://esm.sh/@supabase/supabase-js@2.57.4'; import { edgeLogger } from '../_shared/logger.ts'; const corsHeaders = { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Headers': 'authorization, x-client-info, apikey, content-type', }; serve(async (req: Request) => { if (req.method === 'OPTIONS') { return new Response(null, { headers: corsHeaders }); } const requestId = crypto.randomUUID(); try { edgeLogger.info('Starting scheduled maintenance', { requestId }); const supabase = createClient( Deno.env.get('SUPABASE_URL')!, Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')! ); // Run system maintenance (orphaned image cleanup) const { data, error } = await supabase.rpc('run_system_maintenance'); if (error) { edgeLogger.error('Maintenance failed', { requestId, error: error.message }); return new Response( JSON.stringify({ success: false, error: error.message, requestId }), { status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' } } ); } edgeLogger.info('Maintenance completed successfully', { requestId, result: data }); return new Response( JSON.stringify({ success: true, result: data, requestId }), { status: 200, headers: { ...corsHeaders, 'Content-Type': 'application/json' } } ); } catch (error) { edgeLogger.error('Maintenance exception', { requestId, error: error instanceof Error ? error.message : String(error) }); return new Response( JSON.stringify({ success: false, error: 'Internal server error', requestId }), { status: 500, headers: { ...corsHeaders, 'Content-Type': 'application/json' } } ); } });