diff options
Diffstat (limited to 'src/server/api')
| -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 } }); |