From 17274355616d7c665439a8b2de2e24016edcf8e6 Mon Sep 17 00:00:00 2001 From: sstent Date: Mon, 25 Aug 2025 05:36:30 -0700 Subject: [PATCH] checkpoint 3 --- cleanup.sh | 15 +++++++++++++++ internal/parser/activity.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100755 cleanup.sh create mode 100644 internal/parser/activity.go diff --git a/cleanup.sh b/cleanup.sh new file mode 100755 index 0000000..c226f16 --- /dev/null +++ b/cleanup.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# Move activity.go back to parser directory +mv internal/parser/activity.go internal/parser/activity.go + +# Remove extra directories +rm -rf internal/parser/activity + +# Revert import paths +find . -name '*.go' -exec sed -i \ + -e 's|parser/activity/activity|parser|g' \ + -e 's|github.com/sstent/garminsync-go/internal/parser/activity/activity|github.com/sstent/garminsync-go/internal/parser|g' \ + {} + + +# Remove unused fix_imports script +rm -f fix_imports.sh diff --git a/internal/parser/activity.go b/internal/parser/activity.go new file mode 100644 index 0000000..232879a --- /dev/null +++ b/internal/parser/activity.go @@ -0,0 +1,35 @@ +package parser + +import "time" + +// ActivityMetrics contains all metrics extracted from activity files +type ActivityMetrics struct { + ActivityType string + StartTime time.Time + Duration time.Duration + Distance float64 // in meters + MaxHeartRate int + AvgHeartRate int + AvgPower int + Calories int + Steps int + ElevationGain float64 // in meters + ElevationLoss float64 // in meters + MinTemperature float64 // in °C + MaxTemperature float64 // in °C + AvgTemperature float64 // in °C +} + +// Parser defines the interface for activity file parsers +type Parser interface { + ParseFile(filename string) (*ActivityMetrics, error) +} + +// FileType represents supported file formats +type FileType string + +const ( + FIT FileType = "fit" + TCX FileType = "tcx" + GPX FileType = "gpx" +)