1use flix_model::id::{CollectionId, MovieId, ShowId};
7use flix_model::numbers::{EpisodeNumbers, SeasonNumber};
8
9pub mod library;
10
11pub mod generic;
12
13pub mod collection;
14
15pub mod movie;
16
17pub mod episode;
18pub mod season;
19pub mod show;
20
21#[derive(Debug, Clone)]
23pub enum MediaRef<ID> {
24 Id(ID),
26 Slug(String),
28}
29
30impl<ID> MediaRef<ID> {
31 pub fn into_slug(self) -> Option<String> {
33 match self {
34 MediaRef::Id(_) => None,
35 MediaRef::Slug(slug) => Some(slug),
36 }
37 }
38}
39
40#[derive(Debug)]
42pub struct CollectionScan {
43 pub parent_ref: Option<MediaRef<CollectionId>>,
45 pub id_ref: MediaRef<CollectionId>,
47 pub poster_file_name: Option<String>,
49}
50
51#[derive(Debug)]
53pub struct MovieScan {
54 pub parent_ref: Option<MediaRef<CollectionId>>,
56 pub id_ref: MediaRef<MovieId>,
58 pub media_file_name: String,
60 pub poster_file_name: Option<String>,
62}
63
64#[derive(Debug)]
66pub struct ShowScan {
67 pub parent_ref: Option<MediaRef<CollectionId>>,
69 pub id_ref: MediaRef<ShowId>,
71 pub poster_file_name: Option<String>,
73}
74
75#[derive(Debug)]
77pub struct SeasonScan {
78 pub show_ref: MediaRef<ShowId>,
80 pub season: SeasonNumber,
82 pub poster_file_name: Option<String>,
84}
85
86#[derive(Debug)]
88pub struct EpisodeScan {
89 pub show_ref: MediaRef<ShowId>,
91 pub season: SeasonNumber,
93 pub episode: EpisodeNumbers,
95 pub media_file_name: String,
97 pub poster_file_name: Option<String>,
99}