use chrono::{
DateTime,
TimeZone,
Utc
};
use serde::{
Deserialize,
Serialize,
};
use crate::{
enums::*,
event::*,
game::*,
image::*,
page_info::*,
phase_group::*,
set_slot::*,
stations::*,
streams::*,
};
#[derive(Clone, Default, Serialize, Deserialize)]
pub struct GGSetConnection {
pub nodes: Vec<GGSet>,
pub page_info: Option<Box<GGPageInfo>>,
}
impl GGSetConnection {
pub fn page_info(&self) -> GGPageInfo {
let mut result: GGPageInfo = Default::default();
if self.page_info.is_some() {
result = *self.page_info.as_ref().unwrap().clone();
}
return result;
}
}
#[derive(Clone, Default, Serialize, Deserialize)]
pub struct GGSet {
#[serde(rename(serialize = "completedAt", deserialize = "completedAt"))]
pub completed_at: Option<i64>,
#[serde(rename(serialize = "createdAt", deserialize = "createdAt"))]
pub created_at: Option<i64>,
#[serde(rename(serialize = "displayScore", deserialize = "displayScore"))]
pub display_score: Option<String>,
pub event: Option<Box<GGEvent>>,
#[serde(rename(serialize = "fullRoundText", deserialize = "fullRoundText"))]
pub full_round_text: Option<String>,
pub game: Option<Box<GGGame>>,
pub games: Option<Vec<GGGame>>,
#[serde(rename(serialize = "hasPlaceholder", deserialize = "hasPlaceholder"))]
pub has_placeholder: Option<bool>,
pub id: Option<GGID>,
pub identifier: Option<String>,
pub images: Option<Vec<GGImage>>,
#[serde(rename(serialize = "lPlacement", deserialize = "lPlacement"))]
pub l_placement: Option<i64>,
#[serde(rename(serialize = "phaseGroup", deserialize = "phaseGroup"))]
pub phase_group: Option<Box<GGPhaseGroup>>,
pub round: Option<i64>,
#[serde(rename(serialize = "setGamesType", deserialize = "setGamesType"))]
pub set_games_type: Option<i64>,
pub slots: Option<Vec<GGSetSlot>>,
#[serde(rename(serialize = "startAt", deserialize = "startAt"))]
pub start_at: Option<i64>,
#[serde(rename(serialize = "startedAt", deserialize = "startedAt"))]
pub started_at: Option<i64>,
pub state: Option<i64>,
pub station: Option<Box<GGStations>>,
pub stream: Option<Box<GGStreams>>,
#[serde(rename(serialize = "totalGames", deserialize = "totalGames"))]
pub total_games: Option<i64>,
#[serde(rename(serialize = "vodUrl", deserialize = "vodUrl"))]
pub vod_url: Option<String>,
#[serde(rename(serialize = "wPlacement", deserialize = "wPlacement"))]
pub w_placement: Option<i64>,
#[serde(rename(serialize = "winnerId", deserialize = "winnerId"))]
pub winner_id: Option<i64>,
}
impl GGSet {
pub fn completed_at(&self) -> DateTime<Utc> {
let mut result: i64 = 0;
if self.completed_at.is_some() {
result = self.completed_at.unwrap().clone();
}
return Utc.timestamp_opt(result, 0).unwrap();
}
pub fn created_at(&self) -> DateTime<Utc> {
let mut result: i64 = 0;
if self.created_at.is_some() {
result = self.created_at.unwrap().clone();
}
return Utc.timestamp_opt(result, 0).unwrap();
}
pub fn display_score(&self) -> String {
let mut result: String = "".to_string();
if self.display_score.is_some() {
result = self.display_score.clone().unwrap().clone();
}
return result;
}
pub fn event(&self) -> GGEvent {
let mut result: GGEvent = Default::default();
if self.event.is_some() {
result = *self.event.as_ref().unwrap().clone();
}
return result;
}
pub fn full_round_text(&self) -> String {
let mut result: String = "".to_string();
if self.full_round_text.is_some() {
result = self.full_round_text.clone().unwrap().clone();
}
return result;
}
pub fn game(&self) -> GGGame {
let mut result: GGGame = Default::default();
if self.game.is_some() {
result = *self.game.as_ref().unwrap().clone();
}
return result;
}
pub fn games(&self) -> Vec<GGGame> {
let mut result: Vec<GGGame> = Vec::new();
if self.games.is_some() {
for game in self.games.as_ref().unwrap() {
result.push(game.clone());
}
}
return result;
}
pub fn has_placeholder(&self) -> bool {
let mut result: bool = false;
if self.has_placeholder.is_some() {
result = self.has_placeholder.unwrap().clone();
}
return result;
}
pub fn id(&self) -> GGID {
let mut result: GGID = GGID::Int(0);
if self.id.is_some() {
match self.id.clone().unwrap() {
GGID::Int(_) => result = self.id.as_ref().unwrap().clone(),
GGID::String(_) => result = self.id.as_ref().unwrap().clone(),
};
}
return result;
}
pub fn identifier(&self) -> String {
let mut result: String = "".to_string();
if self.identifier.is_some() {
result = self.identifier.clone().unwrap().clone();
}
return result;
}
pub fn images(&self) -> Vec<GGImage> {
let mut result: Vec<GGImage> = Vec::new();
if self.images.is_some() {
for image in self.images.as_ref().unwrap() {
result.push(image.clone());
}
}
return result;
}
pub fn l_placement(&self) -> i64 {
let mut result: i64 = 0;
if self.l_placement.is_some() {
result = self.l_placement.unwrap().clone();
}
return result;
}
pub fn phase_group(&self) -> GGPhaseGroup {
let mut result: GGPhaseGroup = Default::default();
if self.phase_group.is_some() {
result = *self.phase_group.as_ref().unwrap().clone();
}
return result;
}
pub fn round(&self) -> i64 {
let mut result: i64 = 0;
if self.round.is_some() {
result = self.round.unwrap().clone();
}
return result;
}
pub fn set_games_type(&self) -> i64 {
let mut result: i64 = 0;
if self.set_games_type.is_some() {
result = self.set_games_type.unwrap().clone();
}
return result;
}
pub fn slots(&self) -> Vec<GGSetSlot> {
let mut result: Vec<GGSetSlot> = Vec::new();
if self.slots.is_some() {
for slot in self.slots.as_ref().unwrap() {
result.push(slot.clone());
}
}
return result;
}
pub fn start_at(&self) -> DateTime<Utc> {
let mut result: i64 = 0;
if self.start_at.is_some() {
result = self.start_at.unwrap().clone();
}
return Utc.timestamp_opt(result, 0).unwrap();
}
pub fn started_at(&self) -> DateTime<Utc> {
let mut result: i64 = 0;
if self.started_at.is_some() {
result = self.started_at.unwrap().clone();
}
return Utc.timestamp_opt(result, 0).unwrap();
}
pub fn state(&self) -> i64 {
let mut result: i64 = 0;
if self.state.is_some() {
result = self.state.unwrap().clone();
}
return result;
}
pub fn station(&self) -> GGStations {
let mut result: GGStations = Default::default();
if self.station.is_some() {
result = *self.station.as_ref().unwrap().clone();
}
return result;
}
pub fn stream(&self) -> GGStreams {
let mut result: GGStreams = Default::default();
if self.stream.is_some() {
result = *self.stream.as_ref().unwrap().clone();
}
return result;
}
pub fn total_games(&self) -> i64 {
let mut result: i64 = 0;
if self.total_games.is_some() {
result = self.total_games.unwrap().clone();
}
return result;
}
pub fn vod_url(&self) -> String {
let mut result: String = "".to_string();
if self.vod_url.is_some() {
result = self.vod_url.clone().unwrap().clone();
}
return result;
}
pub fn w_placement(&self) -> i64 {
let mut result: i64 = 0;
if self.w_placement.is_some() {
result = self.w_placement.unwrap().clone();
}
return result;
}
pub fn winner_id(&self) -> i64 {
let mut result: i64 = 0;
if self.winner_id.is_some() {
result = self.winner_id.unwrap().clone();
}
return result;
}
}