Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions src/routers/books.js
Original file line number Diff line number Diff line change
@@ -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;
52 changes: 52 additions & 0 deletions src/routers/films.js
Original file line number Diff line number Diff line change
@@ -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;
53 changes: 53 additions & 0 deletions src/routers/users.js
Original file line number Diff line number Diff line change
@@ -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;
9 changes: 7 additions & 2 deletions src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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