rs_plugin_common_interfaces/domain/
book.rs1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::domain::rs_ids::RsIds;
5
6#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq)]
7#[serde(rename_all = "camelCase")]
8pub struct Book {
9 #[serde(default)]
10 pub id: String,
11 pub name: String,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 #[serde(rename = "type")]
14 pub kind: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub serie_ref: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub volume: Option<f64>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub chapter: Option<f64>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub year: Option<u16>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub airdate: Option<i64>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub overview: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub pages: Option<u32>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub params: Option<Value>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub lang: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub original: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub isbn13: Option<String>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub openlibrary_edition_id: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub openlibrary_work_id: Option<String>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub google_books_volume_id: Option<String>,
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub asin: Option<String>,
45 #[serde(default)]
46 pub modified: u64,
47 #[serde(default)]
48 pub added: u64,
49}
50
51impl From<Book> for RsIds {
52 fn from(value: Book) -> Self {
53 RsIds {
54 redseat: Some(value.id),
55 isbn13: value.isbn13,
56 openlibrary_edition_id: value.openlibrary_edition_id,
57 openlibrary_work_id: value.openlibrary_work_id,
58 google_books_volume_id: value.google_books_volume_id,
59 asin: value.asin,
60 volume: value.volume,
61 chapter: value.chapter,
62 ..Default::default()
63 }
64 }
65}