Skip to content

Commit 2601dea

Browse files
committed
Refactor getEntries & add ordering by date / id as parameter
1 parent 920e0c4 commit 2601dea

2 files changed

Lines changed: 27 additions & 14 deletions

File tree

core/db.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,26 @@ exports.isValidApiKey = function(secret, callback){
5151
});
5252
};
5353

54-
exports.getEntries = function(limit, offset, active, callback){
54+
exports.getEntries = function(filter, callback){
5555
pool.getConnection(function(err, connection) {
56-
if(err) { console.log(err); callback(true); return; }
57-
let sql = '';
58-
if(active === '0'){
59-
sql = "SELECT * FROM entries ORDER BY ID DESC LIMIT ? OFFSET ?;";
60-
}else{
61-
sql = "SELECT * FROM entries WHERE email_confirmed = 1 AND status = 1 ORDER BY ID DESC LIMIT ? OFFSET ?;";
56+
if(err) {
57+
console.log(err);
58+
callback(true);
59+
return;
6260
}
6361

62+
let sql = "SELECT * FROM entries";
63+
64+
if (filter['active'] !== '0') {
65+
sql += ' WHERE email_confirmed = 1 AND status = 1';
66+
}
67+
filter['orderByDate'] = 'asc';
68+
let orderByDate = filter['orderByDate'] === 'asc' ? 'ASC' : 'DESC';
69+
70+
sql += ' ORDER BY ID ' + orderByDate + ' LIMIT ? OFFSET ?;';
71+
6472
// make the query
65-
connection.query(sql, [parseInt(limit), parseInt(offset)], function(err, results) {
73+
connection.query(sql, [parseInt(filter['limit']), parseInt(filter['offset'])], function(err, results) {
6674
connection.release();
6775
if(err) { callback(results, true); return; }
6876
callback(results, false);

core/entryController.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,16 @@ let formidable = require('formidable'),
88
mailer = require('./mailer');
99

1010
exports.getAll = function(req, res) {
11-
let limit = req.query.limit || 10,
12-
offset = req.query.offset || 0,
13-
active = req.query.isActive || 1;
14-
db.getEntries(limit, offset, active, function(results, err){
11+
const ODER_BY_DATE_ASC = 'asc',
12+
ORDER_BY_DATE_DESC = 'desc';
13+
14+
let filter = {};
15+
filter['limit'] = req.query.limit || 10;
16+
filter['offset'] = req.query.offset || 0;
17+
filter['active'] = req.query.isActive || 1;
18+
filter['orderByDate'] = (req.query.sortByDate === ODER_BY_DATE_ASC) ? ORDER_BY_DATE_ASC : ORDER_BY_DATE_DESC;
19+
20+
db.getEntries(filter, function(results, err){
1521
if(!err){
1622
// format output where required
1723
let out = [];
@@ -40,15 +46,14 @@ exports.getAll = function(req, res) {
4046
obj.image = '';
4147
}
4248

43-
4449
out.push(obj);
4550
});
4651

4752
res.status(200).json({
4853
success : true,
4954
results : out,
5055
totalCount : results.length,
51-
page : offset
56+
page : filter['offset']
5257
});
5358
}else{
5459
res.status(400).json({success : false, message : "error"});

0 commit comments

Comments
 (0)