mirror of
https://github.com/supabase/supabase.git
synced 2026-10-12 04:45:08 +03:00
45 lines
1.5 KiB
TypeScript
45 lines
1.5 KiB
TypeScript
export type LogsBarChartDatum = {
|
|
timestamp: string
|
|
error_count: number
|
|
ok_count: number
|
|
warning_count: number
|
|
}
|
|
|
|
export const toLogsBarChartData = (
|
|
rows: Array<Record<string, unknown>> = []
|
|
): LogsBarChartDatum[] => {
|
|
return rows.map((r) => ({
|
|
timestamp: r.timestamp?.toString() ?? '',
|
|
ok_count: Number(r.ok_count) || 0,
|
|
warning_count: Number(r.warning_count) || 0,
|
|
error_count: Number(r.error_count) || 0,
|
|
}))
|
|
}
|
|
|
|
export const sumTotal = (data: LogsBarChartDatum[]): number =>
|
|
data.reduce((acc, r) => acc + r.ok_count + r.warning_count + r.error_count, 0)
|
|
|
|
export const sumWarnings = (data: LogsBarChartDatum[]): number =>
|
|
data.reduce((acc, r) => acc + r.warning_count, 0)
|
|
|
|
export const sumErrors = (data: LogsBarChartDatum[]): number =>
|
|
data.reduce((acc, r) => acc + r.error_count, 0)
|
|
|
|
export const computeSuccessAndNonSuccessRates = (
|
|
totalRequests: number,
|
|
totalWarnings: number,
|
|
totalErrors: number
|
|
): { successRate: number; nonSuccessRate: number } => {
|
|
if (totalRequests <= 0) return { successRate: 0, nonSuccessRate: 0 }
|
|
const nonSuccessRate = ((totalWarnings + totalErrors) / totalRequests) * 100
|
|
const successRate = 100 - nonSuccessRate
|
|
return { successRate, nonSuccessRate }
|
|
}
|
|
|
|
export const computeChangePercent = (current: number, previous: number): number => {
|
|
if (previous === 0) return current > 0 ? 100 : 0
|
|
return ((current - previous) / previous) * 100
|
|
}
|
|
|
|
export const formatDelta = (v: number): string => `${v >= 0 ? '+' : ''}${v.toFixed(1)}%`
|