Skip to main content

rs_plugin_common_interfaces/lookup/
mod.rs

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