import type { ConnectionStatistics, DashboardStatistics, ImpactMetrics, MatchingStatistics, OrganizationStatistics, PlatformStatistics, ResourceFlowStatistics, SupplyDemandAnalysis, } from '@/services/analytics-api.ts'; import * as analyticsApi from '@/services/analytics-api.ts'; import { useQuery } from '@tanstack/react-query'; /** * Get connection statistics * Returns validated data from API or error state */ export function useConnectionStatistics() { return useQuery({ queryKey: ['analytics', 'connections'], queryFn: analyticsApi.getConnectionStatistics, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); } /** * Get supply and demand analysis * Returns validated data from API or error state */ export function useSupplyDemandAnalysis() { return useQuery({ queryKey: ['analytics', 'supply-demand'], queryFn: analyticsApi.getSupplyDemandAnalysis, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); } /** * Get dashboard statistics * Returns validated data from API or error state */ export function useDashboardStatistics() { return useQuery({ queryKey: ['analytics', 'dashboard'], queryFn: analyticsApi.getDashboardStatistics, staleTime: 2 * 60 * 1000, // Cache for 2 minutes }); } /** * Get platform statistics */ export function usePlatformStatistics() { return useQuery({ queryKey: ['analytics', 'platform'], queryFn: analyticsApi.getPlatformStatistics, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); } /** * Get matching statistics */ export function useMatchingStatistics() { return useQuery({ queryKey: ['analytics', 'matching'], queryFn: analyticsApi.getMatchingStatistics, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); } /** * Get resource flow statistics */ export function useResourceFlowStatistics() { return useQuery({ queryKey: ['analytics', 'resource-flow'], queryFn: analyticsApi.getResourceFlowStatistics, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); } /** * Get impact metrics */ export function useImpactMetrics() { return useQuery({ queryKey: ['analytics', 'impact'], queryFn: analyticsApi.getImpactMetrics, staleTime: 5 * 60 * 1000, // Cache for 5 minutes }); } /** * Get organization statistics * Returns validated data from API or error state */ export function useOrganizationStatistics(organizationId: string | undefined) { return useQuery({ queryKey: ['analytics', 'organization', organizationId, 'stats'], queryFn: () => analyticsApi.getOrganizationStatistics(organizationId!), enabled: !!organizationId, staleTime: 2 * 60 * 1000, // Cache for 2 minutes }); }