checkpoint 3

This commit is contained in:
2025-08-25 05:43:38 -07:00
parent 1727435561
commit 8f0325f766
4 changed files with 49 additions and 24 deletions

View File

@@ -1,28 +1,16 @@
package parser
import "time"
import (
"time"
"github.com/sstent/garminsync-go/internal/models"
)
// 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
}
// ActivityMetrics is now defined in internal/models
// Parser defines the interface for activity file parsers
type Parser interface {
ParseFile(filename string) (*ActivityMetrics, error)
ParseFile(filename string) (*models.ActivityMetrics, error)
}
// FileType represents supported file formats

View File

@@ -7,6 +7,7 @@ import (
"time"
"github.com/tormoder/fit"
"github.com/sstent/garminsync-go/internal/models"
)
type FITParser struct{}
@@ -15,7 +16,7 @@ func NewFITParser() *FITParser {
return &FITParser{}
}
func (p *FITParser) ParseFile(filename string) (*ActivityMetrics, error) {
func (p *FITParser) ParseFile(filename string) (*models.ActivityMetrics, error) {
file, err := os.Open(filename)
if err != nil {
return nil, err
@@ -30,7 +31,7 @@ func (p *FITParser) ParseFile(filename string) (*ActivityMetrics, error) {
return p.ParseData(data)
}
func (p *FITParser) ParseData(data []byte) (*ActivityMetrics, error) {
func (p *FITParser) ParseData(data []byte) (*models.ActivityMetrics, error) {
fitFile, err := fit.Decode(data)
if err != nil {
return nil, fmt.Errorf("failed to decode FIT file: %w", err)
@@ -46,7 +47,7 @@ func (p *FITParser) ParseData(data []byte) (*ActivityMetrics, error) {
}
session := activity.Sessions[0]
metrics := &ActivityMetrics{}
metrics := &models.ActivityMetrics{}
// Basic activity metrics
metrics.StartTime = session.StartTime