summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/notes/search.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-02 12:49:08 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-02 12:49:08 +0900
commita7e6b766be6b30b37839beb13f31d96b141cc25a (patch)
treeb6bf96ae808260f0aa94767835d59d25f7f889a7 /src/server/api/endpoints/notes/search.ts
parentUpdate src/server/api/endpoints/meta.ts (diff)
downloadmisskey-a7e6b766be6b30b37839beb13f31d96b141cc25a.tar.gz
misskey-a7e6b766be6b30b37839beb13f31d96b141cc25a.tar.bz2
misskey-a7e6b766be6b30b37839beb13f31d96b141cc25a.zip
Resolve #2623
Diffstat (limited to 'src/server/api/endpoints/notes/search.ts')
-rw-r--r--src/server/api/endpoints/notes/search.ts43
1 files changed, 30 insertions, 13 deletions
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
index 2755a70483..63a87c0f56 100644
--- a/src/server/api/endpoints/notes/search.ts
+++ b/src/server/api/endpoints/notes/search.ts
@@ -4,19 +4,36 @@ import Note from '../../../../models/note';
import { ILocalUser } from '../../../../models/user';
import { packMany } from '../../../../models/note';
import es from '../../../../db/elasticsearch';
+import getParams from '../../get-params';
-export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
- // Get 'query' parameter
- const [query, queryError] = $.str.get(params.query);
- if (queryError) return rej('invalid query param');
+export const meta = {
+ desc: {
+ 'ja-JP': '投稿を検索します。',
+ 'en-US': 'Search notes.'
+ },
+
+ requireCredential: false,
+
+ params: {
+ query: {
+ validator: $.str
+ },
- // Get 'offset' parameter
- const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
- if (offsetErr) return rej('invalid offset param');
+ limit: {
+ validator: $.num.optional.range(1, 100),
+ default: 10
+ },
- // Get 'limit' parameter
- const [limit = 10, limitErr] = $.num.optional.range(1, 30).get(params.limit);
- if (limitErr) return rej('invalid limit param');
+ offset: {
+ validator: $.num.optional.min(0),
+ default: 0
+ }
+ }
+};
+
+export default (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
+ const [ps, psErr] = getParams(meta, params);
+ if (psErr) return rej(psErr);
if (es == null) return rej('searching not available');
@@ -24,12 +41,12 @@ export default (params: any, me: ILocalUser) => new Promise(async (res, rej) =>
index: 'misskey',
type: 'note',
body: {
- size: limit,
- from: offset,
+ size: ps.limit,
+ from: ps.offset,
query: {
simple_query_string: {
fields: ['text'],
- query: query,
+ query: ps.query,
default_operator: 'and'
}
},