from fastapi import APIRouter, Depends, HTTPException from core.database import fake_users_db import uuid router = APIRouter() @router.get("/users/{id}") async def get_user_handler( id: str = Path(..., description="User ID"), db: Session = Depends(get_db) ): """Get user by ID""" user = fake_users_db.get(id) if not user: raise HTTPException(status_code=404, detail="User not found") return { "message": "User found", "data": user, "metadata": { "source": "demo_db", "result_count": 1 } } @router.put("/users/{id}") async def update_user_handler( id: str = Path(..., description="User ID"), username: str = Body(..., description="Updated username"), email: str = Body(..., description="Updated email"), password: str = Body(..., description="Updated password"), db: Session = Depends(get_db) ): """Update user by ID""" user = fake_users_db.get(id) if not user: raise HTTPException(status_code=404, detail="User not found") user["username"] = username user["email"] = email user["password"] = password return { "message": "User updated successfully", "data": user } @router.delete("/users/{id}") async def delete_user_handler( id: str = Path(..., description="User ID"), db: Session = Depends(get_db) ): """Delete user by ID""" user = fake_users_db.pop(id, None) if not user: raise HTTPException(status_code=404, detail="User not found") return { "message": "User deleted successfully", "data": user } @router.get("/users") async def get_all_users_handler( db: Session = Depends(get_db) ): """Get all users""" users = list(fake_users_db.values()) return { "message": "Users retrieved successfully", "data": users, "metadata": { "source": "demo_db", "result_count": len(users) } }