librarylib/dto/
book_response.rs

1use 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 {}