mlb_api/endpoints/venue/
types.rs1use derive_more::{Deref, DerefMut, Display};
2use serde::Deserialize;
3use crate::types::Copyright;
4
5#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
6#[serde(rename_all = "camelCase")]
7pub struct VenuesResponse {
8 pub copyright: Copyright,
9 pub venues: Vec<HydratedVenue>,
10}
11
12#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
13#[serde(rename_all = "camelCase")]
14pub struct UnhydratedVenue {
15 id: VenueId,
16 name: String,
17}
18
19#[derive(Debug, Deserialize, Deref, DerefMut, PartialEq, Eq, Clone)]
20#[serde(rename_all = "camelCase")]
21pub struct HydratedVenue {
22 #[deref]
23 #[deref_mut]
24 inner: UnhydratedVenue,
25 active: bool,
26 #[serde(deserialize_with = "crate::types::from_str")]
27 season: u16,
28}
29
30#[repr(transparent)]
31#[derive(Debug, Deserialize, Deref, Display, PartialEq, Eq, Copy, Clone)]
32pub struct VenueId(u32);
33
34#[derive(Debug, Deserialize, PartialEq, Eq, Clone)]
35#[serde(untagged)]
36pub enum Venue {
37 Hydrated(HydratedVenue),
38 Unhydrated(UnhydratedVenue),
39}