aboutsummaryrefslogtreecommitdiff
path: root/web/official-climbs.go
blob: b312bb5f82997267d556a7476e2ed8e83437ce2f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

package web

import (
	"log/slog"

	"github.com/martinlehoux/biking_home/mountain_pass"
	"github.com/martinlehoux/biking_home/official_climb"
	"github.com/martinlehoux/biking_home/ride"
	"github.com/martinlehoux/biking_home/rideanalysis"
)

// analysisFor runs the same pipeline as the ride profile, so recorded attempts and displayed climbs agree.
func analysisFor(parsed ride.Ride, passes []mountain_pass.MountainPass, officialClimbs []official_climb.OfficialClimb, matchPolicy official_climb.MatchPolicy) rideanalysis.Result {
	return rideanalysis.Analyze(parsed, passes, officialClimbs, matchPolicy)
}

// recordOfficialClimbAttempts refreshes the ride's official-climb attempts; failures are logged, never fatal.
func (s *Server) recordOfficialClimbAttempts(rideID int64, parsed ride.Ride, analysis rideanalysis.Result) {
	attempts := rideanalysis.Attempts(rideID, analysis, parsed)
	if err := official_climb.ReplaceRideAttempts(s.db, rideID, attempts); err != nil {
		slog.Warn("Failed to record official climb attempts", "ride_id", rideID, "error", err)
	}
}