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 }