Skip to content

Commit

Permalink
Added pagination to tags and users route(s)
Browse files Browse the repository at this point in the history
  • Loading branch information
CheeseL0ver committed Nov 23, 2019
1 parent 6336077 commit 77d0323
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 36 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
node_modules/
*.swp
60 changes: 60 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"cors": "^2.8.5",
"express": "~4.16.1",
"knex": "^0.20.1",
"knex-paginator": "^2.0.0",
"pg": "^7.12.1",
"swagger-ui-express": "^4.1.2"
},
Expand Down
32 changes: 15 additions & 17 deletions routes/tag.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,34 @@
const express = require('express');
const router = express.Router();
const knex = require('../connect');
const setupPaginator = require('knex-paginator');

setupPaginator(knex);

//Select all tags (returns 15 results per query)
router.get("/tags", (req, res) => {
knex('Tag').select().then((tags) => {
res.json({
data: tags
});
}
);
knex.select().from('Tag')
.paginate(15, req.query.page || 1, true)
.then((tags) => {
res.status(200);
res.json({tags});
});
});

router.get("/tag/:tagname", (req, res) => {
knex('Tag').select().where('name', req.params.tagname).then((tag) => {
res.json({
data: tag
});
}
);
res.json({tag});
});
});

// Selects all questions with specified tag name
router.get("/tag/:tagname/questions", (req, res) => {
// First make a subquery getting question ids with specified tag
var subquery = knex('Question_Tags').select('question_id').where('tag_name', req.params.tagname);
let subquery = knex('Question_Tags').select('question_id').where('tag_name', req.params.tagname);
// Now use those ids to get questions
knex('Question').select().whereIn('id', subquery).then((questions) => {
res.json({
data: questions
});
}
);
res.json({questions});
});
});

module.exports = router;
36 changes: 17 additions & 19 deletions routes/user.js
Original file line number Diff line number Diff line change
@@ -1,33 +1,31 @@
const express = require('express');
const router = express.Router();
const knex = require('../connect');
const setupPaginator = require('knex-paginator');
setupPaginator(knex);

//Select all users (returns 15 results per query)
router.get("/users", (req, res) => {
knex('_User').select().then((users) => {
res.json({
data: users
});
}
);
knex.select().from('_User')
.paginate(15, req.query.page || 1, true)
.then((users) => {
res.status(200);
res.json({users});
});
});

//Select Single User
router.get("/user/:id", (req, res) => {
knex('_User').select().where('id', Number(req.params.id)).then((user) => {
res.json({
data: user
});
}
);
knex.select().from('_User').where('id', Number(req.params.id)).then((user) => {
res.json({user});
});
});

// Select all questions by specifed user
//Select all questions by specifed user
router.get("/user/:id/questions", (req, res) => {
knex('Question').select().where('user_id', Number(req.params.id)).then((questions) => {
res.json({
data: questions
});
}
);
knex.select().from('Question').where('user_id', Number(req.params.id)).then((questions) => {
res.json({questions});
});
});

module.exports = router;

0 comments on commit 77d0323

Please sign in to comment.