use serde::{Deserialize, Serialize};
pub const UNBOUNDED: &str = "..";
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct Time {
#[serde(skip_serializing_if = "Option::is_none", default)]
pub date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub timestamp: Option<String>,
#[serde(skip_serializing_if = "Option::is_none", default)]
pub interval: Option<[String; 2]>,
#[serde(flatten)]
pub foreign_members: crate::JsonObject,
}
impl Time {
pub fn date(date: impl Into<String>) -> Self {
Time {
date: Some(date.into()),
..Default::default()
}
}
pub fn timestamp(timestamp: impl Into<String>) -> Self {
Time {
timestamp: Some(timestamp.into()),
..Default::default()
}
}
pub fn interval(start: impl Into<String>, end: impl Into<String>) -> Self {
Time {
interval: Some([start.into(), end.into()]),
..Default::default()
}
}
}