mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 02:51:12 -05:00
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import { supabase } from '@/integrations/supabase/client';
|
|
import { queryKeys } from '@/lib/queryKeys';
|
|
|
|
/**
|
|
* Hook to fetch similar rides (same park and category)
|
|
*/
|
|
export function useSimilarRides(
|
|
currentRideId: string | undefined,
|
|
parkId: string | undefined,
|
|
category: string | undefined,
|
|
enabled = true
|
|
) {
|
|
return useQuery({
|
|
queryKey: queryKeys.rides.similar(parkId || '', category || '', currentRideId || ''),
|
|
queryFn: async () => {
|
|
if (!currentRideId || !parkId || !category) return [];
|
|
|
|
const { data, error } = await supabase
|
|
.from('rides')
|
|
.select(`
|
|
id,
|
|
name,
|
|
slug,
|
|
image_url,
|
|
average_rating,
|
|
status,
|
|
category,
|
|
description,
|
|
max_speed_kmh,
|
|
max_height_meters,
|
|
duration_seconds,
|
|
review_count,
|
|
park:parks!inner(name, slug)
|
|
`)
|
|
.eq('park_id', parkId)
|
|
.eq('category', category)
|
|
.neq('id', currentRideId)
|
|
.order('average_rating', { ascending: false })
|
|
.limit(4);
|
|
|
|
if (error) throw error;
|
|
return data || [];
|
|
},
|
|
enabled: enabled && !!currentRideId && !!parkId && !!category,
|
|
staleTime: 10 * 60 * 1000, // 10 minutes - similar rides rarely change
|
|
gcTime: 20 * 60 * 1000,
|
|
refetchOnWindowFocus: false,
|
|
});
|
|
}
|