artifacts/models/
event_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 EventSchema {
7 #[serde(rename = "name")]
9 pub name: String,
10 #[serde(rename = "code")]
12 pub code: String,
13 #[serde(rename = "content", skip_serializing_if = "Option::is_none")]
15 pub content: Option<Box<models::EventContentSchema>>,
16 #[serde(rename = "maps")]
18 pub maps: Vec<models::EventMapSchema>,
19 #[serde(rename = "duration")]
21 pub duration: i32,
22 #[serde(rename = "rate")]
24 pub rate: i32,
25 #[serde(rename = "cooldown", skip_serializing_if = "Option::is_none")]
27 pub cooldown: Option<i32>,
28 #[serde(rename = "price", skip_serializing_if = "Option::is_none")]
30 pub price: Option<i32>,
31 #[serde(rename = "transition", skip_serializing_if = "Option::is_none")]
33 pub transition: Option<Box<models::TransitionSchema>>,
34 #[serde(
36 rename = "cooldown_expiration",
37 skip_serializing_if = "Option::is_none"
38 )]
39 pub cooldown_expiration: Option<String>,
40}
41
42impl EventSchema {
43 pub fn new(
44 name: String,
45 code: String,
46 maps: Vec<models::EventMapSchema>,
47 duration: i32,
48 rate: i32,
49 ) -> EventSchema {
50 EventSchema {
51 name,
52 code,
53 content: None,
54 maps,
55 duration,
56 rate,
57 cooldown: None,
58 price: None,
59 transition: None,
60 cooldown_expiration: None,
61 }
62 }
63}