Files
thrilltrack-explorer/src-old/hooks/photos/usePhotoCount.ts

29 lines
886 B
TypeScript

import { useQuery } from '@tanstack/react-query';
import { supabase } from '@/lib/supabaseClient';
import { queryKeys } from '@/lib/queryKeys';
/**
* Hook to fetch photo count for an entity
*/
export function usePhotoCount(entityType: string, entityId: string | undefined, enabled = true) {
return useQuery({
queryKey: ['photos', 'count', entityType, entityId || ''] as const,
queryFn: async () => {
if (!entityId) return 0;
const { count, error } = await supabase
.from('photos')
.select('id', { count: 'exact', head: true })
.eq('entity_type', entityType)
.eq('entity_id', entityId);
if (error) throw error;
return count || 0;
},
enabled: enabled && !!entityId,
staleTime: 10 * 60 * 1000, // 10 minutes - photo counts change rarely
gcTime: 20 * 60 * 1000,
refetchOnWindowFocus: false,
});
}