diff --git a/app/routes/hero_routes.js b/app/routes/hero_routes.js index 3a78143..309b2be 100644 --- a/app/routes/hero_routes.js +++ b/app/routes/hero_routes.js @@ -2,6 +2,7 @@ var passport = require('passport'); var express = require('express'); var config = require('../../config/main'); var jwt = require('jsonwebtoken'); +var _ = require('underscore') var Hero = require('../models/hero'); var User = require('../models/user'); @@ -9,13 +10,17 @@ module.exports = function (app) { var apiRoutes = express.Router(); apiRoutes.get('/', passport.authenticate('jwt', { session: false }), function (req, res) { - Hero.find({}, { _id: 0, __v: 0 }, function (err, heroes) { + var page_param = parseInt(req.query.page); + var page = _.isNaN(page_param) | page_param < 0 ? 0 : page_param; + const HEROES_PER_PAGE = 20; + + Hero.find({}, { _id: 0, __v: 0 }, function (err, heroes) { if (err) { res.json(err); } else { - res.json(heroes); + res.json(heroes); } - }).skip(parseInt(req.query['offset'] || 0)).limit(parseInt(req.query['limit'] || 20)); + }).skip(parseInt(req.query['offset'] || page * HEROES_PER_PAGE)).limit(parseInt(req.query['limit'] || HEROES_PER_PAGE)); }); @@ -58,8 +63,8 @@ module.exports = function (app) { }); }); - apiRoutes.get('/search/:params', passport.authenticate('jwt', { session: false }), function (req, res) { - var name = req.query.name; + apiRoutes.get('/search', passport.authenticate('jwt', { session: false }), function (req, res) { + let name = req.query.name; Hero.find({ name: {$regex: name, $options: 'i'}}, function (err, heroes) { if (err) { throw err; diff --git a/app/routes/hero_routes.js.orig b/app/routes/hero_routes.js.orig new file mode 100644 index 0000000..9217adc --- /dev/null +++ b/app/routes/hero_routes.js.orig @@ -0,0 +1,114 @@ +var passport = require('passport'); +var express = require('express'); +var config = require('../../config/main'); +var jwt = require('jsonwebtoken'); +var _ = require('underscore') +var Hero = require('../models/hero'); +var User = require('../models/user'); + +module.exports = function (app) { + var apiRoutes = express.Router(); + + apiRoutes.get('/', passport.authenticate('jwt', { session: false }), function (req, res) { + var page_param = parseInt(req.query.page); + var page = _.isNaN(page_param) | page_param < 0 ? 0 : page_param; + const HEROES_PER_PAGE = 20; + + Hero.find({}, { _id: 0, __v: 0 }, function (err, heroes) { + if (err) { + res.json(err); + } else { + res.json(heroes); + } + }).skip(parseInt(req.query['offset'] || page * HEROES_PER_PAGE)).limit(parseInt(req.query['limit'] || HEROES_PER_PAGE)); + }); + + + + apiRoutes.post('/favorite/:id', passport.authenticate('jwt', { session: false }), function (req, res) { + User.findOne({ email: req.user.email }, function (err, doc) { + if (err) throw err; + + var id = req.params.id; + if (doc.favorites.filter(x => x == id).length == 0) { + doc.favorites.push(id); + } + + doc.save(); + return res.status(200).json({ success: true, message: 'Successfully marked hero as favorite' }); + }); + }); + + apiRoutes.delete('/favorite/:id', passport.authenticate('jwt', { session: false }), function (req, res) { + User.findOne({ email: req.user.email }, function (err, doc) { + if (err) throw err; + + var index = doc.favorites.indexOf(req.params.id); + + if (index >= 0) { + doc.favorites.splice(index, 1); + } + + doc.save(); + return res.status(200).json({ success: true, message: 'Successfully unmarked hero as favorite' }); + }); + }); + + + apiRoutes.get('/favorite', passport.authenticate('jwt', { session: false }), function (req, res) { + User.findOne({ email: req.user.email }, function (err, doc) { + if (err) throw err; + + return res.status(200).json({ success: true, favorites: doc.favorites }); + }); + }); + +<<<<<<< HEAD + apiRoutes.get('/search/:params', passport.authenticate('jwt', { session: false }), function (req, res) { + var name = req.query.name; +======= + apiRoutes.get('/search', passport.authenticate('jwt', { session: false }), function (req, res) { + let name = req.query.name; +>>>>>>> 2c283eecb1ae39f1d51214ac55cc428a6722a2a2 + Hero.find({ name: {$regex: name, $options: 'i'}}, function (err, heroes) { + if (err) { + throw err; + } else { + return res.status(200).json({ success: true, result: heroes }); + } + }) + }); + + apiRoutes.get('/recommendation/:params', passport.authenticate('jwt', { session: false }), function (req, res) { + var name = req.query.name.split(" "); + var id = req.query.id; +/* var condition = ""; + for(var i = 0; i