From a3f84ac9359be43cc2223292a7ea6b38533f4de8 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Thu, 23 Oct 2025 17:08:43 -0500 Subject: [PATCH] CLAUDE: Add team roster cache invalidation to all player mutations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- app/routers_v3/players.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/routers_v3/players.py b/app/routers_v3/players.py index c3a8218..9af9f82 100644 --- a/app/routers_v3/players.py +++ b/app/routers_v3/players.py @@ -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: