Skip to content

Commit d21f633

Browse files
Cheryl ChenCheryl Chen
Cheryl Chen
authored and
Cheryl Chen
committed
changed approved-acounts route for pagination
1 parent 41092c3 commit d21f633

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

routes/users.js

+19-8
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,34 @@ userRouter.get('/pending-accounts', async (req, res) => {
2828

2929
userRouter.get('/approved-accounts', async (req, res) => {
3030
try {
31-
const { keyword } = req.query;
31+
const { keyword, accountType } = req.query;
3232
let { page, limit } = req.query;
3333
page = isInteger(page) ? parseInt(page, 10) : 1;
3434
limit = isInteger(limit) ? parseInt(limit, 10) : 10;
3535
const offset = (page - 1) * limit;
36+
let queryString = 'FROM users WHERE approved = TRUE ';
37+
if (accountType === 'admin') {
38+
queryString += `AND type = 'admin'`;
39+
} else if (accountType === 'student') {
40+
queryString += `AND type = 'student'`;
41+
}
42+
let approvedAccounts;
43+
let params = [];
3644
if (keyword) {
37-
const userSearchResult = await db.query(
38-
`SELECT * FROM users WHERE approved = TRUE AND (first_name ILIKE $1 OR last_name ILIKE $2 OR email ILIKE $3 OR CONCAT(first_name, ' ', last_name) ILIKE $4) ORDER BY first_name ASC LIMIT $5 OFFSET $6;`,
39-
[`%${keyword}%`, `%${keyword}%`, `%${keyword}%`, `%${keyword}%`, limit, offset],
45+
params = [`%${keyword}%`, `%${keyword}%`, `%${keyword}%`, `%${keyword}%`, limit, offset];
46+
approvedAccounts = await db.query(
47+
`SELECT * ${queryString} AND (first_name ILIKE $1 OR last_name ILIKE $2 OR email ILIKE $3 OR CONCAT(first_name, ' ', last_name) ILIKE $4) ORDER BY first_name ASC LIMIT $5 OFFSET $6;`,
48+
params,
4049
);
41-
res.status(200).json(keysToCamel(userSearchResult));
4250
} else {
43-
const approvedAccounts = await db.query(
44-
`SELECT * FROM users WHERE approved = TRUE ORDER BY first_name ASC;`,
51+
params = [limit, offset];
52+
approvedAccounts = await db.query(
53+
`SELECT * ${queryString} ORDER BY first_name ASC LIMIT $1 OFFSET $2;`,
54+
params,
4555
);
46-
res.status(200).json(keysToCamel(approvedAccounts));
4756
}
57+
const userCount = await db.query(`SELECT COUNT(*) ${queryString};`, params);
58+
res.status(200).json(keysToCamel({ accounts: approvedAccounts, count: userCount }));
4859
} catch (err) {
4960
res.status(500).send(err.message);
5061
}

0 commit comments

Comments
 (0)