friend route modify
continuous-integration/drone/push Build is failing Details

master
Maxence JOUANNET 3 months ago
parent 055dbe1c62
commit 66cad20696

@ -1,8 +0,0 @@
from pydantic import BaseModel
from app.models.friend import Friend
class FriendListDTO(BaseModel):
friends: list[Friend]
external_friends: list[Friend]

@ -1,5 +1,4 @@
from .UserRegisterDTO import UserRegisterDTO
from .FriendAddDTO import FriendAddDTO
from .FriendListDTO import FriendListDTO
from .UserDTO import UserDTO
from .PinDTO import PinDTO

@ -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",

@ -4,6 +4,5 @@ from pydantic import BaseModel, Field
class Friend(BaseModel):
id: Optional[str]
user_id: str
friend_user_id: str
status: str

@ -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

@ -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

Loading…
Cancel
Save