use serde::{Deserialize, Serialize};
use super::common::Child;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum PodcastStatus {
New,
Downloading,
Completed,
Error,
Deleted,
Skipped,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastChannel {
pub id: String,
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cover_art: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub original_image_url: Option<String>,
pub status: PodcastStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
#[serde(default)]
pub episode: Vec<PodcastEpisode>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastEpisode {
#[serde(flatten)]
pub child: Child,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream_id: Option<String>,
pub channel_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
pub status: PodcastStatus,
#[serde(skip_serializing_if = "Option::is_none")]
pub publish_date: Option<String>,
}