diff options
Diffstat (limited to 'web/sync.go')
| -rw-r--r-- | web/sync.go | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/web/sync.go b/web/sync.go index 0b95b93..f6dc7da 100644 --- a/web/sync.go +++ b/web/sync.go @@ -100,7 +100,7 @@ func (s *Server) handleSync(w http.ResponseWriter, r *http.Request) { return } enrichProgressRateLimit(&progress, client) - slog.Info("Completed Strava sync", "from", from.Format(dateFormat), "to", to.Add(-24*time.Hour).Format(dateFormat), "total", progress.Total, "imported", progress.Imported, "skipped", progress.Skipped, "readDaily", rateLimitLogValue(progress.RateLimit, true), "overallDaily", rateLimitLogValue(progress.RateLimit, false)) + slog.Info("Completed Strava sync", "from", from.Format(dateFormat), "to", to.Add(-24*time.Hour).Format(dateFormat), "total", progress.Total, "imported", progress.Imported, "skipped", progress.Skipped, "updated", progress.Updated, "readDaily", rateLimitLogValue(progress.RateLimit, true), "overallDaily", rateLimitLogValue(progress.RateLimit, false)) _ = writeSyncEvent(w, flusher, "complete", progress) } @@ -122,12 +122,24 @@ func (s *Server) syncRides(client syncClient, gpxDir string, from, to time.Time, } for _, summary := range activities { externalID := fmt.Sprintf("strava:%d", summary.ID) - _, exists, err := ride.GetByExternalID(s.db, externalID) + existing, exists, err := ride.GetByExternalID(s.db, externalID) if err != nil { return progress, err } if exists { - progress.Skipped++ + if existing.Name != summary.Name { + existing.Name = summary.Name + if err := ride.Save(s.db, existing); err != nil { + if reportErr := skipSyncActivity(&progress, report, summary, fmt.Errorf("resync metadata: %w", err)); reportErr != nil { + return progress, reportErr + } + continue + } + progress.Updated++ + slog.Info("Resynced Strava ride metadata", "activity", summary.ID, "name", summary.Name) + } else { + progress.Skipped++ + } progress.Completed++ if err := reportSyncProgress(report, progress); err != nil { return progress, err @@ -297,7 +309,7 @@ func rateLimitMessage(rateErr *strava.RateLimitError, progress SyncProgress) str progressText := "" if progress.Total > 0 { remaining := progress.Total - progress.Completed - progressText = fmt.Sprintf(" Progress: %d/%d completed, %d imported, %d skipped, %d remaining.", progress.Completed, progress.Total, progress.Imported, progress.Skipped, remaining) + progressText = fmt.Sprintf(" Progress: %d/%d completed, %d imported, %d skipped, %d updated, %d remaining.", progress.Completed, progress.Total, progress.Imported, progress.Skipped, progress.Updated, remaining) } return fmt.Sprintf("Strava %s rate limit reached.%s%s%s Re-run sync after the reset time to import remaining rides.", scope, progressText, usageText, retryText) } |
