From fcd9e7836779c037c3003e8e58e27f0447e36b88 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 27 Jan 2026 19:39:17 +0000 Subject: [PATCH] infra migration --- .../src/Pages/Infrastructure/Create/index.jsx | 4 +-- .../Details/Components/GaugeBoxes/index.jsx | 3 +- .../Details/Components/StatusBoxes/index.jsx | 3 +- .../Pages/Infrastructure/Details/index.jsx | 2 +- .../Components/MonitorsTable/index.jsx | 8 ++--- .../checks/MongoChecksRepistory.ts | 31 +++++-------------- server/src/types/check.ts | 1 - server/src/types/monitor.ts | 1 - 8 files changed, 16 insertions(+), 37 deletions(-) diff --git a/client/src/Pages/Infrastructure/Create/index.jsx b/client/src/Pages/Infrastructure/Create/index.jsx index 0a09105b8..936d87ab0 100644 --- a/client/src/Pages/Infrastructure/Create/index.jsx +++ b/client/src/Pages/Infrastructure/Create/index.jsx @@ -92,9 +92,7 @@ const CreateInfrastructureMonitor = () => { initializeInfrastructureMonitorForUpdate(monitor); const fetchLastCheck = async () => { try { - const { stats } = monitor ?? {}; - let latestCheck = stats?.aggregateData?.latestCheck; - let disks = latestCheck?.disk || []; + let disks = monitor?.recentChecks?.[0]?.disk || []; if (disks.length > 0) { setAvailableDisks(disks); diff --git a/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx b/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx index 7693fd32e..3859fe040 100644 --- a/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx +++ b/client/src/Pages/Infrastructure/Details/Components/GaugeBoxes/index.jsx @@ -19,8 +19,7 @@ const Gauges = ({ isLoading = false, monitor }) => { return ; } - const { stats } = monitor ?? {}; - let latestCheck = stats?.aggregateData?.latestCheck; + const latestCheck = monitor?.recentChecks?.[0]; const memoryUsagePercent = latestCheck?.memory?.usage_percent ?? 0; const memoryUsedBytes = latestCheck?.memory?.used_bytes ?? 0; const memoryTotalBytes = latestCheck?.memory?.total_bytes ?? 0; diff --git a/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx b/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx index ef91709cf..d411886c7 100644 --- a/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx +++ b/client/src/Pages/Infrastructure/Details/Components/StatusBoxes/index.jsx @@ -14,8 +14,7 @@ const InfraStatBoxes = ({ shouldRender, monitor }) => { const { determineState } = useMonitorUtils(); const { t } = useTranslation(); - const { stats } = monitor ?? {}; - const latestCheck = stats?.aggregateData?.latestCheck; + const latestCheck = monitor?.recentChecks?.[0]; // Get data from latest check const physicalCores = latestCheck?.cpu?.physical_core ?? 0; diff --git a/client/src/Pages/Infrastructure/Details/index.jsx b/client/src/Pages/Infrastructure/Details/index.jsx index 62a5c2642..6ae630822 100644 --- a/client/src/Pages/Infrastructure/Details/index.jsx +++ b/client/src/Pages/Infrastructure/Details/index.jsx @@ -127,7 +127,7 @@ const InfrastructureDetails = () => { )} {tab === "network" && ( { const processor = - ((monitor.checks[0]?.cpu?.frequency ?? 0) / 1000).toFixed(2) + " GHz"; - const cpu = (monitor?.checks[0]?.cpu.usage_percent ?? 0) * 100; - const mem = (monitor?.checks[0]?.memory.usage_percent ?? 0) * 100; - const disk = (monitor?.checks[0]?.disk[0]?.usage_percent ?? 0) * 100; + ((monitor.recentChecks?.[0]?.cpu?.frequency ?? 0) / 1000).toFixed(2) + " GHz"; + const cpu = (monitor?.recentChecks?.[0]?.cpu?.usage_percent ?? 0) * 100; + const mem = (monitor?.recentChecks?.[0]?.memory?.usage_percent ?? 0) * 100; + const disk = (monitor?.recentChecks?.[0]?.disk?.[0]?.usage_percent ?? 0) * 100; const status = determineState(monitor); const percentageColor = monitor.uptimePercentage < 0.25 diff --git a/server/src/repositories/checks/MongoChecksRepistory.ts b/server/src/repositories/checks/MongoChecksRepistory.ts index 5c792a01c..16f00778a 100644 --- a/server/src/repositories/checks/MongoChecksRepistory.ts +++ b/server/src/repositories/checks/MongoChecksRepistory.ts @@ -29,7 +29,6 @@ const dateRangeLookup: Record = { export type LatestChecksMap = Record; type DateRange = { start: Date; end: Date }; -type HardwareAggregateData = { latestCheck: CheckDocument | null; totalChecks: number }; type HardwareUpChecks = { totalChecks: number }; class MongoChecksRepository implements IChecksRepository { @@ -526,14 +525,13 @@ class MongoChecksRepository implements IChecksRepository { const monitorId = monitorObjectId.toHexString(); const dates = { start: startDate, end: endDate }; const [aggregateDataDoc, upChecksDoc, hardwareMetrics] = await Promise.all([ - this.getHardwareAggregateData(monitorId, dates), + this.getHardwareTotalChecks(monitorId, dates), this.getHardwareUpChecks(monitorId, dates), this.getHardwareStats(monitorId, dates, dateString), ]); const aggregateData = { - latestCheck: aggregateDataDoc?.latestCheck ? this.toEntity(aggregateDataDoc.latestCheck as CheckDocument) : null, - totalChecks: aggregateDataDoc?.totalChecks ?? 0, + totalChecks: aggregateDataDoc ?? 0, }; const upChecks = { @@ -589,25 +587,12 @@ class MongoChecksRepository implements IChecksRepository { }; }; - private getHardwareAggregateData = async (monitorId: string, dates: DateRange): Promise => { - const result = await CheckModel.aggregate([ - { - $match: { - "metadata.monitorId": new mongoose.Types.ObjectId(monitorId), - "metadata.type": "hardware", - createdAt: { $gte: dates.start, $lte: dates.end }, - }, - }, - { $sort: { createdAt: -1 } }, - { - $group: { - _id: null, - latestCheck: { $first: "$$ROOT" }, - totalChecks: { $sum: 1 }, - }, - }, - ]); - return result[0] || { totalChecks: 0, latestCheck: null }; + private getHardwareTotalChecks = async (monitorId: string, dates: DateRange): Promise => { + return await CheckModel.countDocuments({ + "metadata.monitorId": new mongoose.Types.ObjectId(monitorId), + "metadata.type": "hardware", + createdAt: { $gte: dates.start, $lte: dates.end }, + }); }; private getHardwareUpChecks = async (monitorId: string, dates: DateRange): Promise => { diff --git a/server/src/types/check.ts b/server/src/types/check.ts index a2c377f54..ce932d79d 100644 --- a/server/src/types/check.ts +++ b/server/src/types/check.ts @@ -121,7 +121,6 @@ export interface PageSpeedChecksResult { export interface HardwareChecksResult { monitorType: "hardware"; aggregateData: { - latestCheck: Check | null; totalChecks: number; }; upChecks: { diff --git a/server/src/types/monitor.ts b/server/src/types/monitor.ts index cdbdb7c83..b2bf360dc 100644 --- a/server/src/types/monitor.ts +++ b/server/src/types/monitor.ts @@ -78,7 +78,6 @@ export interface UptimeDetailsResult { export interface HardwareDetailsResult extends Monitor { stats: { aggregateData: { - latestCheck: import("./check.js").Check | null; totalChecks: number; }; upChecks: {