mlb_api/requests/team/
alumni.rs1use crate::person::people::PeopleResponse;
2use crate::season::SeasonId;
3use crate::team::TeamId;
4use crate::request::RequestURL;
5use bon::Builder;
6use std::fmt::{Display, Formatter};
7
8#[derive(Builder)]
9#[builder(derive(Into))]
10pub struct AlumniRequest {
11 #[builder(into)]
12 team_id: TeamId,
13 #[builder(into)]
14 season: Option<SeasonId>,
15}
16
17impl<S: alumni_request_builder::State + alumni_request_builder::IsComplete> crate::request::RequestURLBuilderExt for AlumniRequestBuilder<S> {
18 type Built = AlumniRequest;
19}
20
21impl Display for AlumniRequest {
22 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
23 write!(f, "http://statsapi.mlb.com/api/v1/teams/{}/alumni{}", self.team_id, gen_params! { "season"?: self.season })
24 }
25}
26
27impl RequestURL for AlumniRequest {
28 type Response = PeopleResponse<()>;
29}
30
31#[cfg(test)]
32mod tests {
33 use crate::request::RequestURLBuilderExt;
34 use crate::team::alumni::AlumniRequest;
35 use crate::team::teams::TeamsRequest;
36 use crate::TEST_YEAR;
37
38 #[tokio::test]
39 #[cfg_attr(not(feature = "_heavy_tests"), ignore)]
40 async fn test_heavy() {
41 let season = TEST_YEAR;
42 let teams = TeamsRequest::mlb_teams().season(season).build_and_get().await.unwrap();
43 for team in teams.teams {
44 let _ = AlumniRequest::builder().team_id(team.id).season(season).build_and_get().await.unwrap();
45 }
46 }
47}