mlb_api/endpoints/venue/
types.rs

1use 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}