Files
go-gtfs/pkg/types/stop.go
2025-11-14 20:21:53 +01:00

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
}