Skip to content

Commit 9ec1838

Browse files
committed
Implement filtering by attributes
1 parent baea74d commit 9ec1838

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,6 @@ typings/
6161

6262
# next.js build output
6363
.next
64+
65+
# JetBrains IDEs
66+
.idea/*

core/db.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,10 @@ exports.getEntries = function(filter, callback){
6969
sql += (filter['active'] === 1 ? ' AND' : ' WHERE') + ' image != \'\'';
7070
}
7171

72-
let orderByDate = filter['orderByDate'] === 'asc' ? 'ASC' : 'DESC';
72+
let orderBy = filter['orderBy'] ? filter['orderBy'] : 'id';
73+
let order = filter['order'] ? filter['order'] : 'desc';
7374

74-
sql += ' ORDER BY ID ' + orderByDate + ' LIMIT ? OFFSET ?;';
75+
sql += ' ORDER BY ' + orderBy + ' '+ order + ' LIMIT ? OFFSET ?;';
7576

7677
// make the query
7778
connection.query(sql, [filter['limit'], filter['offset']], function(err, results) {

core/entryController.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,33 @@ exports.getAll = function(req, res) {
1111
const ORDER_BY_DATE_ASC = 'asc',
1212
ORDER_BY_DATE_DESC = 'desc';
1313

14+
const orderByAcceptedAttributes = [
15+
'id',
16+
'email',
17+
'firstname',
18+
'lastname',
19+
'country',
20+
'email_confirmed',
21+
'status',
22+
'anon',
23+
'created_at',
24+
'confirmed_at',
25+
];
26+
1427
let filter = {};
1528
filter['limit'] = parseInt(req.query.limit) || 10;
1629
filter['offset'] = parseInt(req.query.offset) || 0;
17-
filter['active'] = parseInt(req.query.isActive) || 1;
18-
filter['orderByDate'] = (req.query.orderByDate === ORDER_BY_DATE_ASC) ? ORDER_BY_DATE_ASC : ORDER_BY_DATE_DESC;
30+
filter['active'] = parseInt(req.query.isActive) === 0 ? 0 : 1;
1931
filter['profileImage'] = parseInt(req.query.profileImage) || 0;
2032

33+
// 'orderBy' && 'order' are parameters from the WP admin backend for ordering the entries list
34+
if (req.query.orderBy && orderByAcceptedAttributes.includes(req.query.orderBy)) {
35+
if (req.query.order && (req.query.order === 'asc' || req.query.order === 'desc')) {
36+
filter['orderBy'] = req.query.orderBy;
37+
filter['order'] = req.query.order;
38+
}
39+
}
40+
2141
db.getEntries(filter, function(results, err){
2242
if(!err){
2343
// format output where required

0 commit comments

Comments
 (0)