This commit is contained in:
matst80
2025-11-14 20:21:53 +01:00
commit 4dbbd30d4d
38 changed files with 10969837 additions and 0 deletions

63
pkg/types/stoptime.go Normal file
View File

@@ -0,0 +1,63 @@
package types
import (
"strconv"
"strings"
"time"
)
type StopTime struct {
departureTime int
Stop *Stop `json:"stop"`
TripID string `json:"trip_id" csv:"trip_id"`
ArrivalTime string `json:"arrival_time" csv:"arrival_time"`
DepartureTime string `json:"departure_time" csv:"departure_time"`
StopID string `json:"stop_id" csv:"stop_id"`
StopSequence int `json:"stop_sequence" csv:"stop_sequence"`
PickupType int `json:"pickup_type" csv:"pickup_type"`
DropOffType int `json:"drop_off_type" csv:"drop_off_type"`
}
func parseTime(s string) int {
parts := strings.Split(s, ":")
if len(parts) != 3 {
return 0
}
h, _ := strconv.Atoi(parts[0])
m, _ := strconv.Atoi(parts[1])
sec, _ := strconv.Atoi(parts[2])
return h*3600 + m*60 + sec
}
func (st *StopTime) DepartTimeAsSeconds() int {
if st.departureTime > 0 {
return st.departureTime
}
if st.DepartureTime == "" {
return 0
}
st.departureTime = parseTime(st.DepartureTime)
return st.departureTime
}
func (st *StopTime) DepartsAfter(when time.Time) bool {
secondsAfterMidnight := st.DepartTimeAsSeconds()
return secondsAfterMidnight >= when.Hour()*3600+when.Minute()*60+when.Second()
}
// func (st *StopTime) GetPossibleTrips() iter.Seq[*Trip] {
// return func(yield func(*Trip) bool) {
// for _, trip := range st.Stop.trips {
// if trip.TripID != st.TripID {
// if !yield(trip) {
// return
// }
// }
// }
// }
// }
func (st *StopTime) SetStop(stop *Stop) {
st.Stop = stop
}