1use crate::live::Person;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5#[derive(Default, Debug, Serialize, Deserialize)]
6pub struct Boxscore {
7 pub teams: Option<Teams>,
8 pub info: Option<Vec<LabelValue>>,
9}
10
11#[derive(Debug, Serialize, Deserialize)]
12pub struct Teams {
13 pub away: Team,
14 pub home: Team,
15}
16
17#[derive(Debug, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct Team {
20 pub team: IdName,
21 pub team_stats: TeamStats,
22 pub players: HashMap<String, Player>,
23 pub batters: Vec<u64>,
24 pub pitchers: Vec<u64>,
25 bench: Vec<u64>,
26 bullpen: Vec<u64>,
27 pub batting_order: Vec<u64>,
28 pub season_stats: Option<TeamStats>,
29 pub info: Option<Vec<TeamInfo>>,
30 pub note: Option<Vec<LabelValue>>,
31}
32
33#[derive(Default, Debug, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct IdName {
36 pub id: u16,
37 pub name: String,
38}
39
40#[derive(Default, Debug, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct TeamInfo {
43 pub title: String,
44 pub field_list: Vec<LabelValue>,
45}
46
47#[derive(Default, Debug, Serialize, Deserialize)]
48#[serde(rename_all = "camelCase")]
49pub struct LabelValue {
50 pub label: String,
51 pub value: Option<String>,
52}
53
54#[derive(Debug, Serialize, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct Player {
57 pub person: Person,
58 pub position: Position,
59 pub batting_order: Option<String>,
60 pub stats: TeamStats,
61 pub season_stats: TeamStats,
62}
63
64#[derive(Debug, Serialize, Deserialize)]
65pub struct Position {
66 pub name: String,
67 pub abbreviation: String,
68 #[serde(rename = "type")]
69 pub position_type: String,
70}
71
72#[derive(Debug, Serialize, Deserialize)]
73pub struct TeamStats {
74 pub batting: Batting,
75 pub pitching: PitchingStats,
76 }
78
79#[derive(Debug, Serialize, Deserialize)]
80#[serde(rename_all = "camelCase")]
81pub struct Batting {
82 pub note: Option<String>,
83 pub summary: Option<String>,
84 games_played: Option<u16>,
85 pub runs: Option<u16>,
86 doubles: Option<u16>,
87 triples: Option<u16>,
88 home_runs: Option<u16>,
89 pub strike_outs: Option<u16>,
90 pub base_on_balls: Option<u16>,
91 pub hits: Option<u16>,
92 hit_by_pitch: Option<u16>,
93 pub avg: Option<String>,
94 pub at_bats: Option<u16>,
95 obp: Option<String>,
96 slg: Option<String>,
97 ops: Option<String>,
98 ground_into_double_play: Option<u16>,
99 ground_into_triple_play: Option<u16>,
100 pub plate_appearances: Option<u16>,
101 total_bases: Option<u16>,
102 pub rbi: Option<u16>,
103 pub left_on_base: Option<u16>,
104}
105
106#[derive(Debug, Serialize, Deserialize)]
107#[serde(rename_all = "camelCase")]
108pub struct PitchingStats {
109 pub summary: Option<String>,
110 pub note: Option<String>,
111 pub games_played: Option<i64>,
112 pub games_started: Option<i64>,
113 pub fly_outs: Option<i64>,
114 pub ground_outs: Option<i64>,
115 pub air_outs: Option<i64>,
116 pub runs: Option<i64>,
117 pub doubles: Option<i64>,
118 pub triples: Option<i64>,
119 pub home_runs: Option<i64>,
120 pub strike_outs: Option<i64>,
121 pub base_on_balls: Option<i64>,
122 pub intentional_walks: Option<i64>,
123 pub hits: Option<i64>,
124 pub hit_by_pitch: Option<i64>,
125 pub at_bats: Option<i64>,
126 pub caught_stealing: Option<i64>,
127 pub stolen_bases: Option<i64>,
128 pub stolen_base_percentage: Option<String>,
129 pub number_of_pitches: Option<i64>,
130 pub era: Option<String>,
131 pub innings_pitched: Option<String>,
132 pub wins: Option<i64>,
133 pub losses: Option<i64>,
134 pub saves: Option<i64>,
135 pub save_opportunities: Option<i64>,
136 pub holds: Option<i64>,
137 pub blown_saves: Option<i64>,
138 pub earned_runs: Option<i64>,
139 pub batters_faced: Option<i64>,
140 pub outs: Option<i64>,
141 pub games_pitched: Option<i64>,
142 pub complete_games: Option<i64>,
143 pub shutouts: Option<i64>,
144 pub pitches_thrown: Option<i64>,
145 pub balls: Option<i64>,
146 pub strikes: Option<i64>,
147 pub strike_percentage: Option<String>,
148 pub hit_batsmen: Option<i64>,
149 pub balks: Option<i64>,
150 pub wild_pitches: Option<i64>,
151 pub pickoffs: Option<i64>,
152 pub rbi: Option<i64>,
153 pub games_finished: Option<i64>,
154 pub runs_scored_per9: Option<String>,
155 pub home_runs_per9: Option<String>,
156 pub inherited_runners: Option<i64>,
157 pub inherited_runners_scored: Option<i64>,
158 pub catchers_interference: Option<i64>,
159 pub sac_bunts: Option<i64>,
160 pub sac_flies: Option<i64>,
161 pub passed_ball: Option<i64>,
162 pub pop_outs: Option<i64>,
163 pub line_outs: Option<i64>,
164}