use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "specta", derive(specta::Type))]
pub struct ItemSchema {
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "code")]
pub code: String,
#[serde(rename = "level")]
pub level: u32,
#[serde(rename = "type")]
pub r#type: String,
#[serde(rename = "subtype")]
pub subtype: String,
#[serde(rename = "description")]
pub description: String,
#[serde(rename = "conditions", skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<models::ConditionSchema>>,
#[serde(rename = "effects", skip_serializing_if = "Option::is_none")]
pub effects: Option<Vec<models::SimpleEffectSchema>>,
#[serde(rename = "craft", skip_serializing_if = "Option::is_none")]
pub craft: Option<Box<models::CraftSchema>>,
#[serde(rename = "tradeable")]
pub tradeable: bool,
}
impl ItemSchema {
pub fn new(
name: String,
code: String,
level: u32,
r#type: String,
subtype: String,
description: String,
tradeable: bool,
) -> ItemSchema {
ItemSchema {
name,
code,
level,
r#type,
subtype,
description,
conditions: None,
effects: None,
craft: None,
tradeable,
}
}
}