mirror of
https://github.com/sstent/go-garth.git
synced 2026-01-26 17:11:42 +00:00
69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
package data
|
|
|
|
import (
|
|
"sort"
|
|
"time"
|
|
|
|
"garmin-connect/garth/client"
|
|
)
|
|
|
|
// HRVSummary represents Heart Rate Variability summary data
|
|
type HRVSummary struct {
|
|
UserProfilePK int `json:"userProfilePk"`
|
|
CalendarDate time.Time `json:"calendarDate"`
|
|
StartTimestampGMT time.Time `json:"startTimestampGmt"`
|
|
EndTimestampGMT time.Time `json:"endTimestampGmt"`
|
|
// Add other fields from Python implementation
|
|
}
|
|
|
|
// HRVReading represents an individual HRV reading
|
|
type HRVReading struct {
|
|
Timestamp int `json:"timestamp"`
|
|
StressLevel int `json:"stressLevel"`
|
|
HeartRate int `json:"heartRate"`
|
|
RRInterval int `json:"rrInterval"`
|
|
Status string `json:"status"`
|
|
SignalQuality float64 `json:"signalQuality"`
|
|
}
|
|
|
|
// HRVData represents complete HRV data
|
|
type HRVData struct {
|
|
UserProfilePK int `json:"userProfilePk"`
|
|
HRVSummary HRVSummary `json:"hrvSummary"`
|
|
HRVReadings []HRVReading `json:"hrvReadings"`
|
|
BaseData
|
|
}
|
|
|
|
// ParseHRVReadings converts values array to structured readings
|
|
func ParseHRVReadings(valuesArray [][]any) []HRVReading {
|
|
readings := make([]HRVReading, 0)
|
|
for _, values := range valuesArray {
|
|
if len(values) < 6 {
|
|
continue
|
|
}
|
|
|
|
// Extract values with type assertions
|
|
// Add parsing logic based on Python implementation
|
|
|
|
readings = append(readings, HRVReading{
|
|
// Initialize fields
|
|
})
|
|
}
|
|
sort.Slice(readings, func(i, j int) bool {
|
|
return readings[i].Timestamp < readings[j].Timestamp
|
|
})
|
|
return readings
|
|
}
|
|
|
|
// Get implements the Data interface for HRVData
|
|
func (h *HRVData) Get(day time.Time, client *client.Client) (any, error) {
|
|
// Implementation to be added
|
|
return nil, nil
|
|
}
|
|
|
|
// List implements the Data interface for concurrent fetching
|
|
func (h *HRVData) List(end time.Time, days int, client *client.Client, maxWorkers int) ([]any, error) {
|
|
// Implementation to be added
|
|
return []any{}, nil
|
|
}
|