mirror of
https://github.com/sstent/aicyclingcoach-go.git
synced 2026-01-28 18:11:37 +00:00
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
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,
|
|
},
|
|
}
|
|
}
|