Skip to main content

provenant/output_schema/
party.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug, Clone)]
4pub struct OutputParty {
5    pub r#type: Option<String>,
6    pub role: Option<String>,
7    pub name: Option<String>,
8    pub email: Option<String>,
9    pub url: Option<String>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub organization: Option<String>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub organization_url: Option<String>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub timezone: Option<String>,
16}
17
18impl From<&crate::models::Party> for OutputParty {
19    fn from(value: &crate::models::Party) -> Self {
20        Self {
21            r#type: value.r#type.clone(),
22            role: value.role.clone(),
23            name: value.name.clone(),
24            email: value.email.clone(),
25            url: value.url.clone(),
26            organization: value.organization.clone(),
27            organization_url: value.organization_url.clone(),
28            timezone: value.timezone.clone(),
29        }
30    }
31}
32
33impl TryFrom<&OutputParty> for crate::models::Party {
34    type Error = String;
35    fn try_from(value: &OutputParty) -> Result<Self, Self::Error> {
36        Ok(Self {
37            r#type: value.r#type.clone(),
38            role: value.role.clone(),
39            name: value.name.clone(),
40            email: value.email.clone(),
41            url: value.url.clone(),
42            organization: value.organization.clone(),
43            organization_url: value.organization_url.clone(),
44            timezone: value.timezone.clone(),
45        })
46    }
47}