Skip to content

Commit f415ef3

Browse files
committed
fix: Separate HRV and Resting HR queries in dashboard
The previous query for Resting HR relied on finding a record with HRV data, but older synced records may not have heart_rate_avg populated. Now each metric has its own independent query to find the most recent valid value. Stu Mason + AI <me@stumason.dev>
1 parent bc35f48 commit f415ef3

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

src/polar_flow_server/admin/routes.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -484,20 +484,31 @@ async def admin_dashboard(
484484
result = await session.execute(recent_sleep_stmt)
485485
recent_sleep = result.scalars().all()
486486

487-
# Get latest HRV and Resting HR from Nightly Recharge (measured during sleep)
487+
# Get latest HRV from Nightly Recharge
488488
latest_hrv = None
489-
latest_resting_hr = None
490-
latest_recharge_stmt = (
489+
latest_hrv_stmt = (
491490
select(NightlyRecharge)
492491
.where(NightlyRecharge.hrv_avg.isnot(None))
493492
.order_by(NightlyRecharge.date.desc())
494493
.limit(1)
495494
)
496-
recharge_result = await session.execute(latest_recharge_stmt)
497-
latest_recharge = recharge_result.scalar_one_or_none()
495+
hrv_result = await session.execute(latest_hrv_stmt)
496+
latest_recharge = hrv_result.scalar_one_or_none()
498497
if latest_recharge:
499498
latest_hrv = latest_recharge.hrv_avg
500-
latest_resting_hr = latest_recharge.heart_rate_avg
499+
500+
# Get latest Resting HR from Nightly Recharge (separate query - may be different record)
501+
latest_resting_hr = None
502+
resting_hr_stmt = (
503+
select(NightlyRecharge)
504+
.where(NightlyRecharge.heart_rate_avg.isnot(None))
505+
.order_by(NightlyRecharge.date.desc())
506+
.limit(1)
507+
)
508+
resting_hr_result = await session.execute(resting_hr_stmt)
509+
resting_hr_record = resting_hr_result.scalar_one_or_none()
510+
if resting_hr_record:
511+
latest_resting_hr = resting_hr_record.heart_rate_avg
501512

502513
# Get latest cardio load
503514
latest_cardio_stmt = select(CardioLoad).order_by(CardioLoad.date.desc()).limit(1)

0 commit comments

Comments
 (0)