mirror of
https://github.com/sstent/aicyclingcoach-go.git
synced 2026-04-04 12:03:23 +00:00
sync
This commit is contained in:
49
internal/garmin/activity_mapping.go
Normal file
49
internal/garmin/activity_mapping.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package garmin
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/sstent/fitness-tui/internal/garmin/garth/types"
|
||||
"github.com/sstent/fitness-tui/internal/tui/models"
|
||||
)
|
||||
|
||||
// MapGarminType converts Garmin activity types to internal analysis types
|
||||
func MapGarminType(garminType types.ActivityType) string {
|
||||
switch garminType.TypeKey {
|
||||
case "cycling", "road_biking", "mountain_biking", "indoor_cycling":
|
||||
return "cycling"
|
||||
case "running", "treadmill_running", "trail_running":
|
||||
return "running"
|
||||
case "hiking", "walking":
|
||||
return "hiking"
|
||||
case "swimming":
|
||||
return "swimming"
|
||||
case "triathlon":
|
||||
return "triathlon"
|
||||
default:
|
||||
return "other"
|
||||
}
|
||||
}
|
||||
|
||||
// ToActivityModel converts Garmin activity data to our internal Activity model
|
||||
func ToActivityModel(garminActivity *types.Activity) *models.Activity {
|
||||
return &models.Activity{
|
||||
ID: fmt.Sprintf("%d", garminActivity.ActivityID),
|
||||
Name: garminActivity.ActivityName,
|
||||
Description: garminActivity.Description,
|
||||
Type: garminActivity.ActivityType.TypeKey,
|
||||
ActivityType: MapGarminType(garminActivity.ActivityType),
|
||||
Date: garminActivity.StartTimeLocal.Time,
|
||||
Duration: time.Duration(garminActivity.Duration * float64(time.Second)),
|
||||
Distance: garminActivity.Distance,
|
||||
Elevation: garminActivity.ElevationGain,
|
||||
Calories: int(garminActivity.Calories),
|
||||
Metrics: models.ActivityMetrics{
|
||||
AvgHeartRate: int(garminActivity.AverageHR),
|
||||
MaxHeartRate: int(garminActivity.MaxHR),
|
||||
AvgSpeed: garminActivity.AverageSpeed,
|
||||
ElevationGain: garminActivity.ElevationGain,
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user