All checks were successful
continuous-integration/drone/push Build is passing
31 lines
854 B
Rust
31 lines
854 B
Rust
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<u64>,
|
|
min_severity: Option<LogSeverity>,
|
|
device: Option<DeviceId>,
|
|
}
|
|
|
|
/// Get some logs
|
|
pub async fn get_log(req: web::Query<LogRequest>) -> 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))
|
|
}
|