| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // @ts-nocheck
- import dayjs from 'dayjs'
- import { fetchLogs } from '@/data/reports/report.utils'
- export type ResponseErrorRow = {
- method: string
- path: string
- status_code: number
- count: number
- }
- export type AuthErrorCodeRow = {
- error_code: string
- count: number
- }
- export const getDateRange = () => {
- return {
- start: dayjs().subtract(24, 'hour').toISOString(),
- end: dayjs().toISOString(),
- }
- }
- // Top API response errors for /auth/v1 endpoints (path/method/status)
- export const AUTH_TOP_RESPONSE_ERRORS_SQL = `
- select
- request.method as method,
- request.path as path,
- response.status_code as status_code,
- count(*) as count
- from edge_logs
- cross join unnest(metadata) as m
- cross join unnest(m.request) as request
- cross join unnest(m.response) as response
- where path like '%auth/v1%'
- and response.status_code between 400 and 599
- group by method, path, status_code
- order by count desc
- limit 10
- `
- // Top Auth service error codes from x_sb_error_code header for /auth/v1 endpoints
- export const AUTH_TOP_ERROR_CODES_SQL = `
- select
- h.x_sb_error_code as error_code,
- count(*) as count
- from edge_logs
- cross join unnest(metadata) as m
- cross join unnest(m.request) as request
- cross join unnest(m.response) as response
- cross join unnest(response.headers) as h
- where path like '%auth/v1%'
- and response.status_code between 400 and 599
- and h.x_sb_error_code is not null
- group by error_code
- order by count desc
- limit 10
- `
- export const fetchTopResponseErrors = async (projectRef: string) => {
- const { start, end } = getDateRange()
- return await fetchLogs(projectRef, AUTH_TOP_RESPONSE_ERRORS_SQL, start, end)
- }
- export const fetchTopAuthErrorCodes = async (projectRef: string) => {
- const { start, end } = getDateRange()
- return await fetchLogs(projectRef, AUTH_TOP_ERROR_CODES_SQL, start, end)
- }
|