Files
lixiyu-net/pages/api/search/[keyword].ts

26 lines
767 B
TypeScript
Raw Normal View History

2024-01-06 11:47:18 +08:00
import { SearchIndex } from "@/lib/search";
import { isEmptyString } from "@/lib/utils";
2024-09-26 16:48:47 +08:00
import type { TSearchResultItem } from "@/types/docs.type";
2024-01-06 11:47:18 +08:00
import type { NextApiRequest, NextApiResponse } from "next";
type ResponseData = TSearchResultItem[];
export default function handler(req: NextApiRequest, res: NextApiResponse<ResponseData>) {
const searchText = req.query.keyword as string;
if (isEmptyString(searchText)) {
res.status(200).json([]);
return;
}
if (searchText.length < 4) {
res.status(200).json([]);
return;
}
2024-01-06 11:47:18 +08:00
const result: TSearchResultItem[] = SearchIndex.search(searchText).map((item) => ({
id: item.id,
title: item.title,
2024-08-12 11:55:21 +08:00
summary: item.summary,
2024-01-06 11:47:18 +08:00
tags: item.tags,
}));
res.status(200).json(result);
}