mangadex_api_schema_rust/v5/
upload_session_file.rs

1//! Upload session file information from a response body.
2
3use mangadex_api_types::{RelationshipType, ResultType, UploadSource};
4use serde::Deserialize;
5
6use crate::{TypedAttributes, error::MangaDexError};
7
8#[derive(Clone, Debug, Deserialize, Default)]
9#[serde(rename_all = "camelCase")]
10#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
11#[non_exhaustive]
12#[cfg_attr(feature = "specta", derive(specta::Type))]
13pub struct UploadSessionFileAttributes {
14    pub original_file_name: String,
15    pub file_hash: String,
16    pub file_size: u32,
17    pub mime_type: String,
18    pub source: UploadSource,
19    pub version: u32,
20}
21
22impl TypedAttributes for UploadSessionFileAttributes {
23    const TYPE_: mangadex_api_types::RelationshipType = RelationshipType::UploadSessionFile;
24}
25
26#[derive(Clone, Debug, Deserialize)]
27#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
28#[cfg_attr(feature = "specta", derive(specta::Type))]
29#[non_exhaustive]
30pub struct UploadSessionFileData<A> {
31    #[serde(default)]
32    pub result: ResultType,
33    pub errors: Vec<MangaDexError>,
34    pub data: Vec<A>,
35}
36
37impl<A> Default for UploadSessionFileData<A> {
38    fn default() -> Self {
39        Self {
40            result: ResultType::Ok,
41            errors: Vec::default(),
42            data: Vec::default(),
43        }
44    }
45}