feat: global exercise-name autocomplete
Autocomplete now draws from every user's logged exercises, not just the requesting user's history. New users get suggestions from day one. - db.get_all_exercise_names(): case-insensitive grouping, ordered by usage count desc, alphabetical tiebreak, excludes names that only appear in soft-deleted workouts. - server.api_get_exercise_names simplified to a one-liner. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
3209136189
commit
0e4bf65d5b
3 changed files with 65 additions and 13 deletions
18
server.py
18
server.py
|
|
@ -17,7 +17,7 @@ from urllib.parse import parse_qs
|
|||
|
||||
from aiohttp import web
|
||||
|
||||
from db import init_db, get_db, save_workout, get_workouts, get_workout_count, get_stats_sql, delete_workout, update_workout, export_workouts, get_user_workout_number
|
||||
from db import init_db, save_workout, get_workouts, get_workout_count, get_stats_sql, delete_workout, update_workout, export_workouts, get_user_workout_number, get_all_exercise_names
|
||||
from parser import parse_workout, format_workout
|
||||
|
||||
logging.basicConfig(
|
||||
|
|
@ -263,18 +263,10 @@ async def api_delete_workout(request: web.Request):
|
|||
|
||||
@require_auth
|
||||
async def api_get_exercise_names(request: web.Request):
|
||||
"""Return unique exercise names this user has logged (for autocomplete)."""
|
||||
with get_db() as conn:
|
||||
rows = conn.execute(
|
||||
"""SELECT DISTINCT e.name
|
||||
FROM exercises e
|
||||
JOIN superset_groups sg ON sg.id = e.superset_group_id
|
||||
JOIN workouts w ON w.id = sg.workout_id
|
||||
WHERE w.user_id = ?
|
||||
ORDER BY e.name""",
|
||||
(request["user_id"],),
|
||||
).fetchall()
|
||||
return web.json_response({"exercises": [r["name"] for r in rows]})
|
||||
"""Return exercise names (for autocomplete), aggregated globally across
|
||||
all users and ordered by popularity.
|
||||
"""
|
||||
return web.json_response({"exercises": get_all_exercise_names()})
|
||||
|
||||
|
||||
@require_auth
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue