use crate::impl_extra;
use std::{collections::HashMap, default::Default};
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Deserialize, Serialize, Default, Debug, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct Environment {
#[serde(skip_serializing_if = "Option::is_none")]
pub report_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub build_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub build_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub build_number: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub build_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repository_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub repository_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub commit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub branch_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub os_platform: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub os_release: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub os_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub test_environment: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub healthy: Option<bool>,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
extra: HashMap<String, Value>,
}
impl Environment {
pub fn new() -> Self {
Self::default()
}
}
impl_extra!(Environment);