refactor(sync): remove dead Backfill/IncrementalSync exported wrappers
Both were only reachable via the periodic background sync loop removed
in 4d2cbe4 -- nothing in production calls them anymore, only tests did.
FullSync already calls backfillCore/incrementalSyncCore directly.
Rewrite the affected tests to call the *Core functions (still exported
within the package) instead, dropping the now-redundant standalone
SyncRun-recording assertion covered by TestFullSync_RecordsOneCombinedSyncRun.
This commit is contained in:
@@ -96,7 +96,7 @@ func (s *Service) setProgress(done, total int) {
|
||||
s.progressMu.Unlock()
|
||||
}
|
||||
|
||||
// Backfill pages backward in Config.BackfillWindowDays windows until
|
||||
// backfillCore pages backward in Config.BackfillWindowDays windows until
|
||||
// Profile.BackfillHorizonDays is reached or Garmin returns an empty page.
|
||||
// The horizon is read fresh from the profile on every call (not fixed at
|
||||
// server startup), so a user-edited value takes effect on the very next
|
||||
@@ -106,27 +106,10 @@ func (s *Service) setProgress(done, total int) {
|
||||
// completed backfill, or is a fast no-op if the configured horizon is
|
||||
// already fully covered -- it does not re-walk years of already-known
|
||||
// history. Widening the horizon between calls resumes further back instead
|
||||
// of re-fetching everything.
|
||||
func (s *Service) Backfill(ctx context.Context) error {
|
||||
runID, err := s.db.StartSyncRun(ctx, s.userID, store.SyncKindBackfill)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
total, err := s.backfillCore(ctx)
|
||||
if err != nil {
|
||||
msg := err.Error()
|
||||
s.db.FinishSyncRun(ctx, s.userID, runID, total, &msg)
|
||||
return err
|
||||
}
|
||||
return s.db.FinishSyncRun(ctx, s.userID, runID, total, nil)
|
||||
}
|
||||
|
||||
// backfillCore holds Backfill's actual fetch logic, without the SyncRun
|
||||
// bookkeeping, so FullSync can run it as one step of a single combined run
|
||||
// instead of its own separately-recorded one. The returned count reflects
|
||||
// whatever was fetched even when an error is also returned, matching
|
||||
// Backfill's own partial-progress-on-error behavior.
|
||||
// of re-fetching everything. Used by FullSync as one step of its single
|
||||
// combined SyncRun; there is no standalone entrypoint for this anymore
|
||||
// (the periodic background sync loop that used to call one is gone -- see
|
||||
// 4d2cbe4 refactor: remove automatic background incremental sync).
|
||||
func (s *Service) backfillCore(ctx context.Context) (int, error) {
|
||||
profile, err := s.db.GetProfile(ctx, s.userID)
|
||||
if err != nil {
|
||||
@@ -191,25 +174,10 @@ func (s *Service) backfillCore(ctx context.Context) (int, error) {
|
||||
return total, nil
|
||||
}
|
||||
|
||||
// IncrementalSync fetches activities from just before the latest known
|
||||
// activity (or a short recent window if none exist yet) through today.
|
||||
func (s *Service) IncrementalSync(ctx context.Context) error {
|
||||
runID, err := s.db.StartSyncRun(ctx, s.userID, store.SyncKindIncremental)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
n, err := s.incrementalSyncCore(ctx)
|
||||
if err != nil {
|
||||
msg := err.Error()
|
||||
s.db.FinishSyncRun(ctx, s.userID, runID, n, &msg)
|
||||
return err
|
||||
}
|
||||
return s.db.FinishSyncRun(ctx, s.userID, runID, n, nil)
|
||||
}
|
||||
|
||||
// incrementalSyncCore holds IncrementalSync's actual fetch logic, without
|
||||
// the SyncRun bookkeeping -- see backfillCore.
|
||||
// incrementalSyncCore fetches activities from just before the latest known
|
||||
// activity (or a short recent window if none exist yet) through today. Used
|
||||
// by FullSync as one step of its single combined SyncRun -- see
|
||||
// backfillCore's comment for why there's no standalone entrypoint.
|
||||
func (s *Service) incrementalSyncCore(ctx context.Context) (int, error) {
|
||||
start := s.now().AddDate(0, 0, -s.cfg.IncrementalOverlapDays)
|
||||
if latest, ok, err := s.db.LatestActivityStartTime(ctx, s.userID); err == nil && ok {
|
||||
@@ -221,15 +189,11 @@ func (s *Service) incrementalSyncCore(ctx context.Context) (int, error) {
|
||||
return newCount, err
|
||||
}
|
||||
|
||||
// FullSync performs a complete manual "Sync now" pass -- Backfill (resumes
|
||||
// from the watermark), then IncrementalSync (catches anything new since the
|
||||
// latest known activity), then FillPendingDetails -- recorded as a single
|
||||
// SyncRun. Backfill and IncrementalSync each record their own SyncRun when
|
||||
// called on their own (used by the periodic background loop), but a manual
|
||||
// sync runs both back to back, and FillPendingDetails records no run at all;
|
||||
// showing the user only the most recently *recorded* run (IncrementalSync's)
|
||||
// would silently hide however many activities Backfill fetched. Recording
|
||||
// one combined run makes the reported count match the whole action.
|
||||
// FullSync performs a complete manual "Sync now" pass -- backfillCore
|
||||
// (resumes from the watermark), then incrementalSyncCore (catches anything
|
||||
// new since the latest known activity), then FillPendingDetails --
|
||||
// recorded as a single SyncRun so the reported activity count covers the
|
||||
// whole action instead of only whichever stage happened to finish last.
|
||||
func (s *Service) FullSync(ctx context.Context, detailFillLimit int) error {
|
||||
runID, err := s.db.StartSyncRun(ctx, s.userID, store.SyncKindFull)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user