Fall back to event time if set time isn't recorded

This commit is contained in:
Kiana Sheibani 2023-11-18 20:53:31 -05:00
parent 1aa1b87211
commit 1aa85bd989
Signed by: toki
GPG key ID: 6CB106C25E86A9F7
3 changed files with 32 additions and 18 deletions

View file

@ -86,7 +86,7 @@ pub struct EventSetsResponse {
#[derive(Debug)]
pub struct SetData {
pub id: SetId,
pub time: Timestamp,
pub time: Option<Timestamp>,
pub teams: Teams<PlayerData>,
pub winner: usize,
}
@ -130,7 +130,7 @@ impl QueryUnwrap<EventSetsVars> for EventSets {
.try_collect()?;
Some(SetData {
id: set.id?,
time: set.start_at.or(set.started_at)?,
time: set.start_at.or(set.started_at),
teams,
winner,
})

View file

@ -53,7 +53,6 @@ struct PageInfo {
#[derive(cynic::QueryFragment, Debug)]
#[cynic(variables = "TournamentEventsVars")]
struct Tournament {
name: Option<String>,
#[arguments(limit: 99999, filter: { videogameId: [$game_id] })]
#[cynic(flatten)]
events: Vec<Event>,
@ -63,6 +62,7 @@ struct Tournament {
#[cynic(variables = "TournamentEventsVars")]
struct Event {
id: Option<EventId>,
start_at: Option<Timestamp>,
}
// Unwrap
@ -75,8 +75,13 @@ pub struct TournamentEventResponse {
#[derive(Debug, Clone)]
pub struct TournamentData {
pub name: String,
pub events: Vec<EventId>,
pub events: Vec<EventData>,
}
#[derive(Debug, Clone)]
pub struct EventData {
pub id: EventId,
pub time: Timestamp,
}
impl<'a> QueryUnwrap<TournamentEventsVars<'a>> for TournamentEvents {
@ -92,11 +97,15 @@ impl<'a> QueryUnwrap<TournamentEventsVars<'a>> for TournamentEvents {
.into_iter()
.filter_map(|tour| {
Some(TournamentData {
name: tour.name?,
events: tour
.events
.into_iter()
.filter_map(|event| event.id)
.filter_map(|event| {
Some(EventData {
id: event.id?,
time: event.start_at?,
})
})
.collect(),
})
})