use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Livestream {
pub broadcaster_user_id: u64,
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<LivestreamCategoryInfo>,
pub channel_id: u64,
#[serde(default)]
pub custom_tags: Vec<String>,
pub has_mature_content: bool,
pub language: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub profile_picture: Option<String>,
pub slug: String,
pub started_at: String,
pub stream_title: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub thumbnail: Option<String>,
pub viewer_count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LivestreamCategoryInfo {
pub id: u32,
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LivestreamStats {
pub total_count: u64,
}
#[derive(Debug, Clone, Copy)]
pub enum LivestreamSort {
ViewerCount,
StartedAt,
}
impl LivestreamSort {
pub(crate) fn as_str(&self) -> &'static str {
match self {
LivestreamSort::ViewerCount => "viewer_count",
LivestreamSort::StartedAt => "started_at",
}
}
}