librarylib/dto/
book_response.rs1use common::entity::DtoResp;
2use serde::{Deserialize, Serialize};
3use serde_json;
4use uuid::Uuid;
5
6use crate::dto::author_response::AuthorResponse;
7use crate::dto::work_response::WorkResponse;
8
9#[derive(Serialize, Deserialize, Debug, Clone)]
10#[serde(rename_all = "camelCase")]
11pub struct BookResponse {
12 pub id: Uuid,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub edition: Option<Uuid>,
15 pub organisation: Uuid,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 pub comment: Option<String>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub library: Option<Uuid>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub title: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub title_prefix: Option<String>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub subtitle: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub other_titles: Option<Vec<String>>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub authors_key: Option<Vec<String>>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub by_statement: Option<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub publish_date: Option<String>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub copyright_date: Option<String>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub edition_name: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub languages: Option<Vec<String>>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub description: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub notes: Option<String>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub genres: Option<Vec<String>>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub table_of_contents: Option<Vec<serde_json::Value>>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub work_titles: Option<Vec<String>>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub series: Option<Vec<String>>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub physical_dimensions: Option<String>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub physical_format: Option<String>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub number_of_pages: Option<i32>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub subjects: Option<Vec<String>>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub pagination: Option<String>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub lccn: Option<Vec<String>>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub ocaid: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub oclc_numbers: Option<Vec<String>>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub isbn_10: Option<Vec<String>>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub isbn_13: Option<Vec<String>>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub dewey_decimal_class: Option<Vec<String>>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub lc_classifications: Option<Vec<String>>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub contributions: Option<Vec<String>>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub publish_places: Option<Vec<String>>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub publish_country: Option<String>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub publishers: Option<Vec<String>>,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub distributors: Option<Vec<String>>,
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub first_sentence: Option<String>,
88 #[serde(skip_serializing_if = "Option::is_none")]
89 pub weight: Option<String>,
90 #[serde(skip_serializing_if = "Option::is_none")]
91 pub location: Option<Vec<String>>,
92 #[serde(skip_serializing_if = "Option::is_none")]
93 pub scan_on_demand: Option<bool>,
94 #[serde(skip_serializing_if = "Option::is_none")]
95 pub collections: Option<Vec<String>>,
96 #[serde(skip_serializing_if = "Option::is_none")]
97 pub uris: Option<Vec<String>>,
98 #[serde(skip_serializing_if = "Option::is_none")]
99 pub uri_descriptions: Option<Vec<String>>,
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub translation_of: Option<String>,
102 #[serde(skip_serializing_if = "Option::is_none")]
103 pub works_key: Option<Vec<String>>,
104 #[serde(skip_serializing_if = "Option::is_none")]
105 pub source_records: Option<Vec<String>>,
106 #[serde(skip_serializing_if = "Option::is_none")]
107 pub translated_from: Option<Vec<String>>,
108 #[serde(skip_serializing_if = "Option::is_none")]
109 pub scan_records: Option<Vec<String>>,
110 #[serde(skip_serializing_if = "Option::is_none")]
111 pub volumes: Option<Vec<serde_json::Value>>,
112 #[serde(skip_serializing_if = "Option::is_none")]
113 pub accompanying_material: Option<String>,
114 #[serde(skip_serializing_if = "Option::is_none")]
115 pub works: Option<Vec<Uuid>>,
116 #[serde(skip_serializing_if = "Option::is_none")]
117 pub authors: Option<Vec<Uuid>>,
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub revision: Option<i32>,
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub author_data: Option<Vec<AuthorResponse>>,
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub work_data: Option<Vec<WorkResponse>>,
124}
125
126impl DtoResp for BookResponse {}