|
|
|
@ -1,4 +1,3 @@
|
|
|
|
|
|
|
|
|
|
from bson import ObjectId
|
|
|
|
|
import bson
|
|
|
|
|
from fastapi import APIRouter, HTTPException, status
|
|
|
|
@ -20,6 +19,7 @@ db = client[config.MONGODB_DATABASE]
|
|
|
|
|
|
|
|
|
|
friends_collection = db["friends"]
|
|
|
|
|
users_collection = db["users"]
|
|
|
|
|
pin_permissions_collection = db["pin_permissions"]
|
|
|
|
|
|
|
|
|
|
friends_router = APIRouter(
|
|
|
|
|
prefix="/friend",
|
|
|
|
@ -78,13 +78,31 @@ async def add_friend(friend_to_add: FriendAddDTO, current_user: User = Depends(g
|
|
|
|
|
)
|
|
|
|
|
async def delete_friend(id: str, current_user: User = Depends(get_current_user)):
|
|
|
|
|
try:
|
|
|
|
|
result = friends_collection.delete_one({"_id": ObjectId(id)})
|
|
|
|
|
except bson.errors.InvalidId:
|
|
|
|
|
objectid_misformatted()
|
|
|
|
|
# Récupérer l'ami avant de le supprimer pour avoir son ID
|
|
|
|
|
friend = friends_collection.find_one({"_id": ObjectId(id)})
|
|
|
|
|
if friend is None:
|
|
|
|
|
friend_not_found()
|
|
|
|
|
|
|
|
|
|
if result.deleted_count == 0: friend_not_found()
|
|
|
|
|
# Déterminer l'ID de l'autre utilisateur
|
|
|
|
|
other_user_id = friend["friend_user_id"] if friend["user_id"] == current_user.uid else friend["user_id"]
|
|
|
|
|
|
|
|
|
|
return {"message": "Friend deleted"}
|
|
|
|
|
# Supprimer l'ami
|
|
|
|
|
friends_collection.delete_one({"_id": ObjectId(id)})
|
|
|
|
|
|
|
|
|
|
# Supprimer toutes les permissions de partage de pins entre les deux utilisateurs
|
|
|
|
|
pin_permissions_collection.delete_many({
|
|
|
|
|
"$or": [
|
|
|
|
|
# Pins que l'utilisateur courant a partagés avec l'ami
|
|
|
|
|
{"user_id": other_user_id, "pin_id": {"$in": [pin["_id"] for pin in db["pins"].find({"user_id": current_user.uid})]}},
|
|
|
|
|
# Pins que l'ami a partagés avec l'utilisateur courant
|
|
|
|
|
{"user_id": current_user.uid, "pin_id": {"$in": [pin["_id"] for pin in db["pins"].find({"user_id": other_user_id})]}}
|
|
|
|
|
]
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return {"message": "Friend and associated pin shares deleted"}
|
|
|
|
|
|
|
|
|
|
except bson.errors.InvalidId:
|
|
|
|
|
objectid_misformatted()
|
|
|
|
|
|
|
|
|
|
@friends_router.patch(
|
|
|
|
|
path="/{id}/accept",
|
|
|
|
|