From 66cad20696ddf91e759ffe10ab7233168733cadd Mon Sep 17 00:00:00 2001 From: Maxence Date: Wed, 29 Jan 2025 17:06:23 +0000 Subject: [PATCH] friend route modify --- app/dto/FriendListDTO.py | 8 -------- app/dto/__init__.py | 1 - app/main.py | 6 +++--- app/models/friend.py | 1 - app/serializers/friend_serializer.py | 14 +++++--------- tests/test_friends.py | 1 - 6 files changed, 8 insertions(+), 23 deletions(-) delete mode 100644 app/dto/FriendListDTO.py diff --git a/app/dto/FriendListDTO.py b/app/dto/FriendListDTO.py deleted file mode 100644 index 7b65d66..0000000 --- a/app/dto/FriendListDTO.py +++ /dev/null @@ -1,8 +0,0 @@ -from pydantic import BaseModel - -from app.models.friend import Friend - - -class FriendListDTO(BaseModel): - friends: list[Friend] - external_friends: list[Friend] \ No newline at end of file diff --git a/app/dto/__init__.py b/app/dto/__init__.py index cb3deeb..8295fe7 100644 --- a/app/dto/__init__.py +++ b/app/dto/__init__.py @@ -1,5 +1,4 @@ from .UserRegisterDTO import UserRegisterDTO from .FriendAddDTO import FriendAddDTO -from .FriendListDTO import FriendListDTO from .UserDTO import UserDTO from .PinDTO import PinDTO \ No newline at end of file diff --git a/app/main.py b/app/main.py index 15fe70d..94c1956 100644 --- a/app/main.py +++ b/app/main.py @@ -17,7 +17,7 @@ import app.serializers as serializers # Import all serializers (detailed in __in from app.models import User, Friend, Token, TokenData, HTTPError # Import all DTOs (detailed in __init__.py) -from app.dto import FriendAddDTO, FriendListDTO, UserDTO, UserRegisterDTO, PinDTO +from app.dto import FriendAddDTO, UserDTO, UserRegisterDTO, PinDTO # Contains all constants import app.config as config @@ -287,11 +287,11 @@ async def deny_friend(id: str, current_user: User = Depends(get_current_user)): @app.get( path="/friends", - response_model=FriendListDTO, + response_model=list[Friend], responses={401: {"model": HTTPError}} ) async def list_friends(current_user: User = Depends(get_current_user)): - return FriendListDTO(**serializers.friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list())) + return serializers.friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list()) @app.get( path="/users", diff --git a/app/models/friend.py b/app/models/friend.py index 371eab0..ac6dbf0 100644 --- a/app/models/friend.py +++ b/app/models/friend.py @@ -4,6 +4,5 @@ from pydantic import BaseModel, Field class Friend(BaseModel): id: Optional[str] - user_id: str friend_user_id: str status: str \ No newline at end of file diff --git a/app/serializers/friend_serializer.py b/app/serializers/friend_serializer.py index 0c2b582..3b55f0f 100644 --- a/app/serializers/friend_serializer.py +++ b/app/serializers/friend_serializer.py @@ -1,25 +1,21 @@ from app.models.friend import Friend -def friend_serialize(friend: list) -> Friend: +def friend_serialize(friend: list, is_external: bool) -> Friend: status = friend['status'] if 'status' in friend else 'pending' return Friend(**{ "id": str(friend["_id"]), - "user_id": friend["user_id"], - "friend_user_id": friend["friend_user_id"], + "friend_user_id": friend["user_id"] if is_external else friend["friend_user_id"], "status": status }) def friends_serialize(friends: list, external_friends: list) -> dict: - serialized_friends: dict = { - 'friends': [], - 'external_friends': [] - } + serialized_friends: list = [] for friend in friends: - serialized_friends["friends"].append(friend_serialize(friend)) + serialized_friends.append(friend_serialize(friend,False)) for external_friend in external_friends: - serialized_friends["external_friends"].append(friend_serialize(external_friend)) + serialized_friends.append(friend_serialize(external_friend,True)) return serialized_friends \ No newline at end of file diff --git a/tests/test_friends.py b/tests/test_friends.py index 146bff2..bc3d75c 100644 --- a/tests/test_friends.py +++ b/tests/test_friends.py @@ -17,7 +17,6 @@ def test_add_friend_myself(token): response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"}) assert response.status_code == 409 # Cannot add yourself as a friend - def test_list_friends(token): response = client.get("/friends", headers={"Authorization": f"Bearer {token}"}) assert response.status_code == 200