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