use chrono::{DateTime, Utc};
use derive_builder::Builder;
use serde::Serialize;
use uuid::Uuid;
use crate::schema::{chapter::ChapterList, feed::*, LanguageCode};
#[derive(Debug, Serialize, Clone, Builder)]
#[builder(setter(strip_option))]
#[serde(rename_all = "camelCase")]
pub struct GetMangaFeed<'a> {
#[serde(skip)]
pub manga_id: &'a Uuid,
pub limit: Option<i32>,
pub offset: Option<i32>,
#[builder(default)]
#[builder(setter(each = "add_language"))]
pub translated_language: Vec<LanguageCode>,
#[builder(default)]
pub created_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub updated_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub publish_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub order: Option<FeedOrder>,
}
impl_endpoint! {
GET ("/manga/{:x}/feed", manga_id),
#[query] GetMangaFeed<'_>,
ChapterList
}
#[derive(Debug, Serialize, Clone, Builder)]
#[builder(setter(strip_option))]
#[serde(rename_all = "camelCase")]
pub struct FollowedMangaFeed {
pub limit: Option<i32>,
pub offset: Option<i32>,
#[builder(default)]
#[builder(setter(each = "add_language"))]
pub translated_language: Vec<LanguageCode>,
#[builder(default)]
pub created_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub updated_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub publish_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub order: Option<FeedOrder>,
}
impl_endpoint! {
GET "/user/follows/manga/feed",
#[body auth] FollowedMangaFeed,
ChapterList
}
#[derive(Debug, Serialize, Clone, Builder)]
#[builder(setter(strip_option))]
#[serde(rename_all = "camelCase")]
pub struct CustomListMangaFeed<'a> {
#[serde(skip)]
pub list_id: &'a Uuid,
pub limit: Option<i32>,
pub offset: Option<i32>,
#[builder(default)]
#[builder(setter(each = "add_language"))]
pub translated_language: Vec<LanguageCode>,
#[builder(default)]
pub created_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub updated_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub publish_at_since: Option<DateTime<Utc>>,
#[builder(default)]
pub order: Option<FeedOrder>,
}
impl_endpoint! {
GET ("/list/{:x}/feed", list_id),
#[query] CustomListMangaFeed<'_>,
ChapterList
}