use serde::{Deserialize, Serialize};
use tosho_macros::AutoGetter;
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunIssue {
id: u32,
uuid: String,
title: String,
slug: String,
#[serde(rename = "books_are_resellable")]
is_resellable: bool,
#[serde(rename = "books_are_remarquable")]
is_remarquable: bool,
#[serde(rename = "books_are_downloadable")]
is_downloadable: bool,
#[serde(
serialize_with = "super::datetime::serialize_opt_yyyymmdd",
deserialize_with = "super::datetime::deserialize_opt_yyyymmdd"
)]
start_date: Option<chrono::NaiveDate>,
#[serde(
serialize_with = "super::datetime::serialize_opt_yyyymmdd",
deserialize_with = "super::datetime::deserialize_opt_yyyymmdd"
)]
end_date: Option<chrono::NaiveDate>,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunDetailed {
id: u32,
uuid: String,
title: String,
slug: String,
issues_count: u32,
publisher: super::common::Publisher,
cover: Option<super::common::ImageUrl>,
#[serde(
serialize_with = "super::datetime::serialize_opt_yyyymmdd",
deserialize_with = "super::datetime::deserialize_opt_yyyymmdd"
)]
start_date: Option<chrono::NaiveDate>,
#[serde(
serialize_with = "super::datetime::serialize_opt_yyyymmdd",
deserialize_with = "super::datetime::deserialize_opt_yyyymmdd"
)]
end_date: Option<chrono::NaiveDate>,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunEditionIssueRange {
min: Option<String>,
max: Option<String>,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunEdition {
id: u32,
uuid: String,
title: String,
#[serde(rename = "volume_number")]
volume: Option<String>,
price_usd: u64,
cover: super::common::ImageUrl,
issue_range: SeriesRunEditionIssueRange,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunBanner {
#[serde(rename = "series_run_banner_url")]
url: String,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunWithEditions {
id: u32,
uuid: String,
title: String,
slug: String,
banner: Option<SeriesRunBanner>,
description: Option<String>,
issues_count: u32,
#[serde(rename = "collected_editions_count")]
editions_count: u32,
#[serde(rename = "collected_editions")]
editions: Vec<SeriesRunEdition>,
publisher: super::common::Publisher,
#[serde(rename = "publisher_imprint")]
imprint: Option<super::common::Imprint>,
#[serde(
serialize_with = "super::datetime::serialize_opt_yyyymmdd",
deserialize_with = "super::datetime::deserialize_opt_yyyymmdd"
)]
start_date: Option<chrono::NaiveDate>,
#[serde(
serialize_with = "super::datetime::serialize_opt_yyyymmdd",
deserialize_with = "super::datetime::deserialize_opt_yyyymmdd"
)]
end_date: Option<chrono::NaiveDate>,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunList {
#[serde(rename = "pages_count")]
pages: u32,
#[serde(rename = "total_count")]
count: u64,
#[serde(rename = "series_run")]
data: Vec<SeriesRunDetailed>,
}
#[derive(Debug, Clone, AutoGetter, Serialize, Deserialize)]
pub struct SeriesRunWithEditionsResponse {
#[serde(rename = "series_run")]
#[deref_clone]
data: SeriesRunWithEditions,
}