anilist_moe 0.4.0

Anilist_Moe is a Rust Wrapper for the Anilist API. This library allows you to seamlessly interact with Anilist's Public API with and without authentication. This currently supports Anime, Manga, Users, Staff, Forum, Threads, Recommendations, Reviews and User Activities
Documentation
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;

use crate::objects::{
    character::CharacterConnection,
    common::{FuzzyDate, PageInfo},
    media::MediaConnection,
    user::User,
};

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Staff {
    pub id: i32,
    pub name: Option<StaffName>,
    pub language_v2: Option<String>,
    pub image: Option<StaffImage>,
    pub description: Option<String>,
    pub primary_occupations: Option<Vec<String>>,
    pub gender: Option<String>,
    pub date_of_birth: Option<FuzzyDate>,
    pub date_of_death: Option<FuzzyDate>,
    pub age: Option<i32>,
    pub years_active: Option<Vec<i32>>,
    pub home_town: Option<String>,
    pub blood_type: Option<String>,
    pub is_favourite: Option<bool>,
    pub is_favourite_blocked: Option<bool>,
    pub site_url: Option<String>,
    pub staff_media: Option<MediaConnection>,
    pub characters: Option<CharacterConnection>,
    pub character_media: Option<MediaConnection>,
    pub staff: Box<Option<Staff>>,
    pub submitter: Option<User>,
    pub submission_status: Option<i32>,
    pub submission_notes: Option<String>,
    pub favourites: Option<i32>,
    pub mod_notes: Option<String>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StaffConnection {
    pub edges: Option<Vec<StaffEdge>>,
    pub nodes: Option<Vec<Staff>>,
    pub page_info: Option<PageInfo>,
    pub total_count: Option<i32>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StaffEdge {
    pub node: Option<Staff>,
    pub id: Option<i32>,
    pub role: Option<String>,
    pub favourite_order: Option<i32>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StaffImage {
    pub large: Option<String>,
    pub medium: Option<String>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StaffName {
    pub first: Option<String>,
    pub middle: Option<String>,
    pub last: Option<String>,
    pub full: Option<String>,
    pub native: Option<String>,
    pub alternative: Option<Vec<String>>,
    pub user_preferred: Option<String>,
}

#[skip_serializing_none]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct StaffRoleType {
    pub voice_actor: Option<Staff>,
    pub role_notes: Option<String>,
    pub dub_group: Option<String>,
}