From 09bf2a8ac1aa2a85e6eaaefea3c19ec92eec9d3f Mon Sep 17 00:00:00 2001 From: knotteye Date: Thu, 30 Jul 2020 02:49:02 -0500 Subject: [PATCH] Add paging and sorting to /api/users/live and /api/users/all calls --- src/http.ts | 57 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/src/http.ts b/src/http.ts index e1e20dd..3b122b8 100644 --- a/src/http.ts +++ b/src/http.ts @@ -167,24 +167,65 @@ async function initAPI() { }) ); }); - app.get('/api/users/live', (req, res) => { - if(req.params.sort) { + app.post('/api/users/live', (req, res) => { + let qs = 'SELECT username,title FROM user_meta WHERE live=1'; + if(req.body.sort) { + switch (req.body.sort) { + case "alphabet": + qs += ' ORDER BY username ASC'; + break; + case "alphabet-r": + qs += ' ORDER BY username DESC'; + break; + default: + break; + } } - if(req.params.num){ + if(!req.body.num || req.body.num > 50 || req.body.num === NaN || req.body.num === Infinity || typeof(req.body.num) !== 'number'){ + req.body.num = 10; } - db.query('select username,title from user_meta where live=1 limit 10;').then((result) => { - res.send(result); + qs += ' LIMIT '+req.body.num; + + if(req.body.page && typeof(req.body.page) === 'number' && req.body.page !== NaN && req.body.page !== Infinity){ + qs += ' OFFSET '+Math.floor(req.body.num * req.body.page); + } + + db.query(qs+';').then((result) => { + if(result) res.send(result); + else res.send('{"error":""}'); }); }); - app.get('/api/users/all', (req, res) => { - if(req.params.sort) { + app.post('/api/users/all', (req, res) => { + let qs = 'SELECT username,title FROM user_meta'; + if(req.body.sort) { + switch (req.body.sort) { + case "alphabet": + qs += ' ORDER BY username ASC'; + break; + case "alphabet-r": + qs += ' ORDER BY username DESC'; + break; + default: + break; + } + } + + if(!req.body.num || req.body.num > 50 || req.body.num === NaN || req.body.num === Infinity || typeof(req.body.num) !== 'number'){ + req.body.num = 10; } - if(req.params.num) { + qs += ' LIMIT '+req.body.num; + if(req.body.page && typeof(req.body.page) === 'number' && req.body.page !== NaN && req.body.page !== Infinity){ + qs += ' OFFSET '+Math.floor(req.body.num * req.body.page); } + + db.query(qs+';').then((result) => { + if(result) res.send(result); + else res.send('{"error":""}'); + }); }); app.post('/api/register', (req, res) => { api.register(req.body.username, req.body.password, req.body.confirm).then( (result) => {