import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Alert, AlertDescription } from '@/components/ui/alert'; import { supabase } from '@/lib/supabaseClient'; import { Hammer, AlertCircle, CheckCircle2 } from 'lucide-react'; import { useToast } from '@/hooks/use-toast'; export function RideDataBackfill() { const [isRunning, setIsRunning] = useState(false); const [result, setResult] = useState<{ success: boolean; rides_updated: number; manufacturer_added: number; designer_added: number; ride_model_added: number; } | null>(null); const [error, setError] = useState(null); const { toast } = useToast(); const handleBackfill = async () => { setIsRunning(true); setError(null); setResult(null); try { const { data, error: invokeError } = await supabase.functions.invoke( 'backfill-ride-data' ); if (invokeError) throw invokeError; setResult(data); const updates: string[] = []; if (data.manufacturer_added > 0) updates.push(`${data.manufacturer_added} manufacturers`); if (data.designer_added > 0) updates.push(`${data.designer_added} designers`); if (data.ride_model_added > 0) updates.push(`${data.ride_model_added} ride models`); toast({ title: 'Backfill Complete', description: `Updated ${data.rides_updated} rides: ${updates.join(', ')}`, }); } catch (err: any) { const errorMessage = err.message || 'Failed to run backfill'; setError(errorMessage); toast({ title: 'Backfill Failed', description: errorMessage, variant: 'destructive', }); } finally { setIsRunning(false); } }; return ( Ride Data Backfill Backfill missing manufacturer, designer, and ride model data for approved rides from their submission data This tool will find rides missing manufacturer, designer, or ride model information and populate them using data from their approved submissions. Useful for fixing rides that were approved before relationship data was properly handled. {result && (
Backfill completed successfully!
Rides updated: {result.rides_updated}
Manufacturers added: {result.manufacturer_added}
Designers added: {result.designer_added}
Ride models added: {result.ride_model_added}
)} {error && ( {error} )}
); }