51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { NextRequest } from "next/server";
|
|
import { buildHandler } from "@/app/api/v1/utils/handler";
|
|
|
|
import { zUpdateBookmarksRequestSchema } from "@hoarder/shared/types/bookmarks";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export const GET = (
|
|
req: NextRequest,
|
|
{ params }: { params: { bookmarkId: string } },
|
|
) =>
|
|
buildHandler({
|
|
req,
|
|
handler: async ({ api }) => {
|
|
const bookmark = await api.bookmarks.getBookmark({
|
|
bookmarkId: params.bookmarkId,
|
|
});
|
|
return { status: 200, resp: bookmark };
|
|
},
|
|
});
|
|
|
|
export const PATCH = (
|
|
req: NextRequest,
|
|
{ params }: { params: { bookmarkId: string } },
|
|
) =>
|
|
buildHandler({
|
|
req,
|
|
bodySchema: zUpdateBookmarksRequestSchema.omit({ bookmarkId: true }),
|
|
handler: async ({ api, body }) => {
|
|
const bookmark = await api.bookmarks.updateBookmark({
|
|
bookmarkId: params.bookmarkId,
|
|
...body!,
|
|
});
|
|
return { status: 200, resp: bookmark };
|
|
},
|
|
});
|
|
|
|
export const DELETE = (
|
|
req: NextRequest,
|
|
{ params }: { params: { bookmarkId: string } },
|
|
) =>
|
|
buildHandler({
|
|
req,
|
|
handler: async ({ api }) => {
|
|
await api.bookmarks.deleteBookmark({
|
|
bookmarkId: params.bookmarkId,
|
|
});
|
|
return { status: 204 };
|
|
},
|
|
});
|