Routen: Bestätigungs-Toast nach Ablaufen + "X× gelaufen · zuletzt" auf der Karte
- record_walk gibt total_km zurück → Toast "🐾 X km gezählt · Lebenswerk Y km". - Nachtrag-Toast (_flushPendingNavWalk) zeigt ebenfalls km + Lebenswerk. - list_routes liefert my_walk_count + my_last_walked → Routen-Karte zeigt "🐾 X× gelaufen · zuletzt heute/gestern/vor N Tagen". Macht für Angie sichtbar, dass das Ablaufen einer gespeicherten Route mitzählt.
This commit is contained in:
parent
91624dac25
commit
667ed91f33
7 changed files with 49 additions and 20 deletions
|
|
@ -95,6 +95,7 @@ async def list_routes(
|
|||
radius: int = 10000,
|
||||
user = Depends(get_current_user_optional),
|
||||
):
|
||||
_uid = user['id'] if user else -1
|
||||
with db() as conn:
|
||||
rows = conn.execute("""
|
||||
SELECT r.id, r.user_id, r.name, r.beschreibung,
|
||||
|
|
@ -106,11 +107,13 @@ async def list_routes(
|
|||
json_extract(r.gps_track, '$[0].lat') AS start_lat,
|
||||
json_extract(r.gps_track, '$[0].lon') AS start_lon,
|
||||
json_extract(r.gps_track, '$[#-1].lat') AS end_lat,
|
||||
json_extract(r.gps_track, '$[#-1].lon') AS end_lon
|
||||
json_extract(r.gps_track, '$[#-1].lon') AS end_lon,
|
||||
(SELECT COUNT(*) FROM route_walks w WHERE w.route_id=r.id AND w.user_id=?) AS my_walk_count,
|
||||
(SELECT MAX(walked_at) FROM route_walks w WHERE w.route_id=r.id AND w.user_id=?) AS my_last_walked
|
||||
FROM routes r
|
||||
LEFT JOIN users u ON u.id = r.user_id
|
||||
ORDER BY r.created_at DESC
|
||||
""").fetchall()
|
||||
""", (_uid, _uid)).fetchall()
|
||||
|
||||
result = []
|
||||
for row in rows:
|
||||
|
|
@ -492,7 +495,13 @@ async def record_walk(route_id: int, body: WalkRecord, user=Depends(get_current_
|
|||
)
|
||||
update_streak(uid, conn)
|
||||
new_badges = check_and_award(uid, conn)
|
||||
return {"ok": True, "new_badges": new_badges}
|
||||
total_km = conn.execute(
|
||||
"SELECT ROUND("
|
||||
" COALESCE((SELECT SUM(distanz_km) FROM routes WHERE user_id=? AND is_valid=1),0) +"
|
||||
" COALESCE((SELECT SUM(walked_km) FROM route_walks WHERE user_id=?),0), 1)",
|
||||
(uid, uid)
|
||||
).fetchone()[0]
|
||||
return {"ok": True, "new_badges": new_badges, "total_km": total_km}
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue