1use crate::impl_extra;
3
4use std::collections::HashMap;
6
7use serde::{Deserialize, Serialize};
9use serde_json::Value;
10
11#[derive(Serialize, Deserialize, Default, Debug, PartialEq)]
14#[serde(rename_all = "camelCase")]
15pub struct Baseline {
16 pub report_id: String,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub source: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub timestamp: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub build_name: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub build_number: Option<u64>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub build_url: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub commit: Option<String>,
29 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
30 extra: HashMap<String, Value>,
31}
32
33impl Baseline {
34 pub fn new(report_id: String) -> Self {
36 Self {
37 report_id,
38 ..Default::default()
39 }
40 }
41}
42
43impl_extra!(Baseline);