CLAUDE: Add team roster cache invalidation to all player mutations

- Fix unsafe dict access in PUT endpoint roster cache invalidation
- Add roster cache invalidation to PATCH, POST, and DELETE endpoints
- Use wildcard pattern to invalidate all roster caches since:
  * Team IDs may change in PUT/PATCH operations
  * Multiple teams affected in bulk POST operations
  * Ensures stale roster data is never served

This ensures team rosters are immediately updated when players are
added, removed, or transferred between teams.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Cal Corum 2025-10-23 17:08:43 -05:00
parent b39066e06d
commit a3f84ac935

View File

@ -208,6 +208,8 @@ async def put_player(
invalidate_cache("api:get_players*")
invalidate_cache("api:search_players*")
invalidate_cache(f"api:get_one_player*{player_id}*")
# Invalidate team roster cache (use wildcard since team may have changed)
invalidate_cache("api:get_team_roster*")
return r_player
@ -294,6 +296,8 @@ async def patch_player(
invalidate_cache("api:get_players*")
invalidate_cache("api:search_players*")
invalidate_cache(f"api:get_one_player*{player_id}*")
# Invalidate team roster cache (use wildcard since team may have changed)
invalidate_cache("api:get_team_roster*")
return r_player
else:
@ -329,6 +333,8 @@ async def post_players(p_list: PlayerList, token: str = Depends(oauth2_scheme)):
invalidate_cache("api:get_players*")
invalidate_cache("api:search_players*")
invalidate_cache("api:get_one_player*")
# Invalidate team roster cache (new players added to teams)
invalidate_cache("api:get_team_roster*")
return f'Inserted {len(new_players)} players'
@ -353,6 +359,8 @@ async def delete_player(player_id: int, token: str = Depends(oauth2_scheme)):
invalidate_cache("api:get_players*")
invalidate_cache("api:search_players*")
invalidate_cache(f"api:get_one_player*{player_id}*")
# Invalidate team roster cache (player removed from team)
invalidate_cache("api:get_team_roster*")
return f'Player {player_id} has been deleted'
else: