diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-20 19:18:32 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-08-20 19:18:32 +0200 |
| commit | 13aeedfbb9271444ca42efb45bbe0986ae7610ce (patch) | |
| tree | ac041fa80a5fa0bd845385f2f1c5c983115a1ade | |
| parent | 5242b55d878d56b71d443a440c7017015b9df2dd (diff) | |
feat(ride): skip rides without track points in backtest
| -rw-r--r-- | cli/cli.go | 4 | ||||
| -rw-r--r-- | ride/ride.go | 6 |
2 files changed, 8 insertions, 2 deletions
@@ -3,6 +3,7 @@ package cli import ( "context" "database/sql" + "errors" "flag" "fmt" "log/slog" @@ -94,6 +95,9 @@ func runBacktest(db *sql.DB) error { } parsed, err := ride.ParseFile(ride.GPXRideParser{}, item.GPXPath) if err != nil { + if errors.Is(err, ride.ErrNoTrackPoints) { + continue + } slog.Warn("Failed to parse ride GPX", "ride", item.ExternalID, "file", item.GPXPath, "error", err) continue } diff --git a/ride/ride.go b/ride/ride.go index 152bca4..278880f 100644 --- a/ride/ride.go +++ b/ride/ride.go @@ -17,6 +17,8 @@ import ( const garminTrackPointExtensionNamespace = "http://www.garmin.com/xmlschemas/TrackPointExtension/v1" +var ErrNoTrackPoints = errors.New("ride has no track points") + type Ride struct { distances []float64 elevations []float64 @@ -91,11 +93,11 @@ func (p GPXRideParser) Parse(reader io.Reader) (Ride, error) { return Ride{}, err } if len(content.Tracks) == 0 || len(content.Tracks[0].Segments) == 0 { - return Ride{}, errors.New("ride has no track segment") + return Ride{}, ErrNoTrackPoints } segment := content.Tracks[0].Segments[0] if len(segment.Points) == 0 { - return Ride{}, errors.New("ride has no track points") + return Ride{}, ErrNoTrackPoints } distances := make([]float64, 0, len(segment.Points)) elevations := make([]float64, 0, len(segment.Points)) |
