Skip to main content

rs_plugin_common_interfaces/lookup/
mod.rs

1use std::collections::HashMap;
2
3use crate::domain::Relations;
4use crate::domain::book::Book;
5use crate::domain::episode::Episode;
6use crate::domain::media::Media;
7use crate::domain::movie::Movie;
8use crate::domain::person::Person;
9use crate::domain::serie::Serie;
10use crate::PluginCredential;
11use crate::{domain::rs_ids::RsIds, request::RsRequest};
12use serde::{Deserialize, Serialize};
13use strum_macros::EnumString;
14
15#[derive(
16    Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString, Default,
17)]
18#[serde(rename_all = "camelCase")]
19#[strum(serialize_all = "camelCase")]
20pub enum RsLookupSourceResult {
21    Requests(Vec<RsRequest>),
22    NotFound,
23    #[default]
24    NotApplicable,
25}
26
27#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
28#[serde(rename_all = "camelCase")]
29pub struct RsLookupPerson {
30    pub name: Option<String>,
31    pub ids: Option<RsIds>,
32}
33
34#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
35#[serde(rename_all = "camelCase")]
36pub struct RsLookupSerie {
37    pub name: Option<String>,
38    pub ids: Option<RsIds>,
39}
40
41#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
42#[serde(rename_all = "camelCase")]
43pub struct RsLookupSerieSeason {
44    pub name: Option<String>,
45    pub ids: Option<RsIds>,
46}
47
48#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
49#[serde(rename_all = "camelCase")]
50pub struct RsLookupEpisode {
51    pub name: Option<String>,
52    pub ids: Option<RsIds>,
53
54    pub season: u32,
55    pub number: Option<u32>,
56}
57
58#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
59#[serde(rename_all = "camelCase")]
60pub struct RsLookupBook {
61    pub name: Option<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: Option<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: Option<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: Option<String>,
84    pub ids: Option<RsIds>,
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(
102    Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString, Default,
103)]
104#[serde(rename_all = "camelCase")]
105#[strum(serialize_all = "camelCase")]
106pub enum RsLookupMetadataResult {
107    Book(Book),
108    Media(Media),
109    Episode(Episode),
110    Movie(Movie),
111    Person(Person),
112    Serie(Serie),
113    #[default]
114    None,
115}
116
117#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq)]
118#[serde(rename_all = "camelCase")]
119pub struct RsLookupMetadataResultWrapper {
120    pub metadata: RsLookupMetadataResult,
121
122    #[serde(skip_serializing_if = "Option::is_none")]
123    pub relations: Option<Relations>,
124    
125}
126
127#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
128#[serde(rename_all = "camelCase")]
129pub struct RsLookupWrapper {
130    pub query: RsLookupQuery,
131    pub credential: Option<PluginCredential>,
132    pub params: Option<HashMap<String, String>>,
133}