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