diff --git a/src/routers/books.js b/src/routers/books.js index 18b9a7c..d2e5e0f 100644 --- a/src/routers/books.js +++ b/src/routers/books.js @@ -1,4 +1,60 @@ // Import data here... +const express = require('express'); +const router = express.Router(); + + // Write routes here... +const { books } = require('../../data/index.js'); + +const findBook = (req, res) => { + const bookId = Number(req.params.id); + const foundBook = books.find((book) => book.id === bookId); + if (!foundBook) { + res + .status(404) + .json({ message: `Book with the ID ${bookId} does not exist!` }); + } + return foundBook; +}; + +router.get('/', (req, res) => { + res.status(200).json({ books }); +}); + +router.get('/:id', (req, res) => { + const foundBook = findBook(req, res); + res.status(200).json({ book: foundBook }); +}); + +router.post('/', (req, res) => { + const body = req.body; + const newBook = { + id: books.length + 1, + title: body.title, + type: body.type, + author: body.author, + pages: body.pages, + }; + books.push(newBook); + res.status(201).json({ book: newBook }); +}); + +router.delete('/:id', (req, res) => { + const bookDelete = findBook(req, res); + books.splice(books.indexOf(bookDelete), 1); + res.status(200).json({ book: bookDelete }); +}) + +router.put('/:id', (req, res) => { + const bookUpdate = findBook(req, res); + const body = req.body; + bookUpdate.title = body.title; + bookUpdate.type = body.type; + bookUpdate.author = body.author; + bookUpdate.pages = body.pages; + res.status(200).json({ book: bookUpdate }); +}) + +module.exports = router; \ No newline at end of file diff --git a/src/routers/films.js b/src/routers/films.js index e69de29..670cd29 100644 --- a/src/routers/films.js +++ b/src/routers/films.js @@ -0,0 +1,52 @@ +const express = require("express"); +const router = express.Router(); + +const { films } = require("../../data/index.js"); + +const findFilm = (req, res) => { + const filmId = Number(req.params.id); + const foundFilm = films.find((film) => film.id === filmId); + if (!foundFilm) { + res + .status(404) + .json({ message: `Film with the ID ${filmId} does not exist!` }); + } + return foundFilm; +}; + +router.get("/", (req, res) => { + res.status(200).json({ films }); +}); + +router.get("/:id", (req, res) => { + const foundFilm = findFilm(req, res); + res.status(200).json({ film: foundFilm }); +}); + +router.post("/", (req, res) => { + const body = req.body; + const newFilm = { + id: films.length + 1, + title: body.title, + director: body.director, + }; + films.push(newFilm); + res.status(201).json({ film: newFilm }); +}); + +router.delete("/:id", (req, res) => { + const filmDelete = findFilm(req, res); + films.splice(films.indexOf(filmDelete), 1); + return res.status(200).json({ film: filmDelete }); +}) + +router.put("/:id", (req, res) => { + const filmUpdate = findFilm(req, res); + const body = req.body; + filmUpdate.title = body.title; + filmUpdate.director = body.director; + res.status(200).json({ film: filmUpdate }); +}) + + +module.exports = router; \ No newline at end of file diff --git a/src/routers/users.js b/src/routers/users.js index e69de29..bd335a5 100644 --- a/src/routers/users.js +++ b/src/routers/users.js @@ -0,0 +1,53 @@ +const express = require("express"); +const router = express.Router(); + +const data = require("../../data/index.js"); + +const users = data.users; + +const findUser = (req, res) => { + const userId = Number(req.params.id); + + const foundUser = users.find((user) => user.id === userId); + + if (!foundUser) { + res + .status(404) + .json({ message: `User with the ID ${userId} does not exist!` }); + } + return foundUser; +}; + +router.get("/", (req, res) => { + res.status(200).json({ users: users }); +}); + +router.get("/:id", (req, res) => { + const foundUserById = findUser(req, res); + res.status(200).json({ user: foundUserById }); + }); + +router.post("/", (req, res) => { + const body = req.body + + const newUser = { + id: users.length + 1, + email: body.email, + } + users.push(newUser) + res.status(201).json({ user: newUser }) +}) + +router.delete("/:id", (req, res) => { + const userDelete = findUser(req, res); + users.splice(users.indexOf(userDelete), 1); + res.status(200).json({user : userDelete }); +}) + +router.put("/:id", (req, res) => { + const userUpdate = findUser(req, res); + userUpdate.email = req.body.email; + res.status(200).json({ user: userUpdate }); +}) + +module.exports = router; \ No newline at end of file diff --git a/src/server.js b/src/server.js index 715321f..4781635 100644 --- a/src/server.js +++ b/src/server.js @@ -11,8 +11,13 @@ 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 +// 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