Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Notes

Added PUT /users/:id endpoint with name and email validation (400 if missing).
Implemented updateUser in the in-memory store — returns null when the ID is not
found so the route layer can cleanly respond with 404. All tests now pass.

Model used: Claude Sonnet
10 changes: 9 additions & 1 deletion db/store.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,12 @@ function createUser({ name, email }) {
return user;
}

module.exports = { getAllUsers, getUserById, createUser };
function updateUser(id, { name, email }) {
const user = users.find((u) => u.id === id);
if (!user) return null;
user.name = name;
user.email = email;
return user;
}

module.exports = { getAllUsers, getUserById, createUser, updateUser };
16 changes: 16 additions & 0 deletions routes/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,20 @@ router.post("/", (req, res) => {
res.status(201).json(user);
});

// PUT /users/:id — update a user; name and email are required
router.put("/:id", (req, res) => {
const { name, email } = req.body;

if (!name || !email) {
return res.status(400).json({ error: "name and email are required" });
}

const updated = store.updateUser(Number(req.params.id), { name, email });
if (!updated) {
return res.status(404).json({ error: "User not found" });
}

res.json(updated);
});

module.exports = router;