From 8448c9c87a91f9f0b35f45b9cc1ae437b79ecb0d Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 3 May 2024 22:57:30 +0200 Subject: pacman and success output --- src/log.rs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'src/log.rs') diff --git a/src/log.rs b/src/log.rs index 408df88..50a1895 100644 --- a/src/log.rs +++ b/src/log.rs @@ -1,5 +1,4 @@ -use crate::{mail::send_mail, Config, STATUS}; -use chrono::{DateTime, Utc}; +use crate::{mail::send_mail, Config, Status, STATUS}; use std::{ collections::{BTreeMap, VecDeque}, sync::Arc, @@ -10,43 +9,39 @@ static LAST_STATUS: RwLock> = RwLock::const_new(BTreeMap:: pub static LOG: RwLock> = RwLock::const_new(VecDeque::new()); pub struct Event { - pub time: DateTime, pub service: usize, pub check: usize, - pub error: Option, + pub status: Status, } pub async fn update_service( config: Arc, service: usize, check: usize, - error: Option<(String, String)>, + status: Status, ) -> anyhow::Result<()> { let mut last_status = LAST_STATUS.write().await; let last_status = last_status.entry(service).or_insert(true); - eprintln!("{service} {error:?}"); - let current_status = { let status = STATUS.read().await; !status .range((service, usize::MIN)..(service, usize::MAX)) - .any(|(_, v)| v.is_err()) + .any(|(_, v)| v.status.is_err()) }; if *last_status != current_status { *last_status = current_status; let mut log = LOG.write().await; log.push_front(Event { - error: error.clone().map(|(e, _)| e), + status: status.clone(), service, check, - time: Utc::now(), }); while log.len() > 32 { log.pop_back(); } - if let Some((_short, long)) = error.clone() { - send_mail(&config, service, check, long).await?; + if let Err(error) = status.status { + send_mail(&config, service, check, error).await?; } } Ok(()) -- cgit v1.2.3-70-g09d2