From a614e043e51bdecfb6c3fe570b955ca81410c862 Mon Sep 17 00:00:00 2001 From: Jack Miller <127975048+jdm1991@users.noreply.github.com> Date: Mon, 15 Jan 2024 12:51:23 +0000 Subject: [PATCH] Completed --- src/routers/books.js | 37 ++++++++++++++++++++-- src/routers/films.js | 58 +++++++++++++++++++++++++++++++++++ src/routers/users.js | 39 +++++++++++++++++++++++ src/server.js | 9 ++++-- test/api/routes/books.spec.js | 2 +- test/api/routes/films.spec.js | 2 +- test/api/routes/users.spec.js | 2 +- 7 files changed, 141 insertions(+), 8 deletions(-) diff --git a/src/routers/books.js b/src/routers/books.js index 18b9a7c..7c3219e 100644 --- a/src/routers/books.js +++ b/src/routers/books.js @@ -1,4 +1,37 @@ -// Import data here... +const express = require("express"); +const router = express.Router(); +const { books } = require("../../data/index"); +// Define routes for /users here +router.get("/", (req, res) => { + res.json({ books: books }); +}); -// Write routes here... +router.get("/:id", (req, res) => { + const id = parseInt(req.params.id); + const book = books.find((u) => u.id === id); + res.json({ book: book }); +}); + +router.post("/", (req, res) => { + const newBook = req.body; + newBook.id = books.length + 1; + books.push(newBook); + res.status(201).json({ book: newBook }); +}); + +router.put("/:id", (req, res) => { + const id = parseInt(req.params.id); + const bookIndex = books.findIndex((b) => b.id === id); + books[bookIndex] = { ...books[bookIndex], ...req.body, id: id }; + res.json({ book: books[bookIndex] }); +}); + +router.delete("/:id", (req, res) => { + const id = parseInt(req.params.id); + const bookIndex = books.findIndex((b) => b.id === id); + const book = books.splice(bookIndex, 1)[0]; + res.json({ book }); +}); + +module.exports = router; \ No newline at end of file diff --git a/src/routers/films.js b/src/routers/films.js index e69de29..809608c 100644 --- a/src/routers/films.js +++ b/src/routers/films.js @@ -0,0 +1,58 @@ +// Import data here... +const express = require('express') +const {films} = require("../../data/index") +const router = express.Router() + + +// Get request for all films +router.get("/", (req, res) => { +res.status(200).json({films: films}) +}) + +// Get request for a single id +router.get("/:id", (req, res) => { + const id = parseInt(req.params.id); + const film = films.find((film) => film.id === id) + + if(film){ + return res.status(200).json({film: film}) + } else { + return res.status(404).json({error: "No such film with this id"}) + } +}) + +// Post request to create new film +router.post("/", (req, res) => { + const newFilm = req.body; + newFilm.id = films.length + 1; + films.push(newFilm); + return res.status(201).json({film: newFilm}) +}) + +// Put request to update film +router.put("/:id", (req, res) => { +const id = parseInt(req.params.id); +const foundFilm = films.find(film => film.id === id) + +const updates = req.body; +Object.assign(foundFilm, updates) + +return res.status(200).json({film: foundFilm}) +}) + +// Delete request to delete film +router.delete("/:id", (req, res) => { + const id = parseInt(req.params.id); + const foundFilmId = films.findIndex(film => film.id === id) + + if(foundFilmId === -1){ + return res.status(404).json({error: "No such film with this id"}) + } + + const deleteFilm = films.splice(foundFilmId, 1)[0]; + + return res.status(200).json({film: deleteFilm}) +}) + +// Write routes here... +module.exports = router \ No newline at end of file diff --git a/src/routers/users.js b/src/routers/users.js index e69de29..4b39153 100644 --- a/src/routers/users.js +++ b/src/routers/users.js @@ -0,0 +1,39 @@ +// users.js + +const express = require("express"); +const router = express.Router(); +const { users } = require("../../data/index"); + +// Define routes for /users here +router.get("/", (req, res) => { + res.json({ users: users }); +}); + +router.get("/:id", (req, res) => { + const id = parseInt(req.params.id); + const user = users.find((u) => u.id === id); + res.json({ user: user }); +}); + +router.post("/", (req, res) => { + const newUser = req.body; + newUser.id = users.length + 1; + users.push(newUser); + res.status(201).json({ user: newUser }); +}); + +router.put("/:id", (req, res) => { + const id = parseInt(req.params.id); + const userIndex = users.findIndex((u) => u.id === id); + users[userIndex] = { ...users[userIndex], ...req.body, id: id }; + res.json({ user: users[userIndex] }); +}); + +router.delete("/:id", (req, res) => { + const id = parseInt(req.params.id); + const userIndex = users.findIndex((u) => u.id === id); + const user = users.splice(userIndex, 1)[0]; + res.json({ user }); + }); + +module.exports = router; \ No newline at end of file diff --git a/src/server.js b/src/server.js index 715321f..2fbc054 100644 --- a/src/server.js +++ b/src/server.js @@ -11,8 +11,11 @@ app.use(morgan("dev")); // REQUIRE ROUTERS const usersRouter = require("./routers/users"); +const filmsRouter = require("./routers/films") +const booksRouter = require("./routers/books") -// ADD ROUTERS TO APP +app.use('/users', usersRouter) +app.use('/films', filmsRouter) +app.use('/books', booksRouter) - -module.exports = app +module.exports = app; \ No newline at end of file diff --git a/test/api/routes/books.spec.js b/test/api/routes/books.spec.js index 77c3039..99650ff 100644 --- a/test/api/routes/books.spec.js +++ b/test/api/routes/books.spec.js @@ -73,4 +73,4 @@ describe("Books Endpoint", () => { expect(responseAfter.body.books.length).toEqual(3) }) }) -}) +}) \ No newline at end of file diff --git a/test/api/routes/films.spec.js b/test/api/routes/films.spec.js index 24590d0..65134b6 100644 --- a/test/api/routes/films.spec.js +++ b/test/api/routes/films.spec.js @@ -73,4 +73,4 @@ describe("Films Endpoint", () => { expect(responseAfter.body.films.length).toEqual(3) }) }) -}) +}) \ No newline at end of file diff --git a/test/api/routes/users.spec.js b/test/api/routes/users.spec.js index 8763f59..c1403e5 100644 --- a/test/api/routes/users.spec.js +++ b/test/api/routes/users.spec.js @@ -70,4 +70,4 @@ describe("Users Endpoint", () => { expect(responseAfter.body.users.length).toEqual(2) }) }) -}) +}) \ No newline at end of file