DatabaseApiColumnRender.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { Column } from 'react-data-grid'
  2. import { TimestampInfo } from 'ui-patterns/TimestampInfo'
  3. import type { LogData } from '../Logs.types'
  4. import { ResponseCodeFormatter, RowLayout, TextFormatter } from '../LogsFormatters'
  5. import { defaultRenderCell } from './DefaultPreviewColumnRenderer'
  6. import { ErrorCodeTooltip } from '@/components/ui/ErrorCodeTooltip/ErrorCodeTooltip'
  7. import { Service } from '@/data/graphql/graphql'
  8. const columns: Column<LogData>[] = [
  9. {
  10. name: 'database-api-first-column',
  11. key: 'database-api-first-column',
  12. renderHeaderCell: () => null,
  13. renderCell: (props) => {
  14. if (!props.row.status_code && !props.row.method && !props.row.path) {
  15. return defaultRenderCell(props)
  16. }
  17. const error_code = props.row.metadata?.[0]?.response?.[0]?.headers?.[0]?.x_sb_error_code
  18. const service =
  19. typeof props.row.path === 'string' && props.row.path.startsWith('/auth/')
  20. ? Service.Auth
  21. : undefined
  22. return (
  23. <RowLayout>
  24. <TimestampInfo utcTimestamp={props.row.timestamp!} />
  25. <ResponseCodeFormatter value={String(props.row.status_code)} />
  26. <TextFormatter value={String(props.row.method)} />
  27. <TextFormatter value={String(props.row.path)} />
  28. {error_code && (
  29. <ErrorCodeTooltip errorCode={String(error_code)} service={service}>
  30. <span className="font-mono text-xs text-destructive-600 truncate shrink-0">
  31. {error_code}
  32. </span>
  33. </ErrorCodeTooltip>
  34. )}
  35. </RowLayout>
  36. )
  37. },
  38. },
  39. ]
  40. export default columns