feat(store): add workout_not_found_at, exclude it from missing-workout queries
A confirmed-404 workout must stop being retried forever, but workout_raw_json should never be fabricated -- it stays null exactly as it does for "not yet fetched." workout_not_found_at is the separate marker ActivitiesMissingWorkout/CountActivitiesMissingWorkout now check for, mirroring the existing pattern of the other _fetched_at columns. UpsertActivity's ON CONFLICT clause already never touches these columns, so the marker persists across every later re-sync.
This commit is contained in:
@@ -150,6 +150,14 @@ CREATE TABLE activities (
|
||||
-- Genuine raw get_workout_by_id() response, the source used to compute
|
||||
-- alignWorkoutTargets. Null when the activity has no workout_id.
|
||||
workout_raw_json TEXT,
|
||||
-- Set when get_workout_by_id returned a definitive HTTP 404 (the
|
||||
-- workout was deleted on Garmin's side after being linked to this
|
||||
-- activity) -- distinct from workout_raw_json staying null for "not yet
|
||||
-- fetched": this activity is excluded from ActivitiesMissingWorkout so
|
||||
-- it stops being retried forever (see
|
||||
-- docs/superpowers/specs/2026-07-27-workout-not-found-design.md).
|
||||
-- workout_raw_json itself is never fabricated; it just stays null.
|
||||
workout_not_found_at TEXT,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
||||
UNIQUE(user_id, garmin_activity_id)
|
||||
|
||||
Reference in New Issue
Block a user