bangumi_api/module/collection/
model.rs1use serde::{Deserialize, Serialize};
2use serde_repr::{Deserialize_repr, Serialize_repr};
3
4use crate::module::{
5 character::model::CharacterType,
6 episode::model::Episode,
7 model::{Image, SimpleImage, Tag},
8 person::model::{PersonCareer, PersonType},
9 subject::model::SubjectType,
10};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
16pub struct CollectionStats {
17 pub wish: Option<u32>,
19 pub collect: Option<u32>,
21 pub doing: Option<u32>,
23 pub on_hold: Option<u32>,
25 pub dropped: Option<u32>,
27}
28
29#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
33#[repr(u8)]
34pub enum CollectionType {
35 Wish = 1,
37 Done = 2,
39 Doing = 3,
41 OnHold = 4,
43 Dropped = 5,
45}
46
47#[derive(Debug, Clone, Serialize_repr, Deserialize_repr)]
51#[repr(u8)]
52pub enum CollectionEpisodeType {
53 Not = 0,
55 Wish = 1,
57 Done = 2,
59 Dropped = 3,
61}
62
63#[derive(Debug, Clone, Serialize, Deserialize)]
67pub struct CollectionSubjectUpdate {
68 pub r#type: Option<CollectionType>,
70 pub rate: Option<u32>,
72 pub ep_status: Option<u32>,
74 pub vol_status: Option<u32>,
76 pub comment: Option<String>,
78 pub private: Option<bool>,
80 pub tags: Option<Vec<String>>,
82}
83
84#[derive(Debug, Clone, Serialize, Deserialize)]
88pub struct CollectionEpisode {
89 pub episode: Episode,
91 pub r#type: CollectionEpisodeType,
93 pub updated_at: u32,
95}
96
97#[derive(Debug, Clone, Serialize, Deserialize)]
101pub struct CollectionCharacter {
102 pub id: u32,
104 pub name: String,
106 pub r#type: CharacterType,
108 pub images: Option<SimpleImage>,
110 pub created_at: String,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
118pub struct CollectionPerson {
119 pub id: u32,
121 pub name: String,
123 pub r#type: PersonType,
125 pub career: Option<Vec<PersonCareer>>,
127 pub images: Option<SimpleImage>,
129 pub created_at: String,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct CollectionSubject {
138 pub subject_id: u32,
140 pub subject_type: SubjectType,
142 pub rate: u32,
144 pub r#type: CollectionType,
146 pub comment: Option<String>,
148 pub tags: Vec<String>,
150 pub ep_status: u32,
152 pub vol_status: u32,
154 pub updated_at: String,
156 pub private: bool,
158 pub subject: Option<UserSubject>,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize)]
166pub struct UserSubject {
167 pub id: u32,
169 pub r#type: SubjectType,
171 pub name: String,
173 pub name_cn: String,
175 pub short_summary: String,
177 pub date: String,
179 pub images: Image,
181 pub volumes: u32,
183 pub eps: u32,
185 pub collection_total: u32,
187 pub score: f64,
189 pub rank: u32,
191 pub tags: Vec<Tag>,
193}
194
195#[derive(Debug, Clone, Serialize, Deserialize)]
199pub struct CollectionEpisodesUpdate {
200 pub episode_id: Vec<u32>,
202 pub r#type: CollectionEpisodeType,
204}
205
206#[derive(Debug, Clone, Serialize, Deserialize)]
210pub struct CollectionEpisodeUpdate {
211 pub r#type: CollectionEpisodeType,
213}