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 }