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: 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