identity_iota_core/document/
iota_document_metadata.rsuse core::fmt::Debug;
use core::fmt::Display;
use core::fmt::Formatter;
use identity_core::common::Object;
use identity_core::common::Timestamp;
use identity_core::convert::FmtJson;
use serde::Deserialize;
use serde::Serialize;
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
pub struct IotaDocumentMetadata {
#[serde(skip_serializing_if = "Option::is_none")]
pub created: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub updated: Option<Timestamp>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deactivated: Option<bool>,
#[serde(rename = "governorAddress", skip_serializing_if = "Option::is_none")]
pub governor_address: Option<String>,
#[serde(rename = "stateControllerAddress", skip_serializing_if = "Option::is_none")]
pub state_controller_address: Option<String>,
#[serde(flatten)]
properties: Object,
}
impl IotaDocumentMetadata {
pub fn new() -> Self {
let now: Timestamp = Timestamp::now_utc();
Self {
created: Some(now),
updated: Some(now),
deactivated: None,
governor_address: None,
state_controller_address: None,
properties: Object::default(),
}
}
pub fn properties(&self) -> &Object {
&self.properties
}
pub fn properties_mut(&mut self) -> &mut Object {
&mut self.properties
}
}
impl Default for IotaDocumentMetadata {
fn default() -> Self {
Self::new()
}
}
impl Display for IotaDocumentMetadata {
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
self.fmt_json(f)
}
}