|
1 | 1 | import { NextResponse, type NextRequest } from "next/server"; |
2 | | -import { connectToDatabase } from "@/lib/database/mongoose"; |
3 | | -import Paper from "@/db/papers"; |
4 | | -import { type IPaper } from "@/interface"; |
5 | | -import { escapeRegExp } from "@/lib/utils/regex"; |
6 | | -import { extractUniqueValues } from "@/lib/utils/paper-aggregation"; |
| 2 | +import { getPapersBySubject } from "@/lib/services/paper"; |
7 | 3 |
|
8 | 4 | export const dynamic = "force-dynamic"; |
9 | 5 |
|
10 | 6 | export async function GET(req: NextRequest) { |
11 | 7 | try { |
12 | | - await connectToDatabase(); |
13 | | - const url = req.nextUrl.searchParams; |
14 | | - const subject = url.get("subject"); |
15 | | - |
16 | | - if (!subject) { |
17 | | - return NextResponse.json( |
18 | | - { message: "Subject query parameter is required" }, |
19 | | - { status: 400 }, |
20 | | - ); |
21 | | - } |
22 | 8 |
|
23 | | - const escapedSubject = escapeRegExp(subject); |
24 | | - const papers: IPaper[] = await Paper.find({ |
25 | | - subject: { $regex: new RegExp(`${escapedSubject}`, "i") }, |
26 | | - }); |
| 9 | + const url = req.nextUrl.searchParams; |
| 10 | + const sub = url.get("subject"); |
27 | 11 |
|
28 | | - const uniqueValues = extractUniqueValues(papers); |
| 12 | + const paper = await getPapersBySubject(sub as string); |
29 | 13 |
|
30 | 14 | return NextResponse.json( |
31 | | - { |
32 | | - papers, |
33 | | - ...uniqueValues, |
34 | | - }, |
| 15 | + paper, |
35 | 16 | { status: 200 }, |
36 | 17 | ); |
37 | 18 | } catch (error) { |
| 19 | + if (error instanceof Error) { |
| 20 | + return NextResponse.json( |
| 21 | + { message: "Failed to fetch papers", error: error.message }, |
| 22 | + { status: error.message === "Subject query parameter is required" ? 400 : 500 }, |
| 23 | + ); |
| 24 | + } |
38 | 25 | return NextResponse.json( |
39 | | - { message: "Failed to fetch papers", error }, |
| 26 | + { message: "Failed to fetch papers", error}, |
40 | 27 | { status: 500 }, |
41 | 28 | ); |
42 | 29 | } |
|
0 commit comments