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