Skip to content

Commit

Permalink
taglist, feeds
Browse files Browse the repository at this point in the history
  • Loading branch information
bhavishya2107 committed Feb 11, 2020
1 parent fc6b86b commit 2687db2
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 56 deletions.
35 changes: 13 additions & 22 deletions models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,37 +19,28 @@ var userSchema = new Schema({
type: String,
required: true
},
token: {
type: String
},
bio: {
type: String
},
image: {
type: String
},
following: {
type: [Schema.Types.ObjectId],
following: [{
type: Schema.Types.ObjectId,
ref: "User"
},
comments: {
type: [Schema.Types.ObjectId],
ref: "Comment"
},
articles: {
type: [Schema.Types.ObjectId],
}],
articles: [{
type: Schema.Types.ObjectId,
ref: "Article"
},
favorited: {
type: [Schema.Types.ObjectId],
}],
favorited: [{
type: Schema.Types.ObjectId,
ref: "Article"
},
followers: {
type: [String]
},
following: {
type: [String]
}
}],
followers: [{
type: Schema.Types.ObjectId,
ref: "User"
}]
}, { timestamps: true })


Expand Down
44 changes: 28 additions & 16 deletions routes/api/articles.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,46 @@ var Article = require('../../models/article');
var Comment = require('../../models/comment');
var User = require('../../models/user');
var auth = require('../../modules/auth');
var loggedUser = auth.verifyToken;
// var loggedUser = auth.verifyToken;
var updateSlug = auth.upateSlug;


//feed articles
router.get('/feed', auth.verifyToken, async (req, res) => {
try {
var user = await User.findById(req.user.UserId)
.populate({
path: 'following', populate: { path: 'articles' }
})
res.json({ success: true, feeds:user.following })
} catch (error) {
res.json({ error, msg: "errro" })
}
})


//get single article
router.get('/:slug', async (req, res) => {
var query = req.params.slug
try {
var singleArticle = await Article.findOne({ slug: query })
.populate('author','-following')
console.log(singleArticle)
.populate('author', '-following')
if (!singleArticle) return res.json({ success: false, msg: "Invalid Slug" })
res.json(singleArticle)
} catch (error) {
res.status(400).json(error, { msg: "Article not found or slug is not appropriate" })
}

})

//==================only for logged user===================
router.use(loggedUser)
// router.use(loggedUser)


//list all articles
router.get('/', async (req, res) => {
try {
var articles = await Article.find({})
.populate('author')
res.json({ success: true, articles })
} catch (error) {
res.json({ error, msg: "No articles found" })
Expand All @@ -38,19 +52,19 @@ router.get('/', async (req, res) => {
})

//create Article
router.post('/', async (req, res) => {
router.post('/', auth.verifyToken, async (req, res) => {
try {
var article = await Article.create(req.body.article)
var articleWithUser = await Article.findOneAndUpdate(article.id, { author: req.user.UserId })
var articleUpdate = await User.findByIdAndUpdate(req.user.UserId, {$push:{articles:article.id}})
res.json({ success: "true", articleWithUser })
} catch (error) {
res.status(400).json(error)
}
})


//update Article
router.put('/:slug', async (req, res) => {
router.put('/:slug', auth.verifyToken, async (req, res) => {
var slug = req.params.slug
try {
var updatedArticle = await Article.findOneAndUpdate({ slug }, req.body.article, { new: true })
Expand All @@ -63,7 +77,7 @@ router.put('/:slug', async (req, res) => {
})

//delete Article
router.delete('/:slug', async (req, res) => {
router.delete('/:slug', auth.verifyToken, async (req, res) => {
var slug = req.params.slug
try {
await Article.findOneAndDelete({ slug })
Expand All @@ -76,7 +90,7 @@ router.delete('/:slug', async (req, res) => {

// =======================COMMENTS========================================
//create comments
router.post('/:slug/comments', async (req, res) => {
router.post('/:slug/comments', auth.verifyToken, async (req, res) => {
console.log(req.user)
try {
var comment = await Comment.create(req.body.comment)
Expand All @@ -89,7 +103,7 @@ router.post('/:slug/comments', async (req, res) => {
})

//delete comment
router.delete('/:slug/comments/:id', async (req, res) => {
router.delete('/:slug/comments/:id', auth.verifyToken, async (req, res) => {
var slug = req.params.slug
try {
await Comment.findByIdAndDelete(req.params.id)
Expand All @@ -101,7 +115,7 @@ router.delete('/:slug/comments/:id', async (req, res) => {
})

//get all comments in an article
router.get('/:slug/comments', (req, res) => {
router.get('/:slug/comments', auth.verifyToken, (req, res) => {
console.log(req.user)
var slug = req.params.slug
Article.findOne({ slug })
Expand All @@ -113,7 +127,7 @@ router.get('/:slug/comments', (req, res) => {
})

//like an article
router.post('/:slug/favorite', async (req, res) => {
router.post('/:slug/favorite', auth.verifyToken, async (req, res) => {
var slug = req.params.slug
var user = req.user.UserId
try {
Expand All @@ -133,7 +147,7 @@ router.post('/:slug/favorite', async (req, res) => {
})

//dislike an article
router.delete('/:slug/favorite', async (req, res) => {
router.delete('/:slug/favorite', auth.verifyToken, async (req, res) => {
var slug = req.params.slug
var user = req.user.UserId
try {
Expand All @@ -150,6 +164,4 @@ router.delete('/:slug/favorite', async (req, res) => {
}
})



module.exports = router;
17 changes: 9 additions & 8 deletions routes/api/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,18 @@ var articleRouter = require('./articles');
var profilesRouter = require('./profiles');


router.get('/tags', (req, res) => {
Article.find({})
.populate({path:'tagList'})
.exec((err, tags) => {
if(err) return res.json(err)
res.json({tags})
})
router.get('/tags', async (req, res) => {
try {
var articles = await Article.find({})
articles.forEach((article) => {
res.json({success:true,tags:article.tagList})
})
} catch (error) {
res.json(error)
}
})

router.use('/', userRouter);

router.use('/articles', articleRouter);
router.use('/profiles', profilesRouter);

Expand Down
10 changes: 5 additions & 5 deletions routes/api/profiles.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ router.post('/:username/follow', async (req, res) => {
var user = await User.findOne({ username })
console.log(user)
if (!user.following.includes(loginUser)) {
var follow = await User.findOneAndUpdate({ username }, { $push: { following: req.user.UserId } })
await User.findByIdAndUpdate(req.user.UserId, { $push: { followers: follow.id } })
var follow = await User.findOneAndUpdate({ username }, { $push: { followers: req.user.UserId } }, { new: true })
await User.findByIdAndUpdate(req.user.UserId, { $push: { following: follow.id } })
res.json({ success: true, follow })
} else {
res.json({ msg: `you have already followed the ${username}`,follow })
res.json({ msg: `you have already followed the ${username}`, follow })
}
} catch (error) {
res.json({ msg: "Issue in following" })
Expand All @@ -48,8 +48,8 @@ router.delete('/:username/follow', async (req, res) => {
var user = await User.findOne({ username })
console.log(user)
if (user.following.includes(loginUser)) {
var follow = await User.findOneAndUpdate({ username }, { $pull: { following: req.user.UserId } })
await User.findByIdAndUpdate(req.user.UserId, { $pull: { followers: follow.id } })
var follow = await User.findOneAndUpdate({ username }, { $pull: { followers: req.user.UserId } }, { new: true })
await User.findByIdAndUpdate(req.user.UserId, { $pull: { following: follow.id } })
res.json({ success: true, msg: `successfully unfollowed ${username}` })
} else {
res.json({ msg: `you have already unfollowed the ${username}` })
Expand Down
11 changes: 6 additions & 5 deletions routes/api/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ var router = express.Router();
var User = require('../../models/user');
var auth = require('../../modules/auth');
var jwt = require('jsonwebtoken');
var loggedUser = auth.verifyToken;
// var loggedUser = auth.verifyToken;
var updatePW = auth.updatePW;


Expand All @@ -29,19 +29,20 @@ router.post('/users/login', async (req, res) => {
var payload = { UserId: user.id, email: user.email }
var token = await jwt.sign(payload, process.env.SECRET)
user.token = token
res.json({ success: "true", user })
res.json({ success: "true" , token})
} catch (error) {
res.status(400).json(error);
}
})


// ------------------------------------only for logged user------------------------------------------------
router.use(loggedUser)
// router.use(loggedUser)

//get single user
router.get('/user', async (req, res) => {
router.get('/user', auth.verifyToken,async (req, res) => {
var { username } = req.body.user
console.log(username)
try {
var user = await User.findOne({ username })
if (user) return res.json({ success: "true", user })
Expand All @@ -51,7 +52,7 @@ router.get('/user', async (req, res) => {
})

//update user
router.put('/user', async (req, res) => {
router.put('/user',auth.verifyToken, async (req, res) => {
let id = req.user.UserId;
console.log(req.user)
try {
Expand Down

0 comments on commit 2687db2

Please sign in to comment.