rs_plugin_common_interfaces/lookup/
mod.rs1use 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