1
2use chrono::{
3 DateTime,
4 TimeZone,
5 Utc
6};
7use serde::{
8 Deserialize,
9 Serialize,
10};
11
12use crate::{
13 entrant::*,
14 enums::*,
15 page_info::*,
16 phase::*,
17 phase_group::*,
18 standing::*,
19 tournament::*,
20};
21
22#[derive(Clone, Default, Serialize, Deserialize)]
24pub struct GGEventConnection {
25 pub nodes: Vec<GGEvent>,
26 pub page_info: Option<Box<GGPageInfo>>,
27}
28
29impl GGEventConnection {
30
31 pub fn page_info(&self) -> GGPageInfo {
35 let mut result: GGPageInfo = Default::default();
36 if self.page_info.is_some() {
37 result = *self.page_info.as_ref().unwrap().clone();
38 }
39 return result;
40 }
41
42}
43
44#[derive(Clone, Default, Serialize, Deserialize)]
51pub struct GGEvent {
52
53 #[serde(rename(serialize = "checkInBuffer", deserialize = "checkInBuffer"))]
54 pub check_in_buffer: Option<i64>,
55
56 #[serde(rename(serialize = "checkInDuration", deserialize = "checkInDuration"))]
57 pub check_in_duration: Option<i64>,
58
59 #[serde(rename(serialize = "checkInEnabled", deserialize = "checkInEnabled"))]
60 pub check_in_enabled: Option<bool>,
61
62 #[serde(rename(serialize = "competitionTier", deserialize = "competitionTier"))]
63 pub competition_tier: Option<i64>,
64
65 #[serde(rename(serialize = "createdAt", deserialize = "createdAt"))]
66 pub created_at: Option<i64>,
67
68 #[serde(rename(serialize = "deckSubmissionDeadline", deserialize = "deckSubmissionDeadline"))]
69 pub deck_submission_deadline: Option<i64>,
70 pub entrants: Option<GGEntrantConnection>,
71
72 #[serde(rename(serialize = "hasDecks", deserialize = "hasDecks"))]
73 pub has_decks: Option<bool>,
74
75 #[serde(rename(serialize = "hasTasks", deserialize = "hasTasks"))]
76 pub has_tasks: Option<bool>,
77 pub id: Option<GGID>,
78 #[serde(rename(serialize = "isOnline", deserialize = "isOnline"))]
81 pub is_online: Option<bool>,
82 #[serde(rename(serialize = "matchRulesMarkdown", deserialize = "matchRulesMarkdown"))]
85 pub match_rules_markdown: Option<String>,
86 pub name: Option<String>,
87
88 #[serde(rename(serialize = "numEntrants", deserialize = "numEntrants"))]
89 pub num_entrants: Option<i64>,
90
91 #[serde(rename(serialize = "phaseGroups", deserialize = "phaseGroups"))]
92 pub phase_groups: Option<Vec<GGPhaseGroup>>,
93 pub phases: Option<Vec<GGPhase>>,
94
95 #[serde(rename(serialize = "rulesMarkdown", deserialize = "rulesMarkdown"))]
100 pub rules_markdown: Option<String>,
101
102 #[serde(rename(serialize = "rulesetId", deserialize = "rulesetId"))]
103 pub ruleset_id: Option<i64>,
104 pub slug: Option<String>,
106 pub standings: Option<GGStandingConnection>,
107
108 #[serde(rename(serialize = "startAt", deserialize = "startAt"))]
109 pub start_at: Option<i64>,
110 pub state: Option<i64>,
111 #[serde(rename(serialize = "teamManagementDeadline", deserialize = "teamManagementDeadline"))]
114 pub team_management_deadline: Option<i64>,
115
116 #[serde(rename(serialize = "teamNameAllowed", deserialize = "teamNameAllowed"))]
117 pub team_name_allowed: Option<bool>,
118
119 pub tournament: Option<Box<GGTournament>>,
122 pub r#type: Option<i64>,
123
124 #[serde(rename(serialize = "updatedAt", deserialize = "updatedAt"))]
125 pub updated_at: Option<i64>,
126
127 #[serde(rename(serialize = "useEventSeeds", deserialize = "useEventSeeds"))]
128 pub use_event_seeds: Option<bool>,
129
130 #[serde(rename(serialize = "userEntrant", deserialize = "userEntrant"))]
131 pub user_entrant: Option<Box<GGEntrant>>,
132 }
136
137impl GGEvent {
138
139 pub fn check_in_buffer(&self) -> i64 {
143 let mut result: i64 = 0;
144 if self.check_in_buffer.is_some() {
145 result = self.check_in_buffer.unwrap().clone();
146 }
147 return result;
148 }
149
150 pub fn check_in_duration(&self) -> i64 {
154 let mut result: i64 = 0;
155 if self.check_in_duration.is_some() {
156 result = self.check_in_duration.unwrap().clone();
157 }
158 return result;
159 }
160
161 pub fn check_in_enabled(&self) -> bool {
165 let mut result: bool = false;
166 if self.check_in_enabled.is_some() {
167 result = self.check_in_enabled.unwrap().clone();
168 }
169 return result;
170 }
171
172 pub fn competition_tier(&self) -> i64 {
176 let mut result: i64 = 0;
177 if self.competition_tier.is_some() {
178 result = self.competition_tier.unwrap().clone();
179 }
180 return result;
181 }
182
183 pub fn created_at(&self) -> DateTime<Utc> {
187 let mut result: i64 = 0;
188 if self.created_at.is_some() {
189 result = self.created_at.unwrap().clone();
190 }
191 return Utc.timestamp_opt(result, 0).unwrap();
192 }
193
194 pub fn deck_submission_deadline(&self) -> DateTime<Utc> {
198 let mut result: i64 = 0;
199 if self.deck_submission_deadline.is_some() {
200 result = self.deck_submission_deadline.unwrap().clone();
201 }
202 return Utc.timestamp_opt(result, 0).unwrap();
203 }
204
205 pub fn entrants(&self) -> Vec<GGEntrant> {
209 let mut result: Vec<GGEntrant> = Vec::new();
210 if self.entrants.is_some() {
211 for entrant in &self.entrants.as_ref().unwrap().nodes {
212 result.push(entrant.clone());
213 }
214 }
215 return result;
216 }
217
218 pub fn has_decks(&self) -> bool {
222 let mut result: bool = false;
223 if self.has_decks.is_some() {
224 result = self.has_decks.unwrap().clone();
225 }
226 return result;
227 }
228
229 pub fn has_tasks(&self) -> bool {
233 let mut result: bool = false;
234 if self.has_tasks.is_some() {
235 result = self.has_tasks.unwrap().clone();
236 }
237 return result;
238 }
239
240 pub fn id(&self) -> GGID {
244 let mut result: GGID = GGID::Int(0);
245 if self.id.is_some() {
246 match self.id.clone().unwrap() {
247 GGID::Int(_) => result = self.id.as_ref().unwrap().clone(),
248 GGID::String(_) => result = self.id.as_ref().unwrap().clone(),
249 };
250 }
251 return result;
252 }
253
254 pub fn is_online(&self) -> bool {
258 let mut result: bool = false;
259 if self.is_online.is_some() {
260 result = self.is_online.unwrap().clone();
261 }
262 return result;
263 }
264
265 pub fn match_rules_markdown(&self) -> String {
269 let mut result: String = "".to_string();
270 if self.match_rules_markdown.is_some() {
271 result = self.match_rules_markdown.clone().unwrap().clone();
272 }
273 return result;
274 }
275
276 pub fn name(&self) -> String {
280 let mut result: String = "".to_string();
281 if self.name.is_some() {
282 result = self.name.clone().unwrap().clone();
283 }
284 return result;
285 }
286
287 pub fn num_entrants(&self) -> i64 {
291 let mut result: i64 = 0;
292 if self.num_entrants.is_some() {
293 result = self.num_entrants.unwrap().clone();
294 }
295 return result;
296 }
297
298 pub fn phase_groups(&self) -> Vec<GGPhaseGroup> {
302 let mut result: Vec<GGPhaseGroup> = Vec::new();
303 if self.phase_groups.is_some() {
304 for phase_group in self.phase_groups.as_ref().unwrap() {
305 result.push(phase_group.clone());
306 }
307 }
308 return result;
309 }
310
311 pub fn phases(&self) -> Vec<GGPhase> {
315 let mut result: Vec<GGPhase> = Vec::new();
316 if self.phases.is_some() {
317 for phase in self.phases.as_ref().unwrap() {
318 result.push(phase.clone());
319 }
320 }
321 return result;
322 }
323
324 pub fn rules_markdown(&self) -> String {
328 let mut result: String = "".to_string();
329 if self.rules_markdown.is_some() {
330 result = self.rules_markdown.clone().unwrap().clone();
331 }
332 return result;
333 }
334
335 pub fn ruleset_id(&self) -> i64 {
339 let mut result: i64 = 0;
340 if self.ruleset_id.is_some() {
341 result = self.ruleset_id.unwrap().clone();
342 }
343 return result;
344 }
345
346 pub fn slug(&self) -> String {
350 let mut result: String = "".to_string();
351 if self.slug.is_some() {
352 result = self.slug.clone().unwrap().clone();
353 }
354 return result;
355 }
356
357 pub fn standings(&self) -> Vec<GGStanding> {
361 let mut result: Vec<GGStanding> = Vec::new();
362 if self.standings.is_some() {
363 for standing in &self.standings.as_ref().unwrap().nodes {
364 result.push(standing.clone());
365 }
366 }
367 return result;
368 }
369
370 pub fn start_at(&self) -> DateTime<Utc> {
374 let mut result: i64 = 0;
375 if self.start_at.is_some() {
376 result = self.start_at.unwrap().clone();
377 }
378 return Utc.timestamp_opt(result, 0).unwrap();
379 }
380
381 pub fn state(&self) -> i64 {
385 let mut result: i64 = 0;
386 if self.state.is_some() {
387 result = self.state.unwrap().clone();
388 }
389 return result;
390 }
391
392 pub fn team_management_deadline(&self) -> DateTime<Utc> {
396 let mut result: i64 = 0;
397 if self.team_management_deadline.is_some() {
398 result = self.team_management_deadline.unwrap().clone();
399 }
400 return Utc.timestamp_opt(result, 0).unwrap();
401 }
402
403 pub fn team_name_allowed(&self) -> bool {
407 let mut result: bool = false;
408 if self.team_name_allowed.is_some() {
409 result = self.team_name_allowed.unwrap().clone();
410 }
411 return result;
412 }
413
414 pub fn tournament(&self) -> GGTournament {
418 let mut result: GGTournament = Default::default();
419 if self.tournament.is_some() {
420 result = *self.tournament.as_ref().unwrap().clone();
421 }
422 return result;
423 }
424
425 pub fn r#type(&self) -> i64 {
429 let mut result: i64 = 0;
430 if self.r#type.is_some() {
431 result = self.r#type.unwrap().clone();
432 }
433 return result;
434 }
435
436 pub fn updated_at(&self) -> DateTime<Utc> {
440 let mut result: i64 = 0;
441 if self.updated_at.is_some() {
442 result = self.updated_at.unwrap().clone();
443 }
444 return Utc.timestamp_opt(result, 0).unwrap();
445 }
446
447 pub fn use_event_seeds(&self) -> bool {
451 let mut result: bool = false;
452 if self.use_event_seeds.is_some() {
453 result = self.use_event_seeds.unwrap().clone();
454 }
455 return result;
456 }
457
458 pub fn user_entrant(&self) -> GGEntrant {
462 let mut result: GGEntrant = Default::default();
463 if self.user_entrant.is_some() {
464 result = *self.user_entrant.as_ref().unwrap().clone();
465 }
466 return result;
467 }
468
469}