aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRan Guin <[email protected]>2021-07-26 19:20:21 -0700
committerRan Guin <[email protected]>2021-07-26 19:20:21 -0700
commit1c184089ef4704365c7b426a0fd7f13e68c63b36 (patch)
treee083ede511df891d66e48fb35c4083bbbf75721f
parentb39971fbf6b3e141ff0a4bf1e2e7c1e379451753 (diff)
downloadcoinos-server-1c184089ef4704365c7b426a0fd7f13e68c63b36.tar.gz
coinos-server-1c184089ef4704365c7b426a0fd7f13e68c63b36.zip
add user search filtering for users, waiting list, accounts
-rw-r--r--routes/admin.js59
1 files changed, 51 insertions, 8 deletions
diff --git a/routes/admin.js b/routes/admin.js
index b419fdf9..14bc0e41 100644
--- a/routes/admin.js
+++ b/routes/admin.js
@@ -28,17 +28,31 @@ router.get(
"/users",
// auth,
ah(async (req, res) => {
- var users = await knex
+ var {search, starts_with, contains} = req.query
+ var users = knex
.select('username', 'email', 'phone', 'verified', knex.raw('LEFT(createdAt,10) as created_at'))
.from('users')
+ if (starts_with) {
+ search = search + '%'
+ } else if (contains) {
+ search = '%' + search + '%'
+ }
+
+ if (search) {
+ users = users
+ .where('username', 'like', search)
+ .orWhere('email', 'like', search)
+ }
+ debug('search ? ' + search)
// Alternative Sequelize query syntax
// await db.User.findAll({
// attributes: ['username', 'email', 'phone', 'verified', 'createdAt']
// })
- debug('users: ' + JSON.stringify(users))
- return res.send({users: users})
+ const found = await users
+ debug('users: ' + JSON.stringify(found))
+ return res.send({users: found})
})
);
@@ -110,7 +124,9 @@ router.get(
"/waiting_list",
// auth,
ah(async (req, res) => {
- var queue = await knex
+ var {search, starts_with, contains} = req.query
+
+ var queue = knex
.select(
'waiting_list.email',
'waiting_list.phone',
@@ -121,8 +137,22 @@ router.get(
.leftJoin('users', 'users.email', 'waiting_list.email')
.where('waiting_list.id', '>', 0)
- debug('Waiting list: ' + JSON.stringify(queue))
- return res.send({queue: queue})
+ if (starts_with) {
+ search = search + '%'
+ } else if (contains) {
+ search = '%' + search + '%'
+ }
+
+ if (search) {
+ queue = queue
+ .where('waiting_list.email', 'like', search)
+ .orWhere('users.username', 'like', search)
+ }
+ debug('search ? ' + search)
+ const found = await queue
+
+ debug('Waiting list: ' + JSON.stringify(found))
+ return res.send({queue: found})
})
);
@@ -147,7 +177,7 @@ router.get(
"/accounts",
auth,
ah(async (req, res) => {
- const {nonZero} = req.query
+ var {nonZero, search, starts_with, contains} = req.query
var accounts = knex
.select('username', 'accounts.id as account_id', 'ticker', 'balance', knex.raw('LEFT(accounts.createdAt, 10) as created'), knex.raw('LEFT(accounts.updatedAt, 10) as updated'))
@@ -158,7 +188,20 @@ router.get(
accounts = accounts
.where('balance', '>', 0)
}
- var found = await accounts
+
+ if (starts_with) {
+ search = search + '%'
+ } else if (contains) {
+ search = '%' + search + '%'
+ }
+
+ if (search) {
+ accounts = accounts
+ .where('users.email', 'like', search)
+ .orWhere('users.username', 'like', search)
+ }
+ debug('search ? ' + search)
+ const found = await accounts
debug('accounts: ' + JSON.stringify(found))
return res.send({accounts: found})