use crate::objects::entity::Entity;
use crate::objects::incentives_ineligibility_reason::IncentivesIneligibilityReason;
use crate::objects::incentives_status::IncentivesStatus;
use crate::types::custom_date_formats::custom_date_format;
use crate::types::get_entity::GetEntity;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct UmaInvitation {
#[serde(rename = "uma_invitation_id")]
pub id: String,
#[serde(with = "custom_date_format", rename = "uma_invitation_created_at")]
pub created_at: DateTime<Utc>,
#[serde(with = "custom_date_format", rename = "uma_invitation_updated_at")]
pub updated_at: DateTime<Utc>,
#[serde(rename = "uma_invitation_code")]
pub code: String,
#[serde(rename = "uma_invitation_url")]
pub url: String,
#[serde(rename = "uma_invitation_inviter_uma")]
pub inviter_uma: String,
#[serde(rename = "uma_invitation_invitee_uma")]
pub invitee_uma: Option<String>,
#[serde(rename = "uma_invitation_incentives_status")]
pub incentives_status: IncentivesStatus,
#[serde(rename = "uma_invitation_incentives_ineligibility_reason")]
pub incentives_ineligibility_reason: Option<IncentivesIneligibilityReason>,
#[serde(rename = "__typename")]
pub typename: String,
}
impl Entity for UmaInvitation {
fn get_id(&self) -> String {
self.id.clone()
}
fn get_created_at(&self) -> DateTime<Utc> {
self.created_at
}
fn get_updated_at(&self) -> DateTime<Utc> {
self.updated_at
}
fn type_name(&self) -> &'static str {
"UmaInvitation"
}
}
impl GetEntity for UmaInvitation {
fn get_entity_query() -> String {
format!(
"
query GetEntity($id: ID!) {{
entity(id: $id) {{
... on UmaInvitation {{
... UmaInvitationFragment
}}
}}
}}
{}",
FRAGMENT
)
}
}
pub const FRAGMENT: &str = "
fragment UmaInvitationFragment on UmaInvitation {
__typename
uma_invitation_id: id
uma_invitation_created_at: created_at
uma_invitation_updated_at: updated_at
uma_invitation_code: code
uma_invitation_url: url
uma_invitation_inviter_uma: inviter_uma
uma_invitation_invitee_uma: invitee_uma
uma_invitation_incentives_status: incentives_status
uma_invitation_incentives_ineligibility_reason: incentives_ineligibility_reason
}
";