diff --git a/src/pages/api/find.ts b/src/pages/api/find.ts new file mode 100644 index 0000000..67e77ee --- /dev/null +++ b/src/pages/api/find.ts @@ -0,0 +1,37 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import Find, { FindQueryParams } from 'src/interfaces/shared/search'; +import getOrSetApiCache from 'src/utils/getOrSetApiCache'; +import basicSearch from 'src/utils/fetchers/basicSearch'; +import { cleanQueryStr } from 'src/utils/helpers'; +import { findKey } from 'src/utils/constants/keys'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + const queryObj = req.query as FindQueryParams; + const query = queryObj.q?.trim(); + + if(!query) { + res.status(200); + res.json({ + title: null, + results: null + }); + } + + try { + const entries = Object.entries(queryObj); + const queryStr = cleanQueryStr(entries); + const result = await getOrSetApiCache(findKey(queryStr), basicSearch, queryStr); + res.status(200); + res.json({ + title: query, + results: result + }); + } catch (error: any) { + const { message, statusCode } = error; + res.status(statusCode); + res.json({ + success: false, + message: message + }); + } +} diff --git a/src/pages/api/list/[listId].ts b/src/pages/api/list/[listId].ts new file mode 100644 index 0000000..515ba10 --- /dev/null +++ b/src/pages/api/list/[listId].ts @@ -0,0 +1,22 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import getOrSetApiCache from 'src/utils/getOrSetApiCache'; +import list from 'src/utils/fetchers/list'; +import { listKey } from 'src/utils/constants/keys'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + const listId = req.query.listId; + const pageNum = (req.query.page as string | undefined) ?? '1'; + + try { + const data = await getOrSetApiCache(listKey(listId, pageNum), list, listId, pageNum); + res.status(200); + res.json(data); + } catch (error: any) { + const { message, statusCode } = error; + res.status(statusCode); + res.json({ + success: false, + message: message + }); + } +} diff --git a/src/pages/api/name/[nameId].ts b/src/pages/api/name/[nameId].ts new file mode 100644 index 0000000..4fac6c7 --- /dev/null +++ b/src/pages/api/name/[nameId].ts @@ -0,0 +1,21 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import getOrSetApiCache from 'src/utils/getOrSetApiCache'; +import name from 'src/utils/fetchers/name'; +import { nameKey } from 'src/utils/constants/keys'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + const nameId = req.query.nameId; + + try { + const data = await getOrSetApiCache(nameKey(nameId), name, nameId); + res.status(200); + res.json(data); + } catch (error: any) { + const { message, statusCode } = error; + res.status(statusCode); + res.json({ + success: false, + message: message + }); + } +} diff --git a/src/pages/api/title/[titleId].ts b/src/pages/api/title/[titleId].ts new file mode 100644 index 0000000..19c41b6 --- /dev/null +++ b/src/pages/api/title/[titleId].ts @@ -0,0 +1,21 @@ +import { NextApiRequest, NextApiResponse } from 'next'; +import getOrSetApiCache from 'src/utils/getOrSetApiCache'; +import title from 'src/utils/fetchers/title'; +import { titleKey } from 'src/utils/constants/keys'; + +export default async function handler(req: NextApiRequest, res: NextApiResponse) { + const titleId = req.query.titleId; + + try { + const data = await getOrSetApiCache(titleKey(titleId), title, titleId); + res.status(200); + res.json(data); + } catch (error: any) { + const { message, statusCode } = error; + res.status(statusCode); + res.json({ + success: false, + message: message + }); + } +}