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