use std::time::Duration;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct HealthCheck {
#[serde(rename = "Test", skip_serializing_if = "Vec::is_empty")]
test: Vec<String>,
#[serde(rename = "Interval", skip_serializing_if = "Option::is_none")]
interval_nanos: Option<u128>,
#[serde(rename = "Timeout", skip_serializing_if = "Option::is_none")]
timeout_nanos: Option<u128>,
#[serde(rename = "Retries", skip_serializing_if = "Option::is_none")]
retries: Option<u64>,
#[serde(rename = "StartPeriod", skip_serializing_if = "Option::is_none")]
start_period_nanos: Option<u128>
}
impl HealthCheck {
pub fn test<V>(mut self, v: Vec<V>) -> Self
where V: ToString
{
self.test = v
.iter()
.map(|item| item.to_string())
.collect();
self
}
pub fn interval(mut self, v: Duration) -> Self {
self.interval_nanos = Some(v.as_nanos());
self
}
pub fn timeout(mut self, v: Duration) -> Self {
self.timeout_nanos = Some(v.as_nanos());
self
}
pub fn retries(mut self, v: u64) -> Self {
self.retries = Some(v);
self
}
pub fn start_period(mut self, v: Duration) -> Self {
self.start_period_nanos = Some(v.as_nanos());
self
}
}