use serde::{Deserialize,Serialize};
fn default_empty() -> String {
"/".to_string()
}
fn default_tracedata_items() -> Vec<TraceContent> {
Vec::new()
}
#[derive(Default,Deserialize,Serialize,Debug,Clone)]
pub struct TraceContent {
#[serde(default = "default_empty")]
pub when: String,
#[serde(default = "default_empty")]
pub sid: String,
#[serde(default = "default_empty")]
pub origin: String,
#[serde(default = "default_empty")]
pub trigger: String,
#[serde(default = "default_empty")]
pub id: String,
#[serde(default = "default_empty")]
pub info: String,
#[serde(default = "default_empty")]
pub context: String,
#[serde(default = "default_empty")]
pub role: String,
}
impl TraceContent {
#[allow(dead_code)]
pub fn to_json(&self) -> String {
serde_json::to_string(self).unwrap_or_else(|e|{
println!("Error to convert TraceContent to json: {}",e);
String::from("")
})
}
}
#[derive(Default,Deserialize,Serialize,Debug,Clone)]
pub struct TraceData {
#[serde(default = "default_empty")]
pub server: String,
#[serde(default = "default_empty")]
pub timestamp: String,
#[serde(default = "default_tracedata_items")]
pub contents: Vec<TraceContent>,
}
impl TraceData {
#[allow(dead_code)]
pub fn contents_to_json(&self) -> Vec<String> {
self.contents.clone().into_iter().map(|item| item.to_json()).collect()
}
}