artifacts/models/
item_schema.rs1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
5#[cfg_attr(feature = "specta", derive(specta::Type))]
6pub struct ItemSchema {
7 #[serde(rename = "name")]
9 pub name: String,
10 #[serde(rename = "code")]
12 pub code: String,
13 #[serde(rename = "level")]
15 pub level: u32,
16 #[serde(rename = "type")]
18 pub r#type: String,
19 #[serde(rename = "subtype")]
21 pub subtype: String,
22 #[serde(rename = "description")]
24 pub description: String,
25 #[serde(rename = "conditions", skip_serializing_if = "Option::is_none")]
27 pub conditions: Option<Vec<models::ConditionSchema>>,
28 #[serde(rename = "effects", skip_serializing_if = "Option::is_none")]
30 pub effects: Option<Vec<models::SimpleEffectSchema>>,
31 #[serde(rename = "craft", skip_serializing_if = "Option::is_none")]
33 pub craft: Option<Box<models::CraftSchema>>,
34 #[serde(rename = "tradeable")]
36 pub tradeable: bool,
37 #[serde(rename = "recyclable", skip_serializing_if = "Option::is_none")]
39 pub recyclable: Option<bool>,
40}
41
42impl ItemSchema {
43 pub fn new(
44 name: String,
45 code: String,
46 level: u32,
47 r#type: String,
48 subtype: String,
49 description: String,
50 tradeable: bool,
51 ) -> ItemSchema {
52 ItemSchema {
53 name,
54 code,
55 level,
56 r#type,
57 subtype,
58 description,
59 conditions: None,
60 effects: None,
61 craft: None,
62 tradeable,
63 recyclable: None,
64 }
65 }
66}