open_library_api_rs/models/
subject.rs1use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct Subject {
7 pub key: String,
8 #[serde(default)]
9 pub name: Option<String>,
10 #[serde(default)]
11 pub subject_type: Option<String>,
12 #[serde(default)]
13 pub work_count: Option<u64>,
14 #[serde(default)]
15 pub works: Vec<SubjectWork>,
16 #[serde(default)]
17 pub authors: Option<Vec<SubjectAuthor>>,
18 #[serde(default)]
19 pub publishers: Option<Vec<SubjectPublisher>>,
20 #[serde(default)]
21 pub related_subjects: Option<Vec<RelatedSubject>>,
22 #[serde(default)]
23 pub publishing_history: Option<Vec<(i32, u64)>>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct SubjectWork {
29 pub key: String,
30 #[serde(default)]
31 pub title: Option<String>,
32 #[serde(default)]
33 pub cover_id: Option<i64>,
34 #[serde(default)]
35 pub cover_edition_key: Option<String>,
36 #[serde(default)]
37 pub edition_count: Option<u32>,
38 #[serde(default)]
39 pub has_fulltext: bool,
40 #[serde(default)]
41 pub public_scan: bool,
42 #[serde(default)]
43 pub ia: Option<String>,
44 #[serde(default)]
45 pub authors: Option<Vec<SubjectWorkAuthor>>,
46 #[serde(default)]
47 pub first_publish_year: Option<i32>,
48 #[serde(default)]
49 pub subject: Option<Vec<String>>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct SubjectWorkAuthor {
55 pub key: String,
56 #[serde(default)]
57 pub name: Option<String>,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct SubjectAuthor {
64 pub key: String,
65 #[serde(default)]
66 pub name: Option<String>,
67 #[serde(default)]
68 pub count: Option<u32>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
74pub struct SubjectPublisher {
75 #[serde(default)]
76 pub name: Option<String>,
77 #[serde(default)]
78 pub count: Option<u32>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
84pub struct RelatedSubject {
85 pub name: String,
86 #[serde(default)]
87 pub url: Option<String>,
88}