use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct EpisodeLink {
pub imdb_id: u64,
pub series_imdb_id: u64,
pub season: Option<u16>,
pub episode: Option<u16>
}
impl From<EpisodeLinkFromImdb> for EpisodeLink {
fn from(input: EpisodeLinkFromImdb) -> Self {
Self{
imdb_id: input.imdb_id,
series_imdb_id: input.series_imdb_id,
season: input.season,
episode: input.episode.map(|i| i as u16)
}
}
}
impl EpisodeLink {
#[allow(dead_code)] pub(crate) fn new(imdb_id: u64, series_imdb_id: u64, season: Option<u16>, episode: Option<u16>) -> Self {
Self{
imdb_id,
series_imdb_id,
season,
episode
}
}
}
#[derive(Debug, Deserialize, Eq, PartialEq)]
pub(crate) struct EpisodeLinkFromImdb {
#[serde(rename = "tconst", deserialize_with = "crate::util::parse_imdb_id")]
pub imdb_id: u64,
#[serde(rename = "parentTconst", deserialize_with = "crate::util::parse_imdb_id")]
pub series_imdb_id: u64,
#[serde(rename = "seasonNumber", deserialize_with = "crate::util::parse_janky_tsv_option")]
pub season: Option<u16>,
#[serde(rename = "episodeNumber", deserialize_with = "crate::util::parse_janky_tsv_option_u32")]
pub episode: Option<u32>
}