diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-02-18 11:47:25 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-02-18 11:47:25 +0900 |
| commit | 0e046faf4afb7db260ea4797e8cf32ad13d70c6c (patch) | |
| tree | ec5e413011c0168ff4190edba678136c1d082b46 /src/server/api/endpoints | |
| parent | ユーザーが存在しない場合の表示を追加 (diff) | |
| download | sharkey-0e046faf4afb7db260ea4797e8cf32ad13d70c6c.tar.gz sharkey-0e046faf4afb7db260ea4797e8cf32ad13d70c6c.tar.bz2 sharkey-0e046faf4afb7db260ea4797e8cf32ad13d70c6c.zip | |
みつけるの人気のタグを第2ソートで連合含めたユーザー数にしたりユーザーのタグ以外は除外するように
Diffstat (limited to 'src/server/api/endpoints')
| -rw-r--r-- | src/server/api/endpoints/hashtags/list.ts | 33 |
1 files changed, 31 insertions, 2 deletions
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 } }); |