みつけるの人気のタグを第2ソートで連合含めたユーザー数にしたりユーザーのタグ以外は除外するように

This commit is contained in:
syuilo
2019-02-18 11:47:25 +09:00
parent d9092dc81f
commit 0e046faf4a
4 changed files with 91 additions and 8 deletions

View File

@ -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
}
});