rs_plugin_common_interfaces/domain/
mod.rs1use serde::{Deserialize, Serialize};
2
3use crate::domain::{media::MediaItemReference, person::Person, tag::Tag};
4
5pub mod backup;
6pub mod book;
7pub mod element_type;
8pub mod episode;
9pub mod external_images;
10pub mod media;
11pub mod movie;
12pub mod other_ids;
13pub mod person;
14pub mod rs_ids;
15pub mod serie;
16pub mod tag;
17pub mod tools;
18
19#[cfg(feature = "rusqlite")]
20pub mod rusqlite;
21
22#[derive(Debug, Serialize, Deserialize, Clone)]
23#[serde(rename_all = "camelCase")]
24pub enum MediaElement {
25 Media(media::Media),
26 Movie(movie::Movie),
27 Episode(episode::Episode),
28 Serie(serie::Serie),
29 Book(book::Book),
30}
31
32#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq)]
33#[serde(rename_all = "camelCase")]
34pub struct ItemWithRelations<T> {
35 #[serde(flatten)]
36 pub book: T,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub people_details: Option<Vec<Person>>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub tags_details: Option<Vec<Tag>>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub people: Option<Vec<MediaItemReference>>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub tags: Option<Vec<MediaItemReference>>,
46}