ProjectUsage.metrics.ts37 lines · main
1export type LogsBarChartDatum = {
2 timestamp: string
3 error_count: number
4 ok_count: number
5 warning_count: number
6}
7
8export const toLogsBarChartData = (
9 rows: Array<Record<string, unknown>> = []
10): LogsBarChartDatum[] => {
11 return rows.map((r) => ({
12 timestamp: r.timestamp?.toString() ?? '',
13 ok_count: Number(r.ok_count) || 0,
14 warning_count: Number(r.warning_count) || 0,
15 error_count: Number(r.error_count) || 0,
16 }))
17}
18
19export const sumTotal = (data: LogsBarChartDatum[]): number =>
20 data.reduce((acc, r) => acc + r.ok_count + r.warning_count + r.error_count, 0)
21
22export const sumWarnings = (data: LogsBarChartDatum[]): number =>
23 data.reduce((acc, r) => acc + r.warning_count, 0)
24
25export const sumErrors = (data: LogsBarChartDatum[]): number =>
26 data.reduce((acc, r) => acc + r.error_count, 0)
27
28export const computeSuccessAndNonSuccessRates = (
29 totalRequests: number,
30 totalWarnings: number,
31 totalErrors: number
32): { successRate: number; nonSuccessRate: number } => {
33 if (totalRequests <= 0) return { successRate: 0, nonSuccessRate: 0 }
34 const nonSuccessRate = ((totalWarnings + totalErrors) / totalRequests) * 100
35 const successRate = 100 - nonSuccessRate
36 return { successRate, nonSuccessRate }
37}