From 290ee7d2df5913620b27219392c01787561db4a7 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 Jan 2026 18:50:08 +0000 Subject: [PATCH] proper parsing --- .../monitors/MongoMonitorsRepository.ts | 31 +++++++++++++++++-- .../service/infrastructure/statusService.ts | 1 - 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/server/src/repositories/monitors/MongoMonitorsRepository.ts b/server/src/repositories/monitors/MongoMonitorsRepository.ts index 9aeca380a..979758308 100644 --- a/server/src/repositories/monitors/MongoMonitorsRepository.ts +++ b/server/src/repositories/monitors/MongoMonitorsRepository.ts @@ -1,6 +1,6 @@ import { MonitorModel } from "@/db/models/index.js"; import type { MonitorDocument } from "@/db/models/index.js"; -import type { Monitor, MonitorsSummary, MonitorWithChecks, Check } from "@/types/index.js"; +import type { Monitor, MonitorsSummary, MonitorWithChecks, CheckSnapshot, Check } from "@/types/index.js"; import mongoose, { type FilterQuery, type PipelineStage } from "mongoose"; import type { IMonitorsRepository, TeamQueryConfig, SummaryConfig } from "./IMonitorsRepository.js"; import { AppError } from "@/utils/AppError.js"; @@ -309,7 +309,7 @@ class MongoMonitorsRepository implements IMonitorsRepository { selectedDisks: doc.selectedDisks ?? [], gameId: doc.gameId ?? undefined, group: doc.group ?? null, - recentChecks: (doc.recentChecks ?? []).map((check: any) => ({ ...check, createdAt: check.createdAt instanceof Date ? check.createdAt.toISOString() : check.createdAt })), + recentChecks: (doc.recentChecks ?? []).map((check: any) => this.toCheckSnapshot(check)), createdAt: toDateString(doc.createdAt), updatedAt: toDateString(doc.updatedAt), }; @@ -393,12 +393,37 @@ class MongoMonitorsRepository implements IMonitorsRepository { selectedDisks: doc.selectedDisks ?? [], gameId: doc.gameId ?? undefined, group: doc.group ?? null, - recentChecks: (doc.recentChecks ?? []).map((check: any) => ({ ...check, createdAt: check.createdAt instanceof Date ? check.createdAt.toISOString() : check.createdAt })), + recentChecks: (doc.recentChecks ?? []).map((check: any) => this.toCheckSnapshot(check)), createdAt: toDateString(doc.createdAt), updatedAt: toDateString(doc.updatedAt), checks, }; }; + + private toCheckSnapshot = (doc: any): CheckSnapshot => { + const plain = typeof doc.toObject === "function" ? doc.toObject() : doc; + return { + id: plain.id ?? plain._id?.toString() ?? "", + status: plain.status, + responseTime: plain.responseTime, + timings: plain.timings, + statusCode: plain.statusCode, + message: plain.message, + cpu: plain.cpu, + memory: plain.memory, + disk: plain.disk, + host: plain.host, + errors: plain.errors, + capture: plain.capture, + net: plain.net, + accessibility: plain.accessibility, + bestPractices: plain.bestPractices, + seo: plain.seo, + performance: plain.performance, + audits: plain.audits, + createdAt: plain.createdAt instanceof Date ? plain.createdAt.toISOString() : plain.createdAt, + }; + }; } export default MongoMonitorsRepository; diff --git a/server/src/service/infrastructure/statusService.ts b/server/src/service/infrastructure/statusService.ts index 64b14d795..0e1011278 100755 --- a/server/src/service/infrastructure/statusService.ts +++ b/server/src/service/infrastructure/statusService.ts @@ -180,7 +180,6 @@ export class StatusService implements IStatusService { monitor.statusWindow.shift(); } - // Update recentChecks with check snapshot (excludes metadata, ack, expiry, __v, updatedAt) const checkSnapshot: CheckSnapshot = { id: check.id, status: check.status,