rs_plugin_common_interfaces/lookup/
mod.rs

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