Skip to content

Commit e3d9c24

Browse files
JeffSafierclaude
andcommitted
Add PUT /users/:id endpoint and updateUser store function
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 19e97af commit e3d9c24

3 files changed

Lines changed: 32 additions & 1 deletion

File tree

NOTES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
## Notes
2+
3+
Added PUT /users/:id endpoint with name and email validation (400 if missing).
4+
Implemented updateUser in the in-memory store — returns null when the ID is not
5+
found so the route layer can cleanly respond with 404. All tests now pass.
6+
7+
Model used: Claude Sonnet

db/store.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,12 @@ function createUser({ name, email }) {
2424
return user;
2525
}
2626

27-
module.exports = { getAllUsers, getUserById, createUser };
27+
function updateUser(id, { name, email }) {
28+
const user = users.find((u) => u.id === id);
29+
if (!user) return null;
30+
user.name = name;
31+
user.email = email;
32+
return user;
33+
}
34+
35+
module.exports = { getAllUsers, getUserById, createUser, updateUser };

routes/users.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,20 @@ router.post("/", (req, res) => {
3232
res.status(201).json(user);
3333
});
3434

35+
// PUT /users/:id — update a user; name and email are required
36+
router.put("/:id", (req, res) => {
37+
const { name, email } = req.body;
38+
39+
if (!name || !email) {
40+
return res.status(400).json({ error: "name and email are required" });
41+
}
42+
43+
const updated = store.updateUser(Number(req.params.id), { name, email });
44+
if (!updated) {
45+
return res.status(404).json({ error: "User not found" });
46+
}
47+
48+
res.json(updated);
49+
});
50+
3551
module.exports = router;

0 commit comments

Comments
 (0)