mangadex_api_schema_rust/v5/
chapter.rs1use serde::Deserialize;
2use url::Url;
3use uuid::Uuid;
4
5use crate::deserialize_null_default;
6use mangadex_api_types::{Language, MangaDexDateTime};
7
8#[derive(Clone, Debug, Deserialize, PartialEq)]
11#[serde(rename_all = "camelCase")]
12#[cfg_attr(feature = "non_exhaustive", non_exhaustive)]
13#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
14#[cfg_attr(feature = "specta", derive(specta::Type))]
15pub struct ChapterAttributes {
16 #[serde(deserialize_with = "deserialize_null_default")]
18 pub title: Option<String>,
19 pub volume: Option<String>,
21 pub chapter: Option<String>,
23 pub pages: u32,
25 pub translated_language: Language,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub uploader: Option<Uuid>,
29 pub external_url: Option<Url>,
31 pub version: u32,
32 #[cfg_attr(
34 feature = "serialize",
35 serde(serialize_with = "crate::v5::mangadex_datetime_serialize")
36 )]
37 pub created_at: MangaDexDateTime,
38 #[cfg_attr(
40 feature = "serialize",
41 serde(serialize_with = "crate::v5::mangadex_datetime_serialize_option")
42 )]
43 pub updated_at: Option<MangaDexDateTime>,
44 #[cfg_attr(feature = "specta", specta(type = String))]
46 #[cfg_attr(
47 feature = "serialize",
48 serde(serialize_with = "crate::v5::mangadex_datetime_serialize_option")
49 )]
50 pub publish_at: Option<MangaDexDateTime>,
51 #[cfg_attr(feature = "specta", specta(type = String))]
53 #[cfg_attr(
54 feature = "serialize",
55 serde(serialize_with = "crate::v5::mangadex_datetime_serialize_option")
56 )]
57 pub readable_at: Option<MangaDexDateTime>,
58}