1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Debug, Serialize, Deserialize)]
4#[serde(rename_all = "camelCase")]
5pub struct ScheduleResponse {
6 pub copyright: Option<String>,
7 pub total_items: Option<u8>,
8 pub total_events: Option<u8>,
9 pub total_games: u8,
10 pub total_games_in_progress: Option<u8>,
11 pub dates: Vec<Dates>, }
13
14#[derive(Default, Debug, Serialize, Deserialize)]
15pub struct LeagueRecord {
16 pub wins: u8,
17 pub losses: u8,
18 pub pct: String,
19}
20
21#[derive(Default, Debug, Serialize, Deserialize)]
22pub struct IdNameLink {
23 pub id: u16,
24 pub name: String,
25 pub link: String,
26}
27
28#[derive(Default, Debug, Serialize, Deserialize)]
29#[serde(rename_all = "camelCase")]
30pub struct Dates {
31 pub date: Option<String>,
32 pub total_items: Option<u8>,
33 pub total_events: Option<u8>,
34 pub total_games: Option<u8>,
35 pub total_games_in_progress: Option<u8>,
36 pub games: Option<Vec<Game>>,
37 pub events: Option<Vec<Option<serde_json::Value>>>,
38}
39
40#[derive(Default, Debug, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct ScheduleLinescore {
43 pub current_inning: Option<i64>,
44 pub current_inning_ordinal: Option<String>,
45 pub inning_state: Option<String>,
46 pub inning_half: Option<String>,
47 pub is_top_inning: Option<bool>,
48}
49
50#[derive(Default, Debug, Serialize, Deserialize)]
51#[serde(rename_all = "camelCase")]
52pub struct Game {
53 pub game_pk: u64,
54 pub link: String,
55 pub season: String,
57 pub game_date: String,
58 pub official_date: String,
59 pub status: Status,
60 pub teams: Teams,
61 pub linescore: Option<ScheduleLinescore>,
63 pub venue: Option<IdNameLink>,
64 pub content: Option<Content>,
65 pub is_tie: Option<bool>,
66 pub game_number: Option<u64>,
67 pub calendar_event_id: Option<String>,
72 }
88
89#[derive(Default, Debug, Serialize, Deserialize)]
90pub struct Content {
91 pub link: Option<String>,
92}
93
94#[derive(Default, Debug, Serialize, Deserialize)]
95#[serde(rename_all = "camelCase")]
96pub struct Status {
97 pub abstract_game_state: Option<AbstractGameState>,
98 pub coded_game_state: Option<String>,
99 pub detailed_state: Option<String>,
100 pub status_code: Option<String>,
101 #[serde(rename = "startTimeTBD")]
102 pub start_time_tbd: Option<bool>,
103 pub abstract_game_code: Option<AbstractGameCode>,
104 pub reason: Option<String>,
105}
106
107#[derive(Default, Debug, Serialize, Deserialize)]
108pub struct Teams {
109 pub away: TeamInfo,
110 pub home: TeamInfo,
111}
112
113#[derive(Default, Debug, Serialize, Deserialize)]
114#[serde(rename_all = "camelCase")]
115pub struct TeamInfo {
116 pub league_record: Option<LeagueRecord>,
117 pub score: Option<u8>,
118 pub team: IdNameLink,
119 pub is_winner: Option<bool>,
120 pub split_squad: Option<bool>,
121 pub series_number: Option<u8>,
122}
123
124#[derive(Serialize, Deserialize)]
125#[serde(rename_all = "camelCase")]
126pub enum DayNight {
127 Day,
128 Night,
129}
130
131#[derive(Serialize, Deserialize)]
132pub enum DoubleHeader {
133 N,
134 Y,
135}
136
137#[derive(Debug, Serialize, Deserialize)]
138pub enum AbstractGameCode {
139 P,
141 L,
143 F,
145}
146
147#[derive(Debug, Serialize, Deserialize)]
148pub enum AbstractGameState {
149 Final,
150 Live,
151 Preview,
152}