import { NextApiRequest, NextApiResponse } from 'next' import { get } from '@utils/Query' import RequestHandler from '@utils/RequestHandler' import ResponseWrapper from '@utils/ResponseWrapper' import { SearchQuerySchema } from '@utils/Yup' import { BotList } from '@types' const SearchBots = RequestHandler() .get(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