diff --git a/src/controller/booksController.js b/src/controller/booksController.js new file mode 100644 index 0000000..2c0cf1e --- /dev/null +++ b/src/controller/booksController.js @@ -0,0 +1,50 @@ +const { books } = require('../../data/index.js') + +const getAll = (req, res) => { + res.status(200).json({books}) +} + +const createBook = (req, res) => { + const {title, type, author} = req.body + const id = books[books.length-1].id + 1 + + const newBook = {id, title, type, author} + books.push(newBook) + res.status(201).json({book : newBook}) +} + +const GetBookById = (req, res) => { + const id = Number(req.params.id) + const found = books.find(b => b.id === id) + + if(found === undefined) { + return res.status(404).json({mesasage : "Didnt find the Book!"}) + } + res.status(200).json({book : found}) +} + +const deleteById = (req, res) => { + const id = Number(req.params.id) + const bookIndex = books.findIndex(b => b.id === id) + + if(bookIndex === -1) { + return res.status(404).json({message : 'The Book dose not exist!'}) + } + const deletedBook = books.splice(bookIndex, 1) + res.status(200).json({book : deletedBook[0]}) +} + +const updateBookById = (req, res) => { + const id = Number(req.params.id) + const {title, type, author} = req.body + const bookIndex = books.findIndex(f => f.id === id) + + if(bookIndex === -1) { + return res.status(404).json({message : 'The Book dose not exist!'}) + } + books[bookIndex] = {id, title, type, author} + res.status(200).json({book : books[bookIndex]}) +} + + +module.exports = { getAll, createBook, GetBookById, deleteById, updateBookById } \ No newline at end of file diff --git a/src/controller/filmsContorller.js b/src/controller/filmsContorller.js new file mode 100644 index 0000000..57945dc --- /dev/null +++ b/src/controller/filmsContorller.js @@ -0,0 +1,49 @@ +const { films } = require('../../data/index.js') + +const getAll = (req, res) => { + res.status(200).json({ films }) +} + +const createFilm = (req, res) => { + const {title, director} = req.body + const id = films[films.length-1].id + 1 + + const newFilm = {id, title, director} + films.push(newFilm) + res.status(201).json({film : newFilm}) +} + +const GetFilmById = (req, res) => { + const id = Number(req.params.id) + const found = films.find(f => f.id === id) + + if(found === undefined) { + return res.status(404).json({mesasage : "Didnt find the Film!"}) + } + res.status(200).json({film : found}) +} + +const deleteById = (req, res) => { + const id = Number(req.params.id) + const filmIndex = films.findIndex(f => f.id === id) + + if(filmIndex === -1) { + return res.status(404).json({message : 'The film dose not exist!'}) + } + const deletedFilm = films.splice(filmIndex, 1) + res.status(200).json({film : deletedFilm[0]}) +} + +const updateFilmById = (req, res) => { + const id = Number(req.params.id) + const {title, director} = req.body + const filmIndex = films.findIndex(f => f.id === id) + + if(filmIndex === -1) { + return res.status(404).json({message : 'The film dose not exist!'}) + } + films[filmIndex] = {id, title, director} + res.status(200).json({film : films[filmIndex]}) +} + +module.exports = { getAll, createFilm, GetFilmById, deleteById, updateFilmById } \ No newline at end of file diff --git a/src/controller/usersContorller.js b/src/controller/usersContorller.js new file mode 100644 index 0000000..ce04636 --- /dev/null +++ b/src/controller/usersContorller.js @@ -0,0 +1,47 @@ +const {users} = require('../../data/index.js') + +const getAll = (req, res) => { + res.status(200).json({users}) +} + +const createUser = (req, res) => { + const {email} = req.body + const id = users[users.length-1].id + 1 + const newUser = {id, email} + users.push(newUser) + res.status(201).json({user : newUser}) +} + +const getUserById = (req, res) => { + const id = Number(req.params.id) + const found = users.find(u => u.id === id) + console.log(found) + if(found === undefined){ + return res.status(404).json({message : 'Didnt find the user!'}) + } + res.status(200).json({user:found}) +} + +const deleteUser = (req, res) => { + const id = Number(req.params.id) + const userIndex = users.findIndex(u => u.id === id) + if(userIndex === -1){ + return res.status(404).json({message : 'Didnt find the user!'}) + } + const deletedUser = users.splice(userIndex, 1) + res.status(200).json({user : deletedUser[0]}) +} + +const updateUser = (req, res) => { + const id = Number(req.params.id) + const { email } = req.body + const userIndex = users.findIndex(u => u.id === id) + if(userIndex === -1){ + return res.status(404).json({message : 'Didnt find the user!'}) + } + users[userIndex].email = email + res.status(200).json({user : users[userIndex]}) +} + + +module.exports = { getAll, createUser, getUserById, deleteUser, updateUser } \ No newline at end of file diff --git a/src/routers/books.js b/src/routers/books.js index 18b9a7c..b71d88f 100644 --- a/src/routers/books.js +++ b/src/routers/books.js @@ -1,4 +1,15 @@ // Import data here... +const express = require('express') +const router = express.Router() +const { getAll, createBook, GetBookById, deleteById, updateBookById } = require('../controller/booksController.js') +router.get('/', getAll) +router.post('/', createBook) -// Write routes here... +router.get('/:id', GetBookById) + +router.delete('/:id', deleteById) + +router.put('/:id', updateBookById) + +module.exports = router diff --git a/src/routers/films.js b/src/routers/films.js index e69de29..18e29fc 100644 --- a/src/routers/films.js +++ b/src/routers/films.js @@ -0,0 +1,17 @@ +const express = require('express') +const router = express.Router() +const { getAll, createFilm, GetFilmById, deleteById, updateFilmById } = require('../controller/filmsContorller.js') + +router.get('/', getAll ) + +router.post('/', createFilm) + +router.get('/:id', GetFilmById) + +router.delete('/:id', deleteById) + +router.put('/:id', updateFilmById) + +router.patch('/:id', updateFilmById) + +module.exports = router \ No newline at end of file diff --git a/src/routers/users.js b/src/routers/users.js index e69de29..7b54ad0 100644 --- a/src/routers/users.js +++ b/src/routers/users.js @@ -0,0 +1,15 @@ +const express = require('express') +const router = express.Router() +const { getAll, createUser, getUserById, deleteUser, updateUser } = require('../controller/usersContorller.js') + +router.get('/', getAll) + +router.post('/', createUser) + +router.get('/:id', getUserById) + +router.delete('/:id', deleteUser) + +router.put('/:id', updateUser) + +module.exports = router \ No newline at end of file diff --git a/src/server.js b/src/server.js index 715321f..e65d69e 100644 --- a/src/server.js +++ b/src/server.js @@ -10,9 +10,12 @@ app.use(express.json()); app.use(morgan("dev")); // REQUIRE ROUTERS -const usersRouter = require("./routers/users"); - +const usersRouter = require("./routers/users.js"); +const filmsRouter = require("./routers/films.js") +const booksRouter = require('./routers/books.js') // ADD ROUTERS TO APP - +app.use('/users', usersRouter) +app.use('/films', filmsRouter) +app.use('/books', booksRouter) module.exports = app