open_library_api_rs/models/
list.rs1use serde::{Deserialize, Serialize};
3
4use super::common::Key;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct List {
9 pub key: String,
10 #[serde(default)]
11 pub name: Option<String>,
12 #[serde(default)]
13 pub description: Option<String>,
14 #[serde(default)]
15 pub tags: Option<Vec<String>>,
16 #[serde(default)]
17 pub seed_count: Option<u32>,
18 #[serde(default)]
19 pub edition_count: Option<u32>,
20 #[serde(default)]
21 pub last_update: Option<String>,
22 #[serde(default)]
23 pub seeds: Option<Vec<ListSeed>>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct ListSummary {
29 pub key: String,
30 #[serde(default)]
31 pub name: Option<String>,
32 #[serde(default)]
33 pub seed_count: Option<u32>,
34 #[serde(default)]
35 pub edition_count: Option<u32>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(untagged)]
41pub enum ListSeed {
42 Key(Key),
43 Subject { url: String, title: String },
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48pub struct UserLists {
49 #[serde(default)]
50 pub lists: Vec<ListSummary>,
51 #[serde(default)]
52 pub size: Option<u64>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
57pub struct ListEditions {
58 #[serde(default)]
59 pub entries: Vec<ListEditionEntry>,
60 #[serde(default)]
61 pub size: Option<u64>,
62 #[serde(default)]
63 pub links: Option<super::common::PaginationLinks>,
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
67pub struct ListEditionEntry {
68 pub key: String,
69 #[serde(default)]
70 pub title: Option<String>,
71 #[serde(default)]
72 pub covers: Option<Vec<i64>>,
73 #[serde(default)]
74 pub publish_date: Option<String>,
75}
76
77#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct ListSubjects {
80 #[serde(default)]
81 pub subjects: Vec<ListSubjectEntry>,
82 #[serde(default)]
83 pub places: Vec<ListSubjectEntry>,
84 #[serde(default)]
85 pub people: Vec<ListSubjectEntry>,
86 #[serde(default)]
87 pub times: Vec<ListSubjectEntry>,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct ListSubjectEntry {
92 pub name: String,
93 #[serde(default)]
94 pub count: Option<u32>,
95 #[serde(default)]
96 pub url: Option<String>,
97}
98
99#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct ListSeeds {
102 #[serde(default)]
103 pub entries: Vec<ListSeed>,
104 #[serde(default)]
105 pub size: Option<u64>,
106}