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: 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: 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: 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 serie: 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 title: String,
61    pub author: String,
62    pub ids: Option<RsIds>
63}
64#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
65#[serde(rename_all = "camelCase")] 
66pub struct RsLookupSong {
67    pub title: String,
68    pub author: Option<String>,
69    pub album: Option<String>,
70    pub ids: Option<RsIds>
71}
72
73#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
74#[serde(rename_all = "camelCase")] 
75pub struct RsLookupMedia {
76    pub search: String,
77    pub ids: Option<RsIds>
78}
79
80#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
81#[serde(rename_all = "camelCase")] 
82pub struct RsLookupMovie {
83    pub name: String,
84    pub ids: Option<RsIds>
85}
86
87
88#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display,EnumString)]
89#[serde(rename_all = "camelCase")] 
90#[strum(serialize_all = "camelCase")]
91pub enum RsLookupQuery {
92    Book(RsLookupBook),
93    Media(RsLookupMedia),
94    Episode(RsLookupEpisode),
95    Movie(RsLookupMovie),
96    Person(RsLookupPerson),
97    Serie(RsLookupSerie),
98    SerieSeason(RsLookupSerieSeason),
99    Song(RsLookupSong)
100}
101
102#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString)]
103#[serde(rename_all = "camelCase")] 
104#[strum(serialize_all = "camelCase")]
105pub enum RsLookupMetadataResult {
106    Book(Book),
107    Media(Media),
108    Episode(Episode),
109    Movie(Movie),
110    Person(Person),
111    Serie(Serie),
112}
113
114#[derive(Debug, Serialize, Deserialize, Clone)]
115#[serde(rename_all = "camelCase")] 
116pub struct RsLookupMetadataResultWithImages{
117    pub metadata: RsLookupMetadataResult,
118    pub images: Vec<crate::domain::external_images::ExternalImage>,
119}
120
121
122#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
123#[serde(rename_all = "camelCase")] 
124pub struct RsLookupWrapper {
125    pub query: RsLookupQuery,
126    pub credential: Option<PluginCredential>,
127    pub params: Option<HashMap<String, String>>
128
129}
130
131