From 6667ee479c06c14bb182f36a0a9ee704fca6218d Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Fri, 21 Aug 2026 07:08:53 +0200 Subject: feat(web): add sortable average speed column to ride library --- rides/rides.go | 2 ++ rides/rides_test.go | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) (limited to 'rides') diff --git a/rides/rides.go b/rides/rides.go index b0ce5fb..94fbc64 100644 --- a/rides/rides.go +++ b/rides/rides.go @@ -37,6 +37,7 @@ const ( SortStartDate SortColumn = "started" SortDistance SortColumn = "distance" SortMovingTime SortColumn = "moving_time" + SortSpeed SortColumn = "speed" SortElevation SortColumn = "elevation" SortCotacol SortColumn = "cotacol" SortCotacolKm SortColumn = "cotacol_100km" @@ -156,6 +157,7 @@ var sortExpressions = map[SortColumn]string{ SortStartDate: "start_date", SortDistance: "distance_m", SortMovingTime: "CASE WHEN moving_time_algo_version = ? THEN COALESCE(moving_time_s, external_moving_time_s) ELSE external_moving_time_s END", + SortSpeed: "average_speed_mps", SortElevation: "total_elevation_gain_m", SortCotacol: "cotacol_score", SortCotacolKm: "cotacol_score * 100000.0 / NULLIF(distance_m, 0)", diff --git a/rides/rides_test.go b/rides/rides_test.go index fc8ff0d..ea87172 100644 --- a/rides/rides_test.go +++ b/rides/rides_test.go @@ -162,6 +162,23 @@ func TestListSortedByMovingTimeUsesCanonicalWithExternalFallback(t *testing.T) { assert.Equal(t, first.ExternalID, items[1].ExternalID) } +func TestListSortedBySpeed(t *testing.T) { + db := newTestDB(t) + slow := sampleRide(t) + slow.ExternalID = "strava:550e8400-e29b-41d4-a716-446655440000" + slow.AverageSpeedMps = 4.2 + fast := sampleRide(t) + fast.ExternalID = "strava:6ba7b810-9dad-41d1-80b4-00c04fd430c8" + fast.AverageSpeedMps = 9.8 + require.NoError(t, Save(db, slow)) + require.NoError(t, Save(db, fast)) + + items, err := ListSorted(db, SortSpeed, false) + require.NoError(t, err) + assert.Equal(t, slow.ExternalID, items[0].ExternalID) + assert.Equal(t, fast.ExternalID, items[1].ExternalID) +} + func TestBackfill(t *testing.T) { db := newTestDB(t) require.NoError(t, Save(db, sampleRide(t))) -- cgit v1.3