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
5 changes: 5 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
// code away!
const server = require (`./server`);

server.listen(4000, () => {
console.log(`\n*** Server Running on http://localhost:4000 *** \n`);
});
2 changes: 1 addition & 1 deletion posts/postRouter.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const express = 'express';
const express = require ('express');

const router = express.Router();

Expand Down
20 changes: 19 additions & 1 deletion server.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,33 @@
const express = 'express';
const express = require ('express');
const userRouter = require (`./users/userRouter`);
const postRouter = require (`./posts/postRouter`);

const server = express();


// constmiddlewarer = [
// logger
// ];

server.use(express.json());
// server.use(middleware);

server.use(`/api/users`, userRouter);
server.use(`/api/posts`, postRouter);


server.get('/', (req, res) => {
res.send(`<h2>Let's write some middleware!</h2>`)
});

//custom middleware

function logger(req, res, next) {
console.log({request_method:req.method, request_url:req.url, timestamp: Date().toString()});
next();

};



module.exports = server;
129 changes: 118 additions & 11 deletions users/userRouter.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,154 @@
const express = 'express';
const express = require ('express');

const User = require (`./userDb`);
const Post = require (`../posts/postDb`);

const router = express.Router();

router.post('/', (req, res) => {

});

router.post('/:id/posts', (req, res) => {
router.post('/', validateUser, (req, res) => {
res.status(201).json(req.user);
});

router.post('/:id/posts', validateUserId, validatePost, (req, res) => {
Post.insert(req.body)
.then(post => {
res.status(201).json(post);
})
.catch(err => {
res.status(500).json({message: `There was an error while creating the new post`});
})
});

router.get('/', (req, res) => {

User.get ()
.then(users => {
res.status(200).json(users);
})
.catch(err => {
res.status(500).json({ message: `there was an error trying to get the users from the database`});
});
});

router.get('/:id', (req, res) => {
router.get('/:id', validateUserId,(req, res) => {
const {id } = req.params;

User.getUserPosts(id)
.then(posts => {
res.status(200).json(posts);
})
.catch(err => {
res.status(500).json({ message: 'There was a problem getting the users posts' });
});

router.get('/:id/posts', (req, res) => {

});

router.delete('/:id', (req, res) => {
router.get('/:id/posts', (req, res) => {

});

router.put('/:id', (req, res) => {
router.delete('/:id', validateUserId, (req, res) => {
const { id } = req.params;
User.remove(id)
.then(num => {
if(num > 0) {
res.status(200).json(req.user); // return the user who was deleted
} else {
res.status(404).json({ message: 'user not found' });
};
})
.catch(err => {
res.status(500).json({ message: 'There was a problem deleting the user from the database' });
});
});

router.put('/:id', validateUserId, (req, res) => {
const { id } = req.params;

User.update(id, req.body)
.then(num => {
res.status(200).json({ message: 'User updated successfully!' });
})
.catch(err => {
if(!req.body.name) {
res.status(400).json({ message: 'The required name field does not exist' });
} else {
res.status(500).json({ message: 'There was an error updating the user' });
};
});
});

//custom middleware

function validateUserId(req, res, next) {
User.insert(req.body)
.then(user => {
req.user = user;
next();
})
.catch(err => {
if (Object.entries(req.body).length === 0) {
res.status(400).json({ message: `missing user data`});
} else if (!req.body.name) {
res.status(400).json({message: `missing required name field`});
} else {
res.status(500).json({ message: `there was a problem adding the user to the datebase `});
};
});





const [id] = req.params;
User.getById(id)
.then(user => {
if(user) {
req.user = user;
next();
}else {
res.status (400).json({message: `invalid user id`});
};
})
.catch(err => {
res.status(500).json({ message: `couldnt retrieve user`});
});
};

function validateUser(req, res, next) {

const {name} = req.body;
if(Object.entries(req.body).length === 0 ) {
res.status(400).json({ message: `Whoops! Missing userdata!`});
} else if (!name) {
res.status(400).json({ message: `Missing require name field`});
} else {
User.insert(req.body)
.then(user => {
req.user = user;
next();
})
.catch (err => {
res.status(500).json({ message: `There seems to be a problem adding the user to the database`});
});
};
};

function validatePost(req, res, next) {

const { text } = req.body;
if (Object.entries(req.body).length === 0) {
res.status(400).json ({ message: `missing post data`});
} else {
Post.insert(req.body)
.then(post => {
req.post = post;
next();
})
.catch(err => {
res.status(500).json({ message: `There was a problem adding the post to the database`});
});
};
};

module.exports = router;
Loading