Skip to main content

artifacts/models/
raid_schema.rs

1use 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 RaidSchema {
7    /// Raid code.
8    #[serde(rename = "code")]
9    pub code: String,
10    /// Raid name.
11    #[serde(rename = "name")]
12    pub name: String,
13    /// Raid description.
14    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
15    pub description: Option<String>,
16    /// Monster code used for raid combat simulation.
17    #[serde(rename = "monster")]
18    pub monster: String,
19    /// Weekly raid opening schedule.
20    #[serde(rename = "schedule")]
21    pub schedule: Box<models::RaidScheduleSchema>,
22    /// Reward rules for the raid.
23    #[serde(rename = "rewards", skip_serializing_if = "Option::is_none")]
24    pub rewards: Option<Box<models::RaidRewardsSchema>>,
25    /// Current overall raid status.
26    #[serde(rename = "status")]
27    pub status: models::RaidStatus,
28    /// Datetime for the next scheduled raid opening in UTC.
29    #[serde(rename = "next_start_at")]
30    pub next_start_at: String,
31    /// Number of distinct accounts that contributed to the active or latest raid instance.
32    #[serde(rename = "participant_count", skip_serializing_if = "Option::is_none")]
33    pub participant_count: Option<u32>,
34    /// Currently active weekly raid instance, if any.
35    #[serde(rename = "active_instance", skip_serializing_if = "Option::is_none")]
36    pub active_instance: Option<Box<models::RaidInstanceSchema>>,
37    /// Latest weekly raid instance, active or finished.
38    #[serde(rename = "latest_instance", skip_serializing_if = "Option::is_none")]
39    pub latest_instance: Option<Box<models::RaidInstanceSchema>>,
40}
41
42impl RaidSchema {
43    pub fn new(
44        code: String,
45        name: String,
46        monster: String,
47        schedule: models::RaidScheduleSchema,
48        status: models::RaidStatus,
49        next_start_at: String,
50    ) -> RaidSchema {
51        RaidSchema {
52            code,
53            name,
54            description: None,
55            monster,
56            schedule: Box::new(schedule),
57            rewards: None,
58            status,
59            next_start_at,
60            participant_count: None,
61            active_instance: None,
62            latest_instance: None,
63        }
64    }
65}