mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
106 lines
2.8 KiB
TypeScript
106 lines
2.8 KiB
TypeScript
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<ConnectionStatistics>({
|
|
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<SupplyDemandAnalysis>({
|
|
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<DashboardStatistics>({
|
|
queryKey: ['analytics', 'dashboard'],
|
|
queryFn: analyticsApi.getDashboardStatistics,
|
|
staleTime: 2 * 60 * 1000, // Cache for 2 minutes
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get platform statistics
|
|
*/
|
|
export function usePlatformStatistics() {
|
|
return useQuery<PlatformStatistics>({
|
|
queryKey: ['analytics', 'platform'],
|
|
queryFn: analyticsApi.getPlatformStatistics,
|
|
staleTime: 5 * 60 * 1000, // Cache for 5 minutes
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get matching statistics
|
|
*/
|
|
export function useMatchingStatistics() {
|
|
return useQuery<MatchingStatistics>({
|
|
queryKey: ['analytics', 'matching'],
|
|
queryFn: analyticsApi.getMatchingStatistics,
|
|
staleTime: 5 * 60 * 1000, // Cache for 5 minutes
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get resource flow statistics
|
|
*/
|
|
export function useResourceFlowStatistics() {
|
|
return useQuery<ResourceFlowStatistics>({
|
|
queryKey: ['analytics', 'resource-flow'],
|
|
queryFn: analyticsApi.getResourceFlowStatistics,
|
|
staleTime: 5 * 60 * 1000, // Cache for 5 minutes
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Get impact metrics
|
|
*/
|
|
export function useImpactMetrics() {
|
|
return useQuery<ImpactMetrics>({
|
|
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<OrganizationStatistics>({
|
|
queryKey: ['analytics', 'organization', organizationId, 'stats'],
|
|
queryFn: () => analyticsApi.getOrganizationStatistics(organizationId!),
|
|
enabled: !!organizationId,
|
|
staleTime: 2 * 60 * 1000, // Cache for 2 minutes
|
|
});
|
|
}
|