Fix wellness sync crash: serialize intraday_hr as JSON string for psycopg2
psycopg2 treats Python lists as PostgreSQL arrays (bigint[]) rather than JSON, causing a DatatypeMismatch error on the json/jsonb column. Serializing with json.dumps() before the raw SQL INSERT fixes the type error. Also wrap per-day INSERT in try/except+rollback so one bad day doesn't abort the entire session, and add db.rollback() in tasks.py after sync_wellness failure so the final status-update commit can always succeed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -530,6 +530,7 @@ def sync_garmin_connect_user(user_id: int):
|
||||
)
|
||||
except Exception as exc:
|
||||
errors.append(f"wellness: {exc}")
|
||||
db.rollback() # recover session so the final status commit can succeed
|
||||
|
||||
cfg.last_sync_at = datetime.now(timezone.utc)
|
||||
cfg.last_sync_status = (
|
||||
|
||||
Reference in New Issue
Block a user