From e732a1d240731320c5dd33ff5c5174a267065c0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9B=90=EB=8D=94?= Date: Mon, 8 Feb 2021 22:41:34 +0900 Subject: [PATCH] feat: added bot search endpoint --- pages/api/v2/search/bots.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pages/api/v2/search/bots.ts diff --git a/pages/api/v2/search/bots.ts b/pages/api/v2/search/bots.ts new file mode 100644 index 0000000..697123b --- /dev/null +++ b/pages/api/v2/search/bots.ts @@ -0,0 +1,30 @@ +import { BotList } from '@types' +import { get } from '@utils/Query' +import ResponseWrapper from '@utils/ResponseWrapper' +import { SearchQuerySchema } from '@utils/Yup' +import { NextApiHandler, NextApiRequest, NextApiResponse } from 'next' + +const SearchBots: NextApiHandler = async (req: ApiRequest, res: NextApiResponse) => { + const validated = await SearchQuerySchema.validate({ q: req.query.q, page: req.query.page }).then(el => el).catch(e => { + ResponseWrapper(res, { code: 400, errors: e.errors }) + }) + if(!validated) return + + let result: BotList + try { + result = await get.list.search.load(JSON.stringify({ page: validated.page, query: validated.q })) + } catch { + return ResponseWrapper(res, { code: 400, message: '검색 문법이 잘못되었습니다.' }) + } + if(result.totalPage < validated.page || result.currentPage !== validated.page) return ResponseWrapper(res, { code: 404, message: '검색 결과가 없습니다.' }) + else ResponseWrapper(res, { code: 200, data: result }) +} + +interface ApiRequest extends NextApiRequest { + query: { + q: string + page: string + } +} + +export default SearchBots \ No newline at end of file