From 08d53b80b74f3bbe9870eb0bcc0d8a39ab2e8336 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 19 Dec 2025 18:26:24 +0000 Subject: [PATCH] extract methods --- .../src/services/business/MonitorService.ts | 165 +++++++++--------- 1 file changed, 87 insertions(+), 78 deletions(-) diff --git a/server/src/services/business/MonitorService.ts b/server/src/services/business/MonitorService.ts index 32d648cd1..9035e6c45 100644 --- a/server/src/services/business/MonitorService.ts +++ b/server/src/services/business/MonitorService.ts @@ -503,84 +503,7 @@ class MonitorService implements IMonitorService { return {}; }; - // status parameter deprecated and ignored; retained for backward compatibility - getEmbedChecks = async ( - teamId: string, - monitorId: string, - range: string - ): Promise => { - const monitor = await Monitor.findOne({ _id: monitorId, teamId }); - if (!monitor) { - throw new ApiError("Monitor not found", 404); - } - - const startDate = this.getStartDate(range); - - // Route for aggregated stats (24h, 7d, 30d) - if (range === "24h" || range === "7d" || range === "30d") { - const monitorStats = await MonitorStats.findOne({ - monitorId: monitor._id, - }); - if (!monitorStats) { - throw new ApiError("Monitor stats not found", 404); - } - - const useDaily = range === "30d"; - const Model = useDaily ? StatsDaily : StatsHourly; - const endDate = new Date(); - - const docs = await Model.find({ - monitorId: monitor._id, - windowStart: { $gte: startDate, $lt: endDate }, - }) - .sort({ windowStart: -1 }) - .lean(); - - const checks = (docs as any[]).map((d) => { - const base: any = { - _id: new Date(d.windowStart).toISOString(), - count: d.count ?? 0, - avgResponseTime: d.avgResponseTime ?? 0, - upChecks: d.upChecks ?? 0, - downChecks: d.downChecks ?? 0, - avgResponseTimeUp: d.avgResponseTimeUp ?? null, - avgResponseTimeDown: d.avgResponseTimeDown ?? null, - }; - if (monitor.type === "pagespeed") { - return { - ...base, - accessibility: d.accessibility, - seo: d.seo, - bestPractices: d.bestPractices, - performance: d.performance, - cls: d.cls, - si: d.si, - fcp: d.fcp, - lcp: d.lcp, - tbt: d.tbt, - }; - } - if (monitor.type === "infrastructure") { - return { - ...base, - cpu: d.cpu, - memory: d.memory, - disk: d.disk, - host: d.host, - net: d.net, - }; - } - return base; - }); - - return { - monitor: monitor.toObject(), - checks, - stats: monitorStats, - }; - } - - // Route for raw checks (2h) + private getEmbedChecksRecent = async (monitor: IMonitor, startDate: Date) => { const endDate = new Date(); const matchStage: { "metadata.monitorId": mongoose.Types.ObjectId; @@ -682,6 +605,92 @@ class MonitorService implements IMonitorService { }; }; + private getEmbedChecksOtherRanges = async ( + monitor: IMonitor, + range: string, + startDate: Date + ) => { + const monitorStats = await MonitorStats.findOne({ + monitorId: monitor._id, + }); + if (!monitorStats) { + throw new ApiError("Monitor stats not found", 404); + } + + const useDaily = range === "30d"; + const Model = useDaily ? StatsDaily : StatsHourly; + const endDate = new Date(); + + const docs = await Model.find({ + monitorId: monitor._id, + windowStart: { $gte: startDate, $lt: endDate }, + }) + .sort({ windowStart: -1 }) + .lean(); + + const checks = (docs as any[]).map((d) => { + const base: any = { + _id: new Date(d.windowStart).toISOString(), + count: d.count ?? 0, + avgResponseTime: d.avgResponseTime ?? 0, + upChecks: d.upChecks ?? 0, + downChecks: d.downChecks ?? 0, + avgResponseTimeUp: d.avgResponseTimeUp ?? null, + avgResponseTimeDown: d.avgResponseTimeDown ?? null, + }; + if (monitor.type === "pagespeed") { + return { + ...base, + accessibility: d.accessibility, + seo: d.seo, + bestPractices: d.bestPractices, + performance: d.performance, + cls: d.cls, + si: d.si, + fcp: d.fcp, + lcp: d.lcp, + tbt: d.tbt, + }; + } + if (monitor.type === "infrastructure") { + return { + ...base, + cpu: d.cpu, + memory: d.memory, + disk: d.disk, + host: d.host, + net: d.net, + }; + } + return base; + }); + + return { + monitor: monitor.toObject(), + checks, + stats: monitorStats, + }; + }; + + getEmbedChecks = async ( + teamId: string, + monitorId: string, + range: string + ): Promise => { + const monitor = await Monitor.findOne({ _id: monitorId, teamId }); + if (!monitor) { + throw new ApiError("Monitor not found", 404); + } + + const startDate = this.getStartDate(range); + + if (range === "24h" || range === "7d" || range === "30d") { + return await this.getEmbedChecksOtherRanges(monitor, range, startDate); + } else { + return await this.getEmbedChecksRecent(monitor, startDate); + } + }; + async togglePause(userId: string, teamId: string, id: string) { const updatedMonitor = await Monitor.findOneAndUpdate( { _id: id, teamId },