open_library_api_rs/models/
search.rs1use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct SearchResponse<T> {
7 #[serde(default)]
8 pub num_found: u64,
9 #[serde(default)]
10 pub start: u64,
11 #[serde(default)]
12 pub num_found_exact: bool,
13 #[serde(default)]
14 pub docs: Vec<T>,
15}
16
17#[derive(Debug, Clone, Default, Serialize, Deserialize)]
19pub struct BookDoc {
20 pub key: String,
21 #[serde(default)]
22 pub title: Option<String>,
23 #[serde(default)]
24 pub subtitle: Option<String>,
25 #[serde(default)]
26 pub author_name: Option<Vec<String>>,
27 #[serde(default)]
28 pub author_key: Option<Vec<String>>,
29 #[serde(default)]
30 pub cover_i: Option<i64>,
31 #[serde(default)]
32 pub cover_edition_key: Option<String>,
33 #[serde(default)]
34 pub first_publish_year: Option<i32>,
35 #[serde(default)]
36 pub isbn: Option<Vec<String>>,
37 #[serde(default)]
38 pub lccn: Option<Vec<String>>,
39 #[serde(default)]
40 pub oclc: Option<Vec<String>>,
41 #[serde(default)]
42 pub ia: Option<Vec<String>>,
43 #[serde(default)]
44 pub has_fulltext: bool,
45 #[serde(default)]
46 pub public_scan_b: bool,
47 #[serde(default)]
48 pub edition_count: u32,
49 #[serde(default)]
50 pub language: Option<Vec<String>>,
51 #[serde(default)]
52 pub publisher: Option<Vec<String>>,
53 #[serde(default)]
54 pub subject: Option<Vec<String>>,
55 #[serde(default)]
56 pub subject_facet: Option<Vec<String>>,
57 #[serde(default)]
58 pub place: Option<Vec<String>>,
59 #[serde(default)]
60 pub person: Option<Vec<String>>,
61 #[serde(default)]
62 pub time: Option<Vec<String>>,
63}
64
65#[derive(Debug, Clone, Default, Serialize, Deserialize)]
67pub struct AuthorDoc {
68 pub key: String,
69 #[serde(default)]
70 pub name: Option<String>,
71 #[serde(default)]
72 pub alternate_names: Option<Vec<String>>,
73 #[serde(default)]
74 pub birth_date: Option<String>,
75 #[serde(default)]
76 pub death_date: Option<String>,
77 #[serde(default)]
78 pub top_work: Option<String>,
79 #[serde(default)]
80 pub work_count: Option<u32>,
81 #[serde(default)]
82 pub top_subjects: Option<Vec<String>>,
83}
84
85#[derive(Debug, Clone, Default, Serialize, Deserialize)]
87pub struct SubjectDoc {
88 pub key: String,
89 #[serde(default)]
90 pub name: Option<String>,
91 #[serde(default)]
92 pub subject_type: Option<String>,
93 #[serde(default)]
94 pub work_count: Option<u64>,
95}
96
97#[derive(Debug, Clone, Default, Serialize, Deserialize)]
99pub struct ListDoc {
100 pub key: String,
101 #[serde(default)]
102 pub name: Option<String>,
103 #[serde(default)]
104 pub edition_count: Option<u32>,
105 #[serde(default)]
106 pub seed_count: Option<u32>,
107}
108
109#[derive(Debug, Clone, Default, Serialize, Deserialize)]
111pub struct InsideDoc {
112 #[serde(default)]
113 pub ia: Option<String>,
114 #[serde(default)]
115 pub title: Option<String>,
116 #[serde(default)]
117 pub author: Option<String>,
118 #[serde(default)]
119 pub text: Option<String>,
120}
121
122#[derive(Debug, Clone, Default)]
124pub struct SearchParams {
125 pub q: Option<String>,
126 pub title: Option<String>,
127 pub author: Option<String>,
128 pub isbn: Option<String>,
129 pub subject: Option<String>,
130 pub place: Option<String>,
131 pub person: Option<String>,
132 pub language: Option<String>,
133 pub publisher: Option<String>,
134 pub page: Option<u32>,
135 pub limit: Option<u32>,
136 pub offset: Option<u32>,
137 pub sort: Option<String>,
138 pub fields: Option<String>,
139 pub lang: Option<String>,
140}
141
142#[derive(Debug, Clone, Default)]
144pub struct AuthorSearchParams {
145 pub q: Option<String>,
146 pub limit: Option<u32>,
147 pub offset: Option<u32>,
148}
149
150#[derive(Debug, Clone, Default)]
152pub struct SubjectParams {
153 pub details: Option<bool>,
154 pub ebooks: Option<bool>,
155 pub published_in: Option<String>,
156 pub limit: Option<u32>,
157 pub offset: Option<u32>,
158}