From ab8eefda25870a0495f4ba71f34ca4dae696d645 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 17 Mar 2018 23:01:17 +0900 Subject: :v: --- src/api/endpoints/users.ts | 48 ++++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 25 deletions(-) (limited to 'src/api') diff --git a/src/api/endpoints/users.ts b/src/api/endpoints/users.ts index 095b9fe40d..249faed368 100644 --- a/src/api/endpoints/users.ts +++ b/src/api/endpoints/users.ts @@ -16,40 +16,38 @@ module.exports = (params, me) => new Promise(async (res, rej) => { const [limit = 10, limitErr] = $(params.limit).optional.number().range(1, 100).$; if (limitErr) return rej('invalid limit param'); - // Get 'since_id' parameter - const [sinceId, sinceIdErr] = $(params.since_id).optional.id().$; - if (sinceIdErr) return rej('invalid since_id param'); + // Get 'offset' parameter + const [offset = 0, offsetErr] = $(params.offset).optional.number().min(0).$; + if (offsetErr) return rej('invalid offset param'); - // Get 'until_id' parameter - const [untilId, untilIdErr] = $(params.until_id).optional.id().$; - if (untilIdErr) return rej('invalid until_id param'); - - // Check if both of since_id and until_id is specified - if (sinceId && untilId) { - return rej('cannot set since_id and until_id'); - } + // Get 'sort' parameter + const [sort, sortError] = $(params.sort).optional.string().or('+follower|-follower').$; + if (sortError) return rej('invalid sort param'); // Construct query - const sort = { - _id: -1 - }; - const query = {} as any; - if (sinceId) { - sort._id = 1; - query._id = { - $gt: sinceId - }; - } else if (untilId) { - query._id = { - $lt: untilId + let _sort; + if (sort) { + if (sort == '+follower') { + _sort = { + followers_count: 1 + }; + } else if (sort == '-follower') { + _sort = { + followers_count: -1 + }; + } + } else { + _sort = { + _id: -1 }; } // Issue query const users = await User - .find(query, { + .find({}, { limit: limit, - sort: sort + sort: _sort, + skip: offset }); // Serialize -- cgit v1.2.3-freya