diff --git a/endpoints/users/update.post.py b/endpoints/users/update.post.py new file mode 100644 index 0000000..521e6fa --- /dev/null +++ b/endpoints/users/update.post.py @@ -0,0 +1,46 @@ +from fastapi import APIRouter, Depends, HTTPException +from core.auth import get_current_user_dummy +from core.database import fake_users_db + +router = APIRouter() + +@router.post("/users/update") +async def update_profile( + current_user: dict = Depends(get_current_user_dummy), + username: str = None, + email: str = None, + bio: str = None +): + """Update user profile information""" + if current_user["username"] not in fake_users_db: + raise HTTPException(status_code=404, detail="User not found") + + user_data = fake_users_db[current_user["username"]] + + if username and username != current_user["username"]: + if username in fake_users_db: + raise HTTPException(status_code=400, detail="Username already taken") + fake_users_db[username] = user_data + del fake_users_db[current_user["username"]] + current_user["username"] = username + + if email: + user_data["email"] = email + + if bio: + user_data["bio"] = bio + + return { + "message": "Profile updated successfully", + "user": { + "username": current_user["username"], + "email": user_data["email"], + "bio": user_data.get("bio", ""), + }, + "metadata": { + "updated_fields": [ + field for field in ["username", "email", "bio"] + if locals()[field] is not None + ] + } + } \ No newline at end of file