Home / Function/ WithMonitor() — supabase Function Reference

WithMonitor() — supabase Function Reference

Architecture documentation for the WithMonitor() function in WithMonitor.tsx from the supabase codebase.

Entity Profile

Dependency Diagram

graph TD
  8afea200_94fd_d6c2_5605_0880960a2b8b["WithMonitor()"]
  52ebd51a_00f5_f874_a337_97608d009760["getPgStatMonitorLogsQuery()"]
  8afea200_94fd_d6c2_5605_0880960a2b8b -->|calls| 52ebd51a_00f5_f874_a337_97608d009760
  7d3b6c56_2019_706a_2ad2_cc9303860408["parsePgStatMonitorLogs()"]
  8afea200_94fd_d6c2_5605_0880960a2b8b -->|calls| 7d3b6c56_2019_706a_2ad2_cc9303860408
  feb777f2_18e6_9259_8223_be4c3687a513["transformLogsToChartData()"]
  8afea200_94fd_d6c2_5605_0880960a2b8b -->|calls| feb777f2_18e6_9259_8223_be4c3687a513
  463d9b1b_4c86_b763_848a_1c62d2508795["aggregateLogsByQuery()"]
  8afea200_94fd_d6c2_5605_0880960a2b8b -->|calls| 463d9b1b_4c86_b763_848a_1c62d2508795
  e5a814f1_277b_493f_d4bd_8f8fcbe5f72f["captureQueryPerformanceError()"]
  8afea200_94fd_d6c2_5605_0880960a2b8b -->|calls| e5a814f1_277b_493f_d4bd_8f8fcbe5f72f
  style 8afea200_94fd_d6c2_5605_0880960a2b8b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

apps/studio/components/interfaces/QueryPerformance/WithMonitor/WithMonitor.tsx lines 33–141

export const WithMonitor = ({ dateRange, onDateRangeChange }: WithMonitorProps) => {
  const { ref } = useParams()
  const { data: project } = useSelectedProjectQuery()
  const state = useDatabaseSelectorStateSnapshot()
  const [selectedQuery, setSelectedQuery] = useState<string | null>(null)

  // [kemal]: Fetch pg_stat_monitor logs. This will need to change when we move to the actual extension.
  const effectiveDateRange = useMemo(() => {
    if (dateRange) {
      return {
        iso_timestamp_start: dateRange.period_start.date,
        iso_timestamp_end: dateRange.period_end.date,
      }
    }

    // [kemal]: Fallback to default 24 hours
    const end = dayjs.utc()
    const start = end.subtract(24, 'hours')
    return {
      iso_timestamp_start: start.toISOString(),
      iso_timestamp_end: end.toISOString(),
    }
  }, [dateRange])

  const queryWithTimeRange = useMemo(() => {
    return getPgStatMonitorLogsQuery(
      effectiveDateRange.iso_timestamp_start,
      effectiveDateRange.iso_timestamp_end
    )
  }, [effectiveDateRange])

  const pgStatMonitorLogs = useLogsQuery(ref as string, {
    sql: queryWithTimeRange,
    iso_timestamp_start: effectiveDateRange.iso_timestamp_start,
    iso_timestamp_end: effectiveDateRange.iso_timestamp_end,
  })

  const { logData, isLoading: isLogsLoading, error: logsError } = pgStatMonitorLogs

  const parsedLogs = useMemo(() => {
    return parsePgStatMonitorLogs(logData || [])
  }, [logData])

  const chartData = useMemo(() => {
    return transformLogsToChartData(parsedLogs)
  }, [parsedLogs])

  const aggregatedGridData = useMemo(() => {
    return aggregateLogsByQuery(parsedLogs)
  }, [parsedLogs])

  const handleSelectQuery = (query: string) => {
    setSelectedQuery((prev) => (prev === query ? null : query))
  }

  const handleRetry = () => {
    pgStatMonitorLogs.runQuery()
  }

  useEffect(() => {
    if (logsError) {
      const errorMessage = getErrorMessage(logsError)
      captureQueryPerformanceError(logsError, {
        projectRef: ref,
        databaseIdentifier: state.selectedDatabaseId,
        queryPreset: 'pg_stat_monitor',
        queryType: 'monitor',
        postgresVersion: project?.dbVersion,
        databaseType: state.selectedDatabaseId === ref ? 'primary' : 'read-replica',
        sql: queryWithTimeRange,
        errorMessage: errorMessage || undefined,
      })
    }
  }, [logsError, ref, state.selectedDatabaseId, project?.dbVersion, queryWithTimeRange])

  return (
    <>
      <QueryPerformanceChart
        dateRange={dateRange}
        onDateRangeChange={onDateRangeChange}
        chartData={chartData}
        isLoading={isLogsLoading}
        error={logsError}
        currentSelectedQuery={selectedQuery}
        parsedLogs={parsedLogs}
      />
      <QueryPerformanceFilterBar
        actions={
          <DownloadResultsButton
            results={aggregatedGridData}
            fileName={`Supabase Query Performance Monitor (${ref})`}
            align="end"
          />
        }
      />
      <LoadingLine loading={isLogsLoading} />
      <QueryPerformanceGrid
        aggregatedData={aggregatedGridData}
        isLoading={isLogsLoading}
        error={
          logsError ? getErrorMessage(logsError) || 'Failed to load query performance data' : null
        }
        currentSelectedQuery={selectedQuery}
        onCurrentSelectQuery={handleSelectQuery}
        onRetry={handleRetry}
      />
    </>
  )
}

Subdomains

Frequently Asked Questions

What does WithMonitor() do?
WithMonitor() is a function in the supabase codebase.
What does WithMonitor() call?
WithMonitor() calls 5 function(s): aggregateLogsByQuery, captureQueryPerformanceError, getPgStatMonitorLogsQuery, parsePgStatMonitorLogs, transformLogsToChartData.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free