content.rs
 1  use serde_with::DisplayFromStr;
 2  use serde_with::serde_as;
 3  
 4  #[serde_as]
 5  #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
 6  pub struct Content {
 7      pub(crate) version: u64,
 8      pub(crate) timestamp: time::OffsetDateTime,
 9  
10      #[serde_as(as = "Option<DisplayFromStr>")]
11      pub(crate) mime: Option<mime::Mime>,
12      pub(crate) payload: Option<super::PayloadId>,
13  }
14  
15  impl From<distrox_model::content::Content> for Content {
16      fn from(value: distrox_model::content::Content) -> Self {
17          Self {
18              version: value.version,
19              timestamp: value.timestamp,
20              mime: value.mime,
21              payload: value.payload.map(Into::into),
22          }
23      }
24  }
25  
26  impl From<Content> for distrox_model::content::Content {
27      fn from(value: Content) -> Self {
28          Self {
29              version: value.version,
30              timestamp: value.timestamp,
31              mime: value.mime,
32              payload: value.payload.map(distrox_model::payload::PayloadId::from),
33          }
34      }
35  }