diff --git a/src/app/api/workouts/[id]/route.ts b/src/app/api/workouts/[id]/route.ts index 7b534a170..97fd208d5 100644 --- a/src/app/api/workouts/[id]/route.ts +++ b/src/app/api/workouts/[id]/route.ts @@ -135,10 +135,8 @@ export const GET = apiHandler( canonicalCluster.find((c) => c.id === row.id) ?? canonicalCluster[0] ?? null; - const effectiveAvgHeartRate = - canonical?.avgHeartRate ?? row.avgHeartRate; - const effectiveMaxHeartRate = - canonical?.maxHeartRate ?? row.maxHeartRate; + const effectiveAvgHeartRate = canonical?.avgHeartRate ?? row.avgHeartRate; + const effectiveMaxHeartRate = canonical?.maxHeartRate ?? row.maxHeartRate; // ── Enrichment reads (all over existing tables — no migration) ──── diff --git a/src/lib/measurements/__tests__/pick-canonical-workout-rows.test.ts b/src/lib/measurements/__tests__/pick-canonical-workout-rows.test.ts index 62f3fb58b..131aebb9e 100644 --- a/src/lib/measurements/__tests__/pick-canonical-workout-rows.test.ts +++ b/src/lib/measurements/__tests__/pick-canonical-workout-rows.test.ts @@ -111,9 +111,7 @@ describe("pickCanonicalWorkoutRows", () => { zoneDurations: { zone_one_milli: 60_000 }, }, }); - expect( - (picked.metadata as Record).zoneDurations, - ).toEqual({ + expect((picked.metadata as Record).zoneDurations).toEqual({ zone_one_milli: 60_000, }); expect(picked.metadata).not.toHaveProperty("whoopWorkoutStrain"); @@ -213,11 +211,7 @@ describe("pickCanonicalWorkoutRows", () => { metadata: { zoneDurations: { zone_three_milli: 60_000 } }, }; - const result = pickCanonicalWorkoutRows([ - apple, - wrongSport, - wrongWindow, - ]); + const result = pickCanonicalWorkoutRows([apple, wrongSport, wrongWindow]); expect(result.find((row) => row.id === "apple")).toMatchObject({ avgHeartRate: null, maxHeartRate: null, @@ -284,7 +278,9 @@ describe("pickCanonicalWorkoutRows", () => { ]); expect(result).toHaveLength(2); - expect(result.find((row) => row.id === "apple-u1")?.avgHeartRate).toBeNull(); + expect( + result.find((row) => row.id === "apple-u1")?.avgHeartRate, + ).toBeNull(); }); it("uses each WHOOP twin at most once for same-slot occurrences", () => { diff --git a/src/lib/measurements/pick-canonical-workout-rows.ts b/src/lib/measurements/pick-canonical-workout-rows.ts index e36604093..fd0567330 100644 --- a/src/lib/measurements/pick-canonical-workout-rows.ts +++ b/src/lib/measurements/pick-canonical-workout-rows.ts @@ -96,11 +96,7 @@ function sanitizedWhoopZoneDurations( for (const key of WHOOP_ZONE_DURATION_KEYS) { const value = raw[key]; if (value === undefined) continue; - if ( - typeof value !== "number" || - !Number.isFinite(value) || - value < 0 - ) { + if (typeof value !== "number" || !Number.isFinite(value) || value < 0) { return null; } sanitized[key] = value; @@ -116,10 +112,8 @@ function enrichFromWhoopTwin( const donorZones = sanitizedWhoopZoneDurations(donor.metadata); const needsZones = donorZones != null && winnerMetadata?.zoneDurations == null; - const needsAvg = - winner.avgHeartRate == null && donor.avgHeartRate != null; - const needsMax = - winner.maxHeartRate == null && donor.maxHeartRate != null; + const needsAvg = winner.avgHeartRate == null && donor.avgHeartRate != null; + const needsMax = winner.maxHeartRate == null && donor.maxHeartRate != null; if (!needsAvg && !needsMax && !needsZones) return winner;