Skip to content

Commit 265808b

Browse files
authored
Merge pull request #45 from Human-Connection/43-filter-entries-by-profile-image
Filter entries by profile image
2 parents 2be1eb7 + 0bf3322 commit 265808b

2 files changed

Lines changed: 32 additions & 14 deletions

File tree

core/db.js

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,30 @@ 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;
60+
}
61+
62+
let sql = 'SELECT * FROM entries';
63+
64+
if (filter['active'] === 1) {
65+
sql += ' WHERE email_confirmed = 1 AND status = 1';
66+
}
67+
68+
if (filter['profileImage'] === 1) {
69+
sql += (filter['active'] === 1 ? ' AND' : ' WHERE') + ' image != \'\'';
6270
}
6371

72+
let orderByDate = filter['orderByDate'] === 'asc' ? 'ASC' : 'DESC';
73+
74+
sql += ' ORDER BY ID ' + orderByDate + ' LIMIT ? OFFSET ?;';
75+
6476
// make the query
65-
connection.query(sql, [parseInt(limit), parseInt(offset)], function(err, results) {
77+
connection.query(sql, [filter['limit'], filter['offset']], function(err, results) {
6678
connection.release();
6779
if(err) { callback(results, true); return; }
6880
callback(results, false);

core/entryController.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@ 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'] = parseInt(req.query.limit) || 10;
16+
filter['offset'] = parseInt(req.query.offset) || 0;
17+
filter['active'] = parseInt(req.query.isActive) || 1;
18+
filter['orderByDate'] = (req.query.orderByDate === ODER_BY_DATE_ASC) ? ORDER_BY_DATE_ASC : ORDER_BY_DATE_DESC;
19+
filter['profileImage'] = parseInt(req.query.profileImage) || 0;
20+
21+
db.getEntries(filter, function(results, err){
1522
if(!err){
1623
// format output where required
1724
let out = [];
@@ -40,15 +47,14 @@ exports.getAll = function(req, res) {
4047
obj.image = '';
4148
}
4249

43-
4450
out.push(obj);
4551
});
4652

4753
res.status(200).json({
4854
success : true,
4955
results : out,
5056
totalCount : results.length,
51-
page : offset
57+
page : filter['offset']
5258
});
5359
}else{
5460
res.status(400).json({success : false, message : "error"});

0 commit comments

Comments
 (0)