use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct LogEntry {
pub time: String,
pub service: String,
pub level: String,
pub message: String,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct LogSearchReq {
pub query: Option<String>,
pub start_timestamp: Option<i64>,
pub end_timestamp: Option<i64>,
#[serde(default = "LogSearchReq::default_start_offset")]
pub start_offset: usize,
#[serde(default = "LogSearchReq::default_max_hits")]
pub max_hits: usize,
pub aggs: Option<serde_json::Value>,
pub sort_by: Option<String>,
}
impl LogSearchReq {
fn default_start_offset() -> usize {
0
}
fn default_max_hits() -> usize {
10
}
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct LogSearchRes<T> {
pub num_hits: usize,
pub hits: Vec<T>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aggregations: Option<serde_json::Value>,
}