use crate::devices::device::DeviceId; use crate::logs::logs_manager; use crate::logs::severity::LogSeverity; use crate::server::custom_error::HttpResult; use crate::utils::time_utils::curr_day_number; use actix_web::{HttpResponse, web}; #[derive(serde::Deserialize)] pub struct LogRequest { // Day number day: Option, min_severity: Option, device: Option, } /// Get some logs pub async fn get_log(req: web::Query) -> HttpResult { let day = req.day.unwrap_or_else(curr_day_number); let mut logs = logs_manager::get_logs(day)?; if let Some(min_severity) = req.min_severity { logs.retain(|d| d.severity >= min_severity); } if let Some(dev_id) = &req.device { logs.retain(|d| d.device_id.as_ref() == Some(dev_id)); } Ok(HttpResponse::Ok().json(logs)) }