From 109738ccb9ef8c203685e6f4bc31986ac2a17046 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 17 Sep 2018 09:00:20 +0900 Subject: ハッシュタグタイムラインを実装 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/endpoints/notes/search_by_tag.ts | 45 +++++++++++-------------- 1 file changed, 20 insertions(+), 25 deletions(-) (limited to 'src/server/api/endpoints') diff --git a/src/server/api/endpoints/notes/search_by_tag.ts b/src/server/api/endpoints/notes/search_by_tag.ts index 11bfe34724..7beb97aec6 100644 --- a/src/server/api/endpoints/notes/search_by_tag.ts +++ b/src/server/api/endpoints/notes/search_by_tag.ts @@ -13,12 +13,18 @@ export const meta = { }, params: { - tag: $.str.note({ + tag: $.str.optional.note({ desc: { 'ja-JP': 'タグ' } }), + query: $.arr($.arr($.str)).optional.note({ + desc: { + 'ja-JP': 'クエリ' + } + }), + includeUserIds: $.arr($.type(ID)).optional.note({ default: [] }), @@ -59,11 +65,9 @@ export const meta = { } }), - withFiles: $.bool.optional.nullable.note({ - default: null, - + withFiles: $.bool.optional.note({ desc: { - 'ja-JP': 'ファイルが添付された投稿に限定するか否か' + 'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します' } }), @@ -126,8 +130,14 @@ export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => } const q: any = { - $and: [{ + $and: [ps.tag ? { tagsLower: ps.tag.toLowerCase() + } : { + $or: ps.query.map(tags => ({ + $and: tags.map(t => ({ + tagsLower: t.toLowerCase() + })) + })) }], deletedAt: { $exists: false } }; @@ -281,25 +291,10 @@ export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => const withFiles = ps.withFiles != null ? ps.withFiles : ps.media; - if (withFiles != null) { - if (withFiles) { - push({ - fileIds: { - $exists: true, - $ne: null - } - }); - } else { - push({ - $or: [{ - fileIds: { - $exists: false - } - }, { - fileIds: null - }] - }); - } + if (withFiles) { + push({ + fileIds: { $exists: true, $ne: [] } + }); } if (ps.poll != null) { -- cgit v1.2.3-freya