ProjectUsage.metrics.ts 1.2 KB

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