import { useQuery } from '@tanstack/react-query';
import { supabase } from '@/lib/supabaseClient';
import { queryKeys } from '@/lib/queryKeys';

export function useHomepageOpeningSoonParks(enabled = true) {
  return useQuery({
    queryKey: queryKeys.homepage.openingSoonParks(),
    queryFn: async () => {
      const today = new Date();
      const sixMonthsFromNow = new Date();
      sixMonthsFromNow.setMonth(sixMonthsFromNow.getMonth() + 6);

      const { data, error } = await supabase
        .from('parks')
        .select(`*, location:locations(*), operator:companies!parks_operator_id_fkey(*)`)
        .gte('opening_date', today.toISOString())
        .lte('opening_date', sixMonthsFromNow.toISOString())
        .order('opening_date', { ascending: true })
        .limit(12);
      
      if (error) throw error;
      return data || [];
    },
    enabled,
    staleTime: 5 * 60 * 1000,
    gcTime: 15 * 60 * 1000,
    refetchOnWindowFocus: false,
  });
}

export function useHomepageOpeningSoonRides(enabled = true) {
  return useQuery({
    queryKey: queryKeys.homepage.openingSoonRides(),
    queryFn: async () => {
      const today = new Date();
      const sixMonthsFromNow = new Date();
      sixMonthsFromNow.setMonth(sixMonthsFromNow.getMonth() + 6);

      const { data, error } = await supabase
        .from('rides')
        .select(`
          *, 
          park:parks(*, location:locations(*)),
          manufacturer:companies!rides_manufacturer_id_fkey(*),
          designer:companies!rides_designer_id_fkey(*)
        `)
        .gte('opening_date', today.toISOString())
        .lte('opening_date', sixMonthsFromNow.toISOString())
        .order('opening_date', { ascending: true })
        .limit(12);
      
      if (error) throw error;
      return data || [];
    },
    enabled,
    staleTime: 5 * 60 * 1000,
    gcTime: 15 * 60 * 1000,
    refetchOnWindowFocus: false,
  });
}
