diff --git a/src/app/actions/get-papers-by-id.ts b/src/app/actions/get-papers-by-id.ts index 6909aa6..cb92e87 100644 --- a/src/app/actions/get-papers-by-id.ts +++ b/src/app/actions/get-papers-by-id.ts @@ -15,6 +15,10 @@ export const fetchPaperID = async (id: string): Promise => { return response.data.data; } catch (err: unknown) { if (axios.isAxiosError>(err)) { + const status = err.response?.status; + if (status === 400 || status === 404) { + throw err; + } const errorMessage = err.response?.data?.message ?? err.message; console.error("Axios error:", errorMessage); throw new Error(errorMessage); diff --git a/src/app/api/paper-by-id/[id]/route.ts b/src/app/api/paper-by-id/[id]/route.ts index 28b88c4..f70881e 100644 --- a/src/app/api/paper-by-id/[id]/route.ts +++ b/src/app/api/paper-by-id/[id]/route.ts @@ -1,21 +1,22 @@ import { Types } from "mongoose"; import { getPaperById } from "@/lib/services/paper"; import { success, failure } from "@/lib/utils/response" +import { customErrorHandler } from "@/lib/utils/error"; export const dynamic = "force-dynamic"; export async function GET(req: Request, { params }: { params: { id: string } }) { try { const { id } = params; - + if (!Types.ObjectId.isValid(id)) { return failure("Invalid paper ID"); } const paper = await getPaperById(id); - + return success(paper); } catch (error) { console.error(error); - return failure("Failed to fetch paper", 500); + return customErrorHandler(error, "Failed to fetch paper"); } } diff --git a/src/lib/services/paper.ts b/src/lib/services/paper.ts index 4eb52f4..10b1a93 100644 --- a/src/lib/services/paper.ts +++ b/src/lib/services/paper.ts @@ -7,6 +7,7 @@ import CourseCount from "@/db/course"; import PaperRequest from "@/db/paperRequest"; import { type StoredSubjects } from "@/interface"; import { transformPapersToSubjectSlots } from "@/lib/services/paper-transform"; +import { CustomError } from "@/lib/utils/error"; export interface CreatePaperInputType { subject: string; @@ -40,7 +41,7 @@ export async function getPaperById(id: string) { const paper = await Paper.findById(id); if (!paper) { - throw new Error("Paper not found"); // 404 + throw new CustomError("paper not found", 404); } return paper;