Author: Adam Evyčędo <git@apiote.xyz>
add line and headsign to date-based departures
traffic/realtime.go | 35 ++++++++++++++++++++++-------------
diff --git a/traffic/realtime.go b/traffic/realtime.go index 9770a40423b82df7db98e2d9da47b49a1b9dfcc9..390a3ca2d8bd2818c782ca702879102fd0802af3 100644 --- a/traffic/realtime.go +++ b/traffic/realtime.go @@ -114,21 +114,23 @@ } else { // log.Println("none") } } + + offsets := make([]uint, len(departures)) + pickups := map[string]Boarding{} + dropoffs := map[string]Boarding{} + for i, departure := range departures { + offsets[i] = departure.Order.TripOffset + pickups[departure.LineName] = departure.Departure.Pickup + dropoffs[departure.LineName] = departure.Departure.Dropoff + } + trips, err := GetTripsByOffset(offsets, ctx, func(Trip) bool { return true }) + if err != nil { + return departures, fmt.Errorf("while getting trips: %w", err) + } + midnight := time.Date(datetime.Year(), datetime.Month(), datetime.Day(), 0, 0, 0, 0, timezone) if departuresType == DEPARTURES_HYBRID { - offsets := make([]uint, len(departures)) - pickups := map[string]Boarding{} - dropoffs := map[string]Boarding{} - for i, departure := range departures { - offsets[i] = departure.Order.TripOffset - pickups[departure.LineName] = departure.Departure.Pickup - dropoffs[departure.LineName] = departure.Departure.Dropoff - } - trips, err := GetTripsByOffset(offsets, ctx, func(Trip) bool { return true }) - if err != nil { - return departures, fmt.Errorf("while getting trips: %w", err) - } for i, departure := range departures { if departure.Time.After(midnight) { var ( @@ -175,7 +177,14 @@ } } } } else { - enrichedDepartures = departures + for i, departure := range departures { + enrichedDepartures[i] = departure.WithUpdate(Update{ + VehicleStatus: VehicleStatus{ + LineName: trips[departure.Order.TripOffset].LineName, + Headsign: trips[departure.Order.TripOffset].Headsign, + }, + }) + } } return enrichedDepartures, nil }