Add DB-only Player directory - #56
Conversation
Add GET /players as the first real Player-domain destination for #30. Seasons come from persisted player_seasons (newest first by default); search is a case- and accent-insensitive substring match over the selected season's catalog, capped at 50 results; selection by player_id requires membership in that season's catalog. Only identity fields are shown: no Player statistics, charts, or MLB calls. Primary navigation now exposes Teams and Players on every page, with the current domain marked by aria-current="location". Team routes, metric navigation, and query semantics are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@claude please review |
|
Claude finished @Mattsface's task in 3m 25s —— View job Review: Add DB-only Player directory
SummaryThis is a clean, well-scoped implementation that matches the PR description closely and follows the repo's layering rules ( Things I specifically verified as correct (not just assumed):
Minor nit (non-blocking)
Not verifiedI was unable to execute |
Summary
Continues GitHub issue #30 by adding the first real Player-domain destination.
GET /playersdirectoryplayer_seasonsplayer_idagainst the selected season's catalog membershipseason,q, andplayer_idPlayer UI scope
The Player page is intentionally limited to discovery and selection.
It shows only persisted identity information needed to confirm the selected Player and does not expose Player analytics.
This PR does not add:
Data semantics
Available Player seasons come from
player_seasons, not hitting rows.A selected Player must be a member of the selected season's persisted Player catalog. A globally known Player identity is not sufficient by itself.
Player name search reuses the existing case/accent folding used by Player catalog ordering.
Navigation
Primary navigation now contains:
Team metric navigation and all existing Team URLs remain unchanged.
Preserved behavior
This PR preserves:
/healthTesting
Adds coverage for:
Part of #30.