From 0e046faf4afb7db260ea4797e8cf32ad13d70c6c Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 18 Feb 2019 11:47:25 +0900 Subject: みつけるの人気のタグを第2ソートで連合含めたユーザー数にしたりユーザーのタグ以外は除外するように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/endpoints/hashtags/list.ts | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src/server/api/endpoints') diff --git a/src/server/api/endpoints/hashtags/list.ts b/src/server/api/endpoints/hashtags/list.ts index 5c37dbd6b5..5f197a8726 100644 --- a/src/server/api/endpoints/hashtags/list.ts +++ b/src/server/api/endpoints/hashtags/list.ts @@ -11,16 +11,35 @@ export const meta = { default: 10 }, + attachedToUserOnly: { + validator: $.optional.bool, + default: false + }, + + attachedToLocalUserOnly: { + validator: $.optional.bool, + default: false + }, + + attachedToRemoteUserOnly: { + validator: $.optional.bool, + default: false + }, + sort: { validator: $.str.or([ '+mentionedUsers', '-mentionedUsers', '+mentionedLocalUsers', '-mentionedLocalUsers', + '+mentionedRemoteUsers', + '-mentionedRemoteUsers', '+attachedUsers', '-attachedUsers', '+attachedLocalUsers', '-attachedLocalUsers', + '+attachedRemoteUsers', + '-attachedRemoteUsers', ]), }, } @@ -31,23 +50,33 @@ const sort: any = { '-mentionedUsers': { mentionedUsersCount: 1 }, '+mentionedLocalUsers': { mentionedLocalUsersCount: -1 }, '-mentionedLocalUsers': { mentionedLocalUsersCount: 1 }, + '+mentionedRemoteUsers': { mentionedRemoteUsersCount: -1 }, + '-mentionedRemoteUsers': { mentionedRemoteUsersCount: 1 }, '+attachedUsers': { attachedUsersCount: -1 }, '-attachedUsers': { attachedUsersCount: 1 }, '+attachedLocalUsers': { attachedLocalUsersCount: -1 }, '-attachedLocalUsers': { attachedLocalUsersCount: 1 }, + '+attachedRemoteUsers': { attachedRemoteUsersCount: -1 }, + '-attachedRemoteUsers': { attachedRemoteUsersCount: 1 }, }; export default define(meta, (ps, me) => new Promise(async (res, rej) => { + const q = {} as any; + if (ps.attachedToUserOnly) q.attachedUsersCount = { $ne: 0 }; + if (ps.attachedToLocalUserOnly) q.attachedLocalUsersCount = { $ne: 0 }; + if (ps.attachedToRemoteUserOnly) q.attachedRemoteUsersCount = { $ne: 0 }; const tags = await Hashtag - .find({}, { + .find(q, { limit: ps.limit, sort: sort[ps.sort], fields: { tag: true, mentionedUsersCount: true, mentionedLocalUsersCount: true, + mentionedRemoteUsersCount: true, attachedUsersCount: true, - attachedLocalUsersCount: true + attachedLocalUsersCount: true, + attachedRemoteUsersCount: true } }); -- cgit v1.2.3-freya