feat: add vo2max, hr zones, cadence, elevation to garmin sync

This commit is contained in:
2026-03-18 13:45:40 +01:00
parent 0030587898
commit cd6fbcc01e
+54 -9
View File
@@ -25,11 +25,6 @@ data:
start.isoformat(), today.isoformat() start.isoformat(), today.isoformat()
) )
if activities:
import json
print(json.dumps(activities[0], indent=2, default=str))
exit(0)
conn = psycopg2.connect(db_url) conn = psycopg2.connect(db_url)
cur = conn.cursor() cur = conn.cursor()
@@ -42,20 +37,59 @@ data:
duration_seconds FLOAT, duration_seconds FLOAT,
distance_meters FLOAT, distance_meters FLOAT,
avg_hr INTEGER, avg_hr INTEGER,
avg_pace FLOAT max_hr INTEGER,
avg_pace FLOAT,
vo2max FLOAT,
calories FLOAT,
elevation_gain FLOAT,
steps INTEGER,
cadence FLOAT,
hr_zone_1 FLOAT,
hr_zone_2 FLOAT,
hr_zone_3 FLOAT,
hr_zone_4 FLOAT,
hr_zone_5 FLOAT
) )
""") """)
cur.execute("""
ALTER TABLE activities
ADD COLUMN IF NOT EXISTS max_hr INTEGER,
ADD COLUMN IF NOT EXISTS vo2max FLOAT,
ADD COLUMN IF NOT EXISTS calories FLOAT,
ADD COLUMN IF NOT EXISTS elevation_gain FLOAT,
ADD COLUMN IF NOT EXISTS steps INTEGER,
ADD COLUMN IF NOT EXISTS cadence FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_1 FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_2 FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_3 FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_4 FLOAT,
ADD COLUMN IF NOT EXISTS hr_zone_5 FLOAT
""")
for a in activities: for a in activities:
cur.execute(""" cur.execute("""
INSERT INTO activities INSERT INTO activities
(id, name, type, start_time, duration_seconds, distance_meters, avg_hr, avg_pace) (id, name, type, start_time, duration_seconds, distance_meters,
VALUES (%s, %s, %s, %s, %s, %s, %s, %s) avg_hr, max_hr, avg_pace, vo2max, calories, elevation_gain,
steps, cadence, hr_zone_1, hr_zone_2, hr_zone_3, hr_zone_4, hr_zone_5)
VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
ON CONFLICT (id) DO UPDATE SET ON CONFLICT (id) DO UPDATE SET
duration_seconds = EXCLUDED.duration_seconds, duration_seconds = EXCLUDED.duration_seconds,
distance_meters = EXCLUDED.distance_meters, distance_meters = EXCLUDED.distance_meters,
avg_hr = EXCLUDED.avg_hr, avg_hr = EXCLUDED.avg_hr,
avg_pace = EXCLUDED.avg_pace max_hr = EXCLUDED.max_hr,
avg_pace = EXCLUDED.avg_pace,
vo2max = EXCLUDED.vo2max,
calories = EXCLUDED.calories,
elevation_gain = EXCLUDED.elevation_gain,
steps = EXCLUDED.steps,
cadence = EXCLUDED.cadence,
hr_zone_1 = EXCLUDED.hr_zone_1,
hr_zone_2 = EXCLUDED.hr_zone_2,
hr_zone_3 = EXCLUDED.hr_zone_3,
hr_zone_4 = EXCLUDED.hr_zone_4,
hr_zone_5 = EXCLUDED.hr_zone_5
""", ( """, (
a.get("activityId"), a.get("activityId"),
a.get("activityName"), a.get("activityName"),
@@ -64,7 +98,18 @@ data:
a.get("duration"), a.get("duration"),
a.get("distance"), a.get("distance"),
a.get("averageHR"), a.get("averageHR"),
a.get("maxHR"),
a.get("averageSpeed"), a.get("averageSpeed"),
a.get("vO2MaxValue"),
a.get("calories"),
a.get("elevationGain"),
a.get("steps"),
a.get("averageRunningCadenceInStepsPerMinute"),
a.get("hrTimeInZone_1"),
a.get("hrTimeInZone_2"),
a.get("hrTimeInZone_3"),
a.get("hrTimeInZone_4"),
a.get("hrTimeInZone_5"),
)) ))
conn.commit() conn.commit()