diff options
| author | Ran Guin <[email protected]> | 2021-07-26 19:20:21 -0700 |
|---|---|---|
| committer | Ran Guin <[email protected]> | 2021-07-26 19:20:21 -0700 |
| commit | 1c184089ef4704365c7b426a0fd7f13e68c63b36 (patch) | |
| tree | e083ede511df891d66e48fb35c4083bbbf75721f | |
| parent | b39971fbf6b3e141ff0a4bf1e2e7c1e379451753 (diff) | |
| download | coinos-server-1c184089ef4704365c7b426a0fd7f13e68c63b36.tar.gz coinos-server-1c184089ef4704365c7b426a0fd7f13e68c63b36.zip | |
add user search filtering for users, waiting list, accounts
| -rw-r--r-- | routes/admin.js | 59 |
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}) |
