1use crate::impl_extra;
3
4use std::{collections::HashMap, default::Default};
6
7use serde::{Deserialize, Serialize};
9use serde_json::Value;
10
11#[derive(Deserialize, Serialize, Default, Debug, PartialEq)]
17#[serde(rename_all = "camelCase")]
18pub struct Environment {
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub report_name: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub app_name: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub app_version: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub build_id: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub build_name: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub build_number: Option<usize>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub build_url: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub repository_name: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub repository_url: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub commit: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub branch_name: Option<String>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub os_platform: Option<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub os_release: Option<String>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub os_version: Option<String>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub test_environment: Option<String>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 pub healthy: Option<bool>,
51 #[serde(default, skip_serializing_if = "HashMap::is_empty")]
52 extra: HashMap<String, Value>,
53}
54
55impl Environment {
56 pub fn new() -> Self {
58 Self::default()
59 }
60}
61
62impl_extra!(Environment);