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