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