const express = require("express"); const app = express(); app.use(express.json()); const persons = [ { id: "1", name: "Arto Hellas", number: "040-123456", }, { id: "2", name: "Ada Lovelace", number: "39-44-5323523", }, { id: "3", name: "Dan Abramov", number: "12-43-234345", }, { id: "4", name: "Mary Poppendieck", number: "39-23-6423122", }, ]; app.get("/api/persons", (request, response) => { response.json(persons); }); app.get("/api/persons/:id", (request, response) => { const requestedId = Number(request.params.id); const requestedPerson = persons.find( (person) => Number(person.id) === requestedId ); if (!requestedPerson) { return response.status(404).json({ error: "ID not found.", }); } if (requestedPerson) { return response.json(requestedPerson); } }); 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; const requestedPersonIndex = persons.findIndex((person) => { console.log(`Person ID: ${person.id}`); console.log(`ID to delete: ${idToDelete}`); console.log(`Do they match? ${person.id === idToDelete}`); return person.id === idToDelete; }); console.log(requestedPersonIndex); if (requestedPersonIndex !== -1) { persons.splice(requestedPersonIndex, 1); return response.status(204).json({ success: true }); } if (requestedPersonIndex === -1) { return response .status(404) .json({ success: true, message: "id not found" }); } }); app.get("/info", (request, response) => { let responseString = `
Phonebook has info for ${persons.length} people
`; responseString += `${new Date().toString()}
`; const id = request.params.id; response.send(responseString); }); const PORT = 3001; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });