use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::entities::EmojiApiType;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PollApiType {
pub question: PollMediaApiType,
pub answers: Vec<PollAnswerApiType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiry: Option<String>,
pub allow_multiselect: bool,
pub layout_type: PollLayoutType,
#[serde(skip_serializing_if = "Option::is_none")]
pub results: Option<PollResultsApiType>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PollMediaApiType {
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub emoji: Option<EmojiApiType>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PollAnswerApiType {
pub answer_id: u32,
pub poll_media: PollMediaApiType,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PollResultsApiType {
pub is_finalized: bool,
pub answer_counts: Vec<PollAnswerCountApiType>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PollAnswerCountApiType {
pub id: u32,
pub count: u32,
pub me_voted: bool,
}
#[derive(Serialize_repr, Deserialize_repr, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
pub enum PollLayoutType {
Default = 1,
}