diff --git a/controllers/users.js b/controllers/users.js new file mode 100644 index 0000000..1543896 --- /dev/null +++ b/controllers/users.js @@ -0,0 +1,53 @@ +const users = require('../data/index'); +const sampleUser = require('../data/sampleUser'); + +const listUsers = (req, res) => { + res.json(users); +}; + +const showUser = (req, res) => { + const found = users.some((user) => user.id == req.params.id); + if (found) { + res.send(users.filter((user) => user.id == req.params.id)); + } else { + res.status(400).json({ msg: 'User not found' }); + } +}; + +const createUser = (req, res) => { + counter = users.length; + const newUser = sampleUser; + if (!newUser.name || !newUser.username) { + return res.status(400).json({ msg: 'Please include name and username' }); + } + users.push(newUser); + res.json(users); +}; + +const updateUser = (req, res) => { + const updateUser = req.body; + users.forEach((user) => { + if (user.id === parseInt(req.params.id)) { + if (user.name != updateUser.name) { + user.name = updateUser.name; + } else { + return user.name; + } + } + }); + res.json(users); +}; + +const deleteUser = (req, res) => { + const found = users.some((user) => user.id == req.params.id); + if (found) { + res.json({ + message: "Deleted", + users: users.filter((user) => user.id !== parseInt(req.params.id)), + }); + } else { + res.status(404).json({ msg: 'User not found' }); + } +}; + +module.exports = { listUsers, showUser, createUser, updateUser, deleteUser }; \ No newline at end of file diff --git a/index.js b/index.js index e9537d2..5a419d5 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,6 @@ const express = require('express') +const bodyParser = require('body-parser'); +const UsersRouter = require('./routes/users') const app = express() const port = process.env.PORT || 4000 @@ -6,4 +8,7 @@ app.get('/', (req, res) => res.send('default route')) app.listen(port, () => { console.log('app is listening on:', port) -}) \ No newline at end of file +}) + +app.use(bodyParser.json()) +app.use(UsersRouter) \ No newline at end of file diff --git a/routes/users.js b/routes/users.js new file mode 100644 index 0000000..8041638 --- /dev/null +++ b/routes/users.js @@ -0,0 +1,11 @@ +const express = require('express'); +const router = express.Router(); +const usersController = require('../controllers/users'); + +router.get('/users', usersController.listUsers); +router.get('/users/:id', usersController.showUser); +router.post('/users', usersController.createUser); +router.put('/users/:id', usersController.updateUser); +router.delete('/users/:id', usersController.deleteUser); + +module.exports = router; \ No newline at end of file