nyauser_types/
series.rs

1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::{Episode, ParsedSearchResult, PullState};
6
7fn default_relocate_season() -> bool {
8    true
9}
10
11#[derive(Serialize, Deserialize, Clone)]
12pub struct Series {
13    pub name: String,
14    /// profile name to search for this series
15    pub profile: String,
16    /// override for `SearchConfig::max_days_old`
17    pub max_days_old: Option<u64>,
18    /// if set, overrides `Profile::relocate`/<series-name> default path
19    pub relocate: Option<String>,
20    /// if true, `Season X` is appended to the relocate path
21    #[serde(default = "default_relocate_season")]
22    pub relocate_season: bool,
23}
24
25#[derive(Serialize, Deserialize, Clone)]
26pub struct SeriesStatus {
27    #[serde(flatten)]
28    pub series: Series,
29    pub seasons: BTreeMap<u32, SeasonStatus>,
30}
31
32#[derive(Default, Serialize, Deserialize, Clone)]
33pub struct SeasonStatus {
34    pub episodes: BTreeMap<Episode, EpisodeStatus>,
35}
36
37#[derive(Serialize, Deserialize, Clone)]
38pub struct EpisodeStatus {
39    pub state: PullState,
40    pub source: ParsedSearchResult,
41}