43 lines
1015 B
Go
43 lines
1015 B
Go
package types
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type Stop struct {
|
|
trips map[string]*Trip
|
|
StopID string `json:"stop_id" csv:"stop_id"`
|
|
StopName string `json:"stop_name" csv:"stop_name"`
|
|
StopLat float64 `json:"stop_lat" csv:"stop_lat"`
|
|
StopLon float64 `json:"stop_lon" csv:"stop_lon"`
|
|
LocationType int `json:"location_type" csv:"location_type"`
|
|
Transfers []*Transfer `json:"transfers" csv:"transfers"`
|
|
}
|
|
|
|
func (s *Stop) AddTransfer(transfer *Transfer) {
|
|
if s.Transfers == nil {
|
|
s.Transfers = make([]*Transfer, 0)
|
|
}
|
|
s.Transfers = append(s.Transfers, transfer)
|
|
}
|
|
|
|
func (s *Stop) AddTrip(trip *Trip) {
|
|
if s.trips == nil {
|
|
s.trips = make(map[string]*Trip)
|
|
}
|
|
s.trips[trip.TripID] = trip
|
|
}
|
|
|
|
func (s *Stop) GetTripsAfter(time time.Time) []*Trip {
|
|
var trips []*Trip
|
|
for _, trip := range s.trips {
|
|
for _, stop := range trip.Stops {
|
|
if stop.StopID == s.StopID && stop.DepartsAfter(time) {
|
|
trips = append(trips, trip)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return trips
|
|
}
|