Skip to main content

rs_plugin_common_interfaces/lookup/
mod.rs

1use std::collections::HashMap;
2
3use crate::domain::book::Book;
4use crate::domain::episode::Episode;
5use crate::domain::media::Media;
6use crate::domain::movie::Movie;
7use crate::domain::person::Person;
8use crate::domain::serie::Serie;
9use crate::{domain::rs_ids::RsIds, request::RsRequest};
10use crate::PluginCredential;
11use serde::{Deserialize, Serialize};
12use strum_macros::EnumString;
13
14#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display,EnumString, Default)]
15#[serde(rename_all = "camelCase")] 
16#[strum(serialize_all = "camelCase")]
17pub enum RsLookupSourceResult {
18    Requests(Vec<RsRequest>),
19    NotFound,
20    #[default]
21    NotApplicable
22}
23
24
25#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
26#[serde(rename_all = "camelCase")] 
27pub struct RsLookupPerson {
28    pub name: Option<String>,
29    pub ids: Option<RsIds>
30}
31
32
33#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
34#[serde(rename_all = "camelCase")] 
35pub struct RsLookupSerie {
36    pub name: Option<String>,
37    pub ids: Option<RsIds>
38}
39
40#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
41#[serde(rename_all = "camelCase")] 
42pub struct RsLookupSerieSeason {
43    pub name: Option<String>,
44    pub ids: Option<RsIds>
45}
46
47#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
48#[serde(rename_all = "camelCase")] 
49pub struct RsLookupEpisode {
50    pub name: Option<String>,
51    pub ids: Option<RsIds>,
52
53    pub season: u32,
54    pub number: Option<u32>
55}
56
57#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
58#[serde(rename_all = "camelCase")] 
59pub struct RsLookupBook {
60    pub name: Option<String>,
61    pub ids: Option<RsIds>
62}
63#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
64#[serde(rename_all = "camelCase")] 
65pub struct RsLookupSong {
66    pub title: Option<String>,
67    pub author: Option<String>,
68    pub album: Option<String>,
69    pub ids: Option<RsIds>
70}
71
72#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
73#[serde(rename_all = "camelCase")] 
74pub struct RsLookupMedia {
75    pub search: Option<String>,
76    pub ids: Option<RsIds>
77}
78
79#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
80#[serde(rename_all = "camelCase")] 
81pub struct RsLookupMovie {
82    pub name: Option<String>,
83    pub ids: Option<RsIds>
84}
85
86
87#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display,EnumString)]
88#[serde(rename_all = "camelCase")] 
89#[strum(serialize_all = "camelCase")]
90pub enum RsLookupQuery {
91    Book(RsLookupBook),
92    Media(RsLookupMedia),
93    Episode(RsLookupEpisode),
94    Movie(RsLookupMovie),
95    Person(RsLookupPerson),
96    Serie(RsLookupSerie),
97    SerieSeason(RsLookupSerieSeason),
98    Song(RsLookupSong)
99}
100
101#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString)]
102#[serde(rename_all = "camelCase")] 
103#[strum(serialize_all = "camelCase")]
104pub enum RsLookupMetadataResult {
105    Book(Book),
106    Media(Media),
107    Episode(Episode),
108    Movie(Movie),
109    Person(Person),
110    Serie(Serie),
111}
112
113#[derive(Debug, Serialize, Deserialize, Clone)]
114#[serde(rename_all = "camelCase")] 
115pub struct RsLookupMetadataResultWithImages{
116    pub metadata: RsLookupMetadataResult,
117    pub images: Vec<crate::domain::external_images::ExternalImage>,
118}
119
120
121#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
122#[serde(rename_all = "camelCase")] 
123pub struct RsLookupWrapper {
124    pub query: RsLookupQuery,
125    pub credential: Option<PluginCredential>,
126    pub params: Option<HashMap<String, String>>
127
128}
129
130