import type { QueryPerformanceRow } from '../../QueryPerformance/QueryPerformance.types' import { useQueryInsightsIssues } from '../hooks/useQueryInsightsIssues' import { useQueryInsightsMetrics } from '../hooks/useQueryInsightsMetrics' import { useQueryInsightsScore } from '../hooks/useQueryInsightsScore' import { HEALTH_COLORS, HEALTH_LEVELS } from './QueryInsightsHealth.constants' import { QueryInsightsHealthMetric } from './QueryInsightsHealthMetric' import { QueryInsightsHealthScore } from './QueryInsightsHealthScore' import { QueryInsightsHealthScoreSkeleton } from './QueryInsightsHealthScoreSkeleton' interface QueryInsightsHealthProps { data: QueryPerformanceRow[] isLoading: boolean } export const QueryInsightsHealth = ({ data, isLoading }: QueryInsightsHealthProps) => { const { errors, indexIssues, slowQueries } = useQueryInsightsIssues(data) const { score, level } = useQueryInsightsScore({ errors, indexIssues, slowQueries }) const { avgP95, totalCalls, totalRowsRead, cacheHitRate } = useQueryInsightsMetrics(data) const color = HEALTH_COLORS[level] const label = HEALTH_LEVELS[level].label return (