From 0cf8cfa5dc21dbe4bd210336e3b7a8d39ce4b60b Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 28 Jul 2026 11:13:35 -0700 Subject: [PATCH] add avg timing phases to details response --- .../domain/checks/check.repository.mongo.ts | 21 ++++++++++++++++++- server/src/domain/checks/check.type.ts | 11 +++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/server/src/domain/checks/check.repository.mongo.ts b/server/src/domain/checks/check.repository.mongo.ts index 9767947d9..2374107d9 100644 --- a/server/src/domain/checks/check.repository.mongo.ts +++ b/server/src/domain/checks/check.repository.mongo.ts @@ -445,11 +445,30 @@ class MongoChecksRepository implements IChecksRepository { $dateToString: { format: dateString, date: "$createdAt" }, }, avgResponseTime: { $avg: "$responseTime" }, + avgDns: { $avg: "$timings.phases.dns" }, + avgTcp: { $avg: "$timings.phases.tcp" }, + avgTls: { $avg: "$timings.phases.tls" }, + avgRequest: { $avg: "$timings.phases.request" }, + avgFirstByte: { $avg: "$timings.phases.firstByte" }, + avgDownload: { $avg: "$timings.phases.download" }, totalChecks: { $sum: 1 }, }, }, { $sort: { _id: 1 } }, - { $project: { bucketDate: "$_id", avgResponseTime: 1, totalChecks: 1, _id: 0 } }, + { + $project: { + bucketDate: "$_id", + avgResponseTime: 1, + totalChecks: 1, + avgDns: { $ifNull: ["$avgDns", 0] }, + avgTcp: { $ifNull: ["$avgTcp", 0] }, + avgTls: { $ifNull: ["$avgTls", 0] }, + avgRequest: { $ifNull: ["$avgRequest", 0] }, + avgFirstByte: { $ifNull: ["$avgFirstByte", 0] }, + avgDownload: { $ifNull: ["$avgDownload", 0] }, + _id: 0, + }, + }, ], groupedUpChecks: [ { $match: { status: true } }, diff --git a/server/src/domain/checks/check.type.ts b/server/src/domain/checks/check.type.ts index faac84cef..911629e92 100644 --- a/server/src/domain/checks/check.type.ts +++ b/server/src/domain/checks/check.type.ts @@ -132,6 +132,15 @@ export interface GroupedCheck { totalChecks: number; } +export interface GroupedUptimeCheck extends GroupedCheck { + avgDns: number; + avgTcp: number; + avgTls: number; + avgRequest: number; + avgFirstByte: number; + avgDownload: number; +} + export interface PageSpeedGroupedCheck { bucketDate: string; performance: number; @@ -143,7 +152,7 @@ export interface PageSpeedGroupedCheck { export interface UptimeChecksResult { monitorType: Exclude; - groupedChecks: GroupedCheck[]; + groupedChecks: GroupedUptimeCheck[]; groupedUpChecks: GroupedCheck[]; groupedDownChecks: GroupedCheck[]; uptimePercentage: number;