useQueryInsightsIssues.ts 939 B

123456789101112131415161718192021
  1. import { useMemo } from 'react'
  2. import type { QueryPerformanceRow } from '../../QueryPerformance/QueryPerformance.types'
  3. import type { ClassifiedQuery } from '../QueryInsightsHealth/QueryInsightsHealth.types'
  4. import { getQueryType } from '../QueryInsightsTable/QueryInsightsTable.utils'
  5. import { classifyQuery } from './useQueryInsightsIssues.utils'
  6. export function useQueryInsightsIssues(data: QueryPerformanceRow[]) {
  7. return useMemo(() => {
  8. const classified: ClassifiedQuery[] = data.map((row) => {
  9. const { issueType, hint } = classifyQuery(row)
  10. return { ...row, issueType, hint, queryType: getQueryType(row.query) }
  11. })
  12. const errors = classified.filter((q) => q.issueType === 'error')
  13. const indexIssues = classified.filter((q) => q.issueType === 'index')
  14. const slowQueries = classified.filter((q) => q.issueType === 'slow')
  15. return { classified, errors, indexIssues, slowQueries }
  16. }, [data])
  17. }