blue_archive 0.5.2

A Blue Archive api wrapper for Rust, based off of SchaleDB's data: https://github.com/lonqie/SchaleDB
Documentation
use serde::{Deserialize, Serialize};
use strum_macros::{Display, EnumString};

use crate::serialization;

use super::{Rarity, Released, ID};

#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "PascalCase")]
pub struct Equipment {
    #[serde(alias = "Id")]
    pub id: ID,
    pub name: String,
    #[serde(alias = "IsReleased")]
    pub released: Released,
    #[serde(
        alias = "Desc",
        deserialize_with = "serialization::deserialize_html_encoded_string"
    )]
    pub description: String,
    pub category: EquipmentCategory,
    pub rarity: Rarity,
    pub tier: u8,
    pub icon: String,
    pub shops: Vec<Shop>,
    pub stat_type: Vec<String>,
    pub stat_value: Vec<Vec<u32>>,
    pub recipe: Option<Vec<Vec<u32>>>,
    pub recipe_cost: Option<u32>,
}

#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "PascalCase")]
pub struct Shop {
    #[serde(alias = "ShopCategory")]
    pub category: ShopCategory,
    pub released: Released,
    pub amount: u32,
    pub cost_type: CostType,
    pub cost_id: u16,
    pub cost_amount: u32,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub enum EquipmentCategory {
    Shoes,
    Hat,
    Watch,
    Badge,
    Bag,
    Charm,
    Necklace,
    Hairpin,
    Gloves,
    Exp,
    WeaponExpGrowthA,
    WeaponExpGrowthC,
    WeaponExpGrowthB,
    WeaponExpGrowthZ,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Display, EnumString)]
pub enum ShopCategory {
    General,
    #[strum(to_string = "Secret Stone Growth")]
    SecretStoneGrowth,
    #[strum(to_string = "Master Coin")]
    MasterCoin,
}

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub enum CostType {
    Currency,
    Item,
}