From fa954019fb0f66cd8c78cf60f0ac61639ad93fea Mon Sep 17 00:00:00 2001 From: counterweight Date: Sun, 1 Jun 2025 18:39:07 +0200 Subject: [PATCH] completed 3.5 --- parts/3/notes.md | 4 +-- parts/3/phonebookBackend/index.js | 32 +++++++++++++++++++ .../requests/create_person.rest | 7 ++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 parts/3/phonebookBackend/requests/create_person.rest diff --git a/parts/3/notes.md b/parts/3/notes.md index a765a7f..44bb16f 100644 --- a/parts/3/notes.md +++ b/parts/3/notes.md @@ -2,6 +2,6 @@ Exercises: * [X] 3.1 * [X] 3.2 * [X] 3.3 -* [ ] 3.4 -* [ ] 3.5 +* [X] 3.4 +* [X] 3.5 * [ ] 3.6 diff --git a/parts/3/phonebookBackend/index.js b/parts/3/phonebookBackend/index.js index de8237d..4abbd75 100644 --- a/parts/3/phonebookBackend/index.js +++ b/parts/3/phonebookBackend/index.js @@ -48,6 +48,38 @@ app.get("/api/persons/:id", (request, response) => { } }); +app.post("/api/persons/", (request, response) => { + if (!request.body.name || !request.body.number) { + return response.status(400).json({ + success: false, + message: "Malformed body.", + }); + } + + const nameIsInPhonebook = persons.find( + (person) => person.name == request.body.name + ); + + if (nameIsInPhonebook) { + return response.status(409).json({ + success: false, + message: "Name already in phonebook.", + }); + } + + const newId = Math.floor(Math.random() * 100_000_000 * 21); + + const personData = { + id: newId, + name: request.body.name, + number: request.body.number, + }; + + persons.push(personData); + + return response.status(201).json(personData); +}); + app.delete("/api/persons/:id", (request, response) => { const idToDelete = request.params.id; diff --git a/parts/3/phonebookBackend/requests/create_person.rest b/parts/3/phonebookBackend/requests/create_person.rest new file mode 100644 index 0000000..45a0a2f --- /dev/null +++ b/parts/3/phonebookBackend/requests/create_person.rest @@ -0,0 +1,7 @@ +POST http://localhost:3001/api/persons/ +Content-Type: application/json + +{ + "name": "MMMonica", + "number": "123-456" +} \ No newline at end of file