Add function to extract logs
This commit is contained in:
30
central_backend/src/server/web_api/logging_controller.rs
Normal file
30
central_backend/src/server/web_api/logging_controller.rs
Normal file
@ -0,0 +1,30 @@
|
||||
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::{web, HttpResponse};
|
||||
|
||||
#[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))
|
||||
}
|
Reference in New Issue
Block a user