From 1c4077ffc3b7b9d9097ef902639357e1549c4034 Mon Sep 17 00:00:00 2001 From: Marco De Araujo Date: Tue, 23 Dec 2025 07:05:11 -0400 Subject: [PATCH] Adding heartbeats to the unified data --- src/data/unified/model.rs | 14 ++++++++++++-- src/main.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/data/unified/model.rs b/src/data/unified/model.rs index 51d8e47..a4a16e9 100644 --- a/src/data/unified/model.rs +++ b/src/data/unified/model.rs @@ -1,9 +1,11 @@ -use crate::data::heartbeat::model::{HeartbeatResponse, UptimeData}; +use crate::data::heartbeat; +use crate::data::heartbeat::model::{HeartbeatEntry, HeartbeatResponse, UptimeData}; use crate::data::status_page::model::{MonitorInfo, StatusPageResponse}; #[derive(Debug, Clone)] pub struct UnifiedMonitorData { pub monitor_info: MonitorInfo, + pub heartbeats: Vec, pub uptime_data: Option, } @@ -20,9 +22,17 @@ pub fn unify_data(status_page: &StatusPageResponse, heartbeat: &HeartbeatRespons for monitor_info in &group.monitor_list { let uptime_data = heartbeat.get_uptime(monitor_info.id, 24).cloned(); + let heartbeats = heartbeat + .monitors + .iter() + .find(|m| m.monitor_id == monitor_info.id) + .map(|m| m.heartbeats.clone()) + .unwrap_or_else(Vec::new); + monitors.push(UnifiedMonitorData { monitor_info: monitor_info.clone(), - uptime_data: uptime_data, + heartbeats, + uptime_data, }); } } diff --git a/src/main.rs b/src/main.rs index 2051f9e..d798c8b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -60,6 +60,18 @@ fn main() -> Result<()> { "Uptime Service: {}", monitor.uptime_data.expect("Formgen?").get_perc_formated() ); + println!( + "Status atual: {}", + monitor + .heartbeats + .last() + .map(|h| if h.status == 1 { + "✅ Online" + } else { + "❌ Offline" + }) + .unwrap_or("❓ Sem dados") + ); } Ok(()) }