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::request::RsGroupDownload;
12use crate::{domain::rs_ids::RsIds, request::RsRequest};
13use serde::{Deserialize, Serialize};
14use strum_macros::EnumString;
15
16#[derive(
17    Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString, Default,
18)]
19#[serde(rename_all = "camelCase")]
20#[strum(serialize_all = "camelCase")]
21pub enum RsLookupSourceResult {
22    Requests(Vec<RsRequest>),
23    GroupRequest(Vec<RsGroupDownload>),
24    NotFound,
25    #[default]
26    NotApplicable,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
30#[serde(rename_all = "camelCase")]
31pub struct RsLookupPerson {
32    pub name: Option<String>,
33    pub ids: Option<RsIds>,
34}
35
36#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
37#[serde(rename_all = "camelCase")]
38pub struct RsLookupSerie {
39    pub name: Option<String>,
40    pub ids: Option<RsIds>,
41}
42
43#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
44#[serde(rename_all = "camelCase")]
45pub struct RsLookupSerieSeason {
46    pub name: Option<String>,
47    pub ids: Option<RsIds>,
48}
49
50#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
51#[serde(rename_all = "camelCase")]
52pub struct RsLookupEpisode {
53    pub name: Option<String>,
54    pub ids: Option<RsIds>,
55
56    pub season: u32,
57    pub number: Option<u32>,
58}
59
60#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
61#[serde(rename_all = "camelCase")]
62pub struct RsLookupBook {
63    pub name: Option<String>,
64    pub ids: Option<RsIds>,
65}
66#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
67#[serde(rename_all = "camelCase")]
68pub struct RsLookupSong {
69    pub title: Option<String>,
70    pub author: Option<String>,
71    pub album: Option<String>,
72    pub ids: Option<RsIds>,
73}
74
75#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
76#[serde(rename_all = "camelCase")]
77pub struct RsLookupMedia {
78    pub search: Option<String>,
79    pub ids: Option<RsIds>,
80}
81
82#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
83#[serde(rename_all = "camelCase")]
84pub struct RsLookupMovie {
85    pub name: Option<String>,
86    pub ids: Option<RsIds>,
87}
88
89#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString)]
90#[serde(rename_all = "camelCase")]
91#[strum(serialize_all = "camelCase")]
92pub enum RsLookupQuery {
93    Book(RsLookupBook),
94    Media(RsLookupMedia),
95    Episode(RsLookupEpisode),
96    Movie(RsLookupMovie),
97    Person(RsLookupPerson),
98    Serie(RsLookupSerie),
99    SerieSeason(RsLookupSerieSeason),
100    Song(RsLookupSong),
101}
102
103#[derive(
104    Debug, Serialize, Deserialize, Clone, PartialEq, strum_macros::Display, EnumString, Default,
105)]
106#[serde(rename_all = "camelCase")]
107#[strum(serialize_all = "camelCase")]
108pub enum RsLookupMetadataResult {
109    Book(Book),
110    Media(Media),
111    Episode(Episode),
112    Movie(Movie),
113    Person(Person),
114    Serie(Serie),
115    #[default]
116    None,
117}
118
119#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq)]
120#[serde(rename_all = "camelCase")]
121pub struct RsLookupMetadataResultWrapper {
122    pub metadata: RsLookupMetadataResult,
123
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub relations: Option<Relations>,
126    
127}
128
129#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
130#[serde(rename_all = "camelCase")]
131pub struct RsLookupWrapper {
132    pub query: RsLookupQuery,
133    pub credential: Option<PluginCredential>,
134    pub params: Option<HashMap<String, String>>,
135}