open_library_api_rs/models/
author.rs1use serde::{Deserialize, Serialize};
3
4use super::common::{Key, Link, TextOrValue};
5use super::work::DateValue;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct Author {
10 pub key: String,
11 #[serde(default)]
12 pub name: Option<String>,
13 #[serde(default)]
14 pub personal_name: Option<String>,
15 #[serde(default)]
16 pub alternate_names: Option<Vec<String>>,
17 #[serde(default)]
18 pub birth_date: Option<String>,
19 #[serde(default)]
20 pub death_date: Option<String>,
21 #[serde(default)]
22 pub bio: Option<TextOrValue>,
23 #[serde(default)]
24 pub location: Option<String>,
25 #[serde(default)]
26 pub photos: Option<Vec<i64>>,
27 #[serde(default)]
28 pub links: Option<Vec<Link>>,
29 #[serde(default)]
30 pub wikipedia: Option<String>,
31 #[serde(default)]
32 pub created: Option<DateValue>,
33 #[serde(default)]
34 pub last_modified: Option<DateValue>,
35 #[serde(default)]
36 pub latest_revision: Option<i64>,
37 #[serde(default)]
38 pub revision: Option<i64>,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct AuthorSummary {
44 pub key: String,
45 #[serde(default)]
46 pub name: Option<String>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct AuthorWorks {
52 #[serde(default)]
53 pub entries: Vec<AuthorWorkEntry>,
54 #[serde(default)]
55 pub links: Option<super::common::PaginationLinks>,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct AuthorWorkEntry {
61 pub key: String,
62 #[serde(default)]
63 pub title: Option<String>,
64 #[serde(default)]
65 pub covers: Option<Vec<i64>>,
66 #[serde(default)]
67 pub authors: Option<Vec<Key>>,
68 #[serde(default)]
69 pub first_publish_date: Option<String>,
70 #[serde(default)]
71 pub subjects: Option<Vec<String>>,
72}