From c2b1bbeec5f48eb96ea50914d80581aab5119bf3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 16 Feb 2019 06:50:58 +0900 Subject: Exploreページを実装 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/endpoints/users.ts | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'src/server/api') diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts index c0da464831..fa35235a1d 100644 --- a/src/server/api/endpoints/users.ts +++ b/src/server/api/endpoints/users.ts @@ -27,6 +27,18 @@ export const meta = { ]), }, + state: { + validator: $.optional.str.or([ + 'all', + 'admin', + 'moderator', + 'adminOrModerator', + 'verified', + 'alive' + ]), + default: 'all' + }, + origin: { validator: $.optional.str.or([ 'combined', @@ -72,10 +84,32 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { }; } - const q = + const q = { + $and: [] + } as any; + + // state + q.$and.push( + ps.state == 'admin' ? { isAdmin: true } : + ps.state == 'moderator' ? { isModerator: true } : + ps.state == 'adminOrModerator' ? { + $or: [{ + isAdmin: true + }, { + isModerator: true + }] + } : + ps.state == 'verified' ? { isVerified: true } : + ps.state == 'alive' ? { updatedAt: { $gt: new Date(Date.now() - (1000 * 60 * 60 * 24 * 5)) } } : + {} + ); + + // origin + q.$and.push( ps.origin == 'local' ? { host: null } : ps.origin == 'remote' ? { host: { $ne: null } } : - {}; + {} + ); const users = await User .find(q, { -- cgit v1.2.3-freya