1616- PUT /players/{player_id} : Update an existing Player.
1717- DELETE /players/{player_id} : Delete an existing Player.
1818"""
19+
1920from typing import List
2021from fastapi import APIRouter , Body , Depends , HTTPException , status , Path , Response
2122from sqlalchemy .ext .asyncio import AsyncSession
2930simple_memory_cache = SimpleMemoryCache ()
3031
3132CACHE_KEY = "players"
32- CACHE_TTL = 600 # 10 minutes
33+ CACHE_TTL = 600 # 10 minutes
3334
3435# POST -------------------------------------------------------------------------
3536
3839 "/players/" ,
3940 status_code = status .HTTP_201_CREATED ,
4041 summary = "Creates a new Player" ,
41- tags = ["Players" ]
42+ tags = ["Players" ],
4243)
4344async def post_async (
4445 player_model : PlayerModel = Body (...),
45- async_session : AsyncSession = Depends (generate_async_session )
46+ async_session : AsyncSession = Depends (generate_async_session ),
4647):
4748 """
4849 Endpoint to create a new player.
@@ -60,6 +61,7 @@ async def post_async(
6061 await player_service .create_async (async_session , player_model )
6162 await simple_memory_cache .clear (CACHE_KEY )
6263
64+
6365# GET --------------------------------------------------------------------------
6466
6567
@@ -68,11 +70,10 @@ async def post_async(
6870 response_model = List [PlayerModel ],
6971 status_code = status .HTTP_200_OK ,
7072 summary = "Retrieves a collection of Players" ,
71- tags = ["Players" ]
73+ tags = ["Players" ],
7274)
7375async def get_all_async (
74- response : Response ,
75- async_session : AsyncSession = Depends (generate_async_session )
76+ response : Response , async_session : AsyncSession = Depends (generate_async_session )
7677):
7778 """
7879 Endpoint to retrieve all players.
@@ -97,11 +98,11 @@ async def get_all_async(
9798 response_model = PlayerModel ,
9899 status_code = status .HTTP_200_OK ,
99100 summary = "Retrieves a Player by its Id" ,
100- tags = ["Players" ]
101+ tags = ["Players" ],
101102)
102103async def get_by_id_async (
103104 player_id : int = Path (..., title = "The ID of the Player" ),
104- async_session : AsyncSession = Depends (generate_async_session )
105+ async_session : AsyncSession = Depends (generate_async_session ),
105106):
106107 """
107108 Endpoint to retrieve a Player by its ID.
@@ -127,11 +128,11 @@ async def get_by_id_async(
127128 response_model = PlayerModel ,
128129 status_code = status .HTTP_200_OK ,
129130 summary = "Retrieves a Player by its Squad Number" ,
130- tags = ["Players" ]
131+ tags = ["Players" ],
131132)
132133async def get_by_squad_number_async (
133134 squad_number : int = Path (..., title = "The Squad Number of the Player" ),
134- async_session : AsyncSession = Depends (generate_async_session )
135+ async_session : AsyncSession = Depends (generate_async_session ),
135136):
136137 """
137138 Endpoint to retrieve a Player by its Squad Number.
@@ -146,24 +147,27 @@ async def get_by_squad_number_async(
146147 Raises:
147148 HTTPException: HTTP 404 Not Found error if the Player with the specified Squad Number does not exist.
148149 """
149- player = await player_service .retrieve_by_squad_number_async (async_session , squad_number )
150+ player = await player_service .retrieve_by_squad_number_async (
151+ async_session , squad_number
152+ )
150153 if not player :
151154 raise HTTPException (status_code = status .HTTP_404_NOT_FOUND )
152155 return player
153156
157+
154158# PUT --------------------------------------------------------------------------
155159
156160
157161@api_router .put (
158162 "/players/{player_id}" ,
159163 status_code = status .HTTP_204_NO_CONTENT ,
160164 summary = "Updates an existing Player" ,
161- tags = ["Players" ]
165+ tags = ["Players" ],
162166)
163167async def put_async (
164168 player_id : int = Path (..., title = "The ID of the Player" ),
165169 player_model : PlayerModel = Body (...),
166- async_session : AsyncSession = Depends (generate_async_session )
170+ async_session : AsyncSession = Depends (generate_async_session ),
167171):
168172 """
169173 Endpoint to entirely update an existing Player.
@@ -182,18 +186,19 @@ async def put_async(
182186 await player_service .update_async (async_session , player_model )
183187 await simple_memory_cache .clear (CACHE_KEY )
184188
189+
185190# DELETE -----------------------------------------------------------------------
186191
187192
188193@api_router .delete (
189194 "/players/{player_id}" ,
190195 status_code = status .HTTP_204_NO_CONTENT ,
191196 summary = "Deletes an existing Player" ,
192- tags = ["Players" ]
197+ tags = ["Players" ],
193198)
194199async def delete_async (
195200 player_id : int = Path (..., title = "The ID of the Player" ),
196- async_session : AsyncSession = Depends (generate_async_session )
201+ async_session : AsyncSession = Depends (generate_async_session ),
197202):
198203 """
199204 Endpoint to delete an existing Player.
0 commit comments