diff --git a/backend/bracket/routes/tournaments.py b/backend/bracket/routes/tournaments.py index c8b57b6e..b0e52629 100644 --- a/backend/bracket/routes/tournaments.py +++ b/backend/bracket/routes/tournaments.py @@ -62,9 +62,14 @@ async def get_tournaments( raise unauthorized_exception case _, str(endpoint_name): - return TournamentsResponse( - data=[await sql_get_tournament_by_endpoint_name(endpoint_name)] - ) + tournament = await sql_get_tournament_by_endpoint_name(endpoint_name) + if tournament is None: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="Can't find this tournament", + headers={"WWW-Authenticate": "Bearer"}, + ) + return TournamentsResponse(data=[tournament]) case _, _ if isinstance(user, UserPublic): user_club_ids = await get_which_clubs_has_user_access_to(assert_some(user.id)) diff --git a/backend/bracket/sql/tournaments.py b/backend/bracket/sql/tournaments.py index 42e4e302..65ea5743 100644 --- a/backend/bracket/sql/tournaments.py +++ b/backend/bracket/sql/tournaments.py @@ -26,7 +26,7 @@ async def sql_get_tournament(tournament_id: int) -> Tournament: return Tournament.model_validate(dict(result._mapping)) -async def sql_get_tournament_by_endpoint_name(endpoint_name: str) -> Tournament: +async def sql_get_tournament_by_endpoint_name(endpoint_name: str) -> Tournament | None: query = """ SELECT * FROM tournaments @@ -34,8 +34,7 @@ async def sql_get_tournament_by_endpoint_name(endpoint_name: str) -> Tournament: AND dashboard_public IS TRUE """ result = await database.fetch_one(query=query, values={"endpoint_name": endpoint_name}) - assert result is not None - return Tournament.model_validate(dict(result._mapping)) + return Tournament.model_validate(result) if result is not None else None async def sql_get_tournaments(