aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/app/api/v1/bookmarks
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/app/api/v1/bookmarks')
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/[assetId]/route.ts37
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/route.ts36
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/highlights/route.ts18
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/lists/route.ts18
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/route.ts54
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/summarize/route.ts19
-rw-r--r--apps/web/app/api/v1/bookmarks/[bookmarkId]/tags/route.ts45
-rw-r--r--apps/web/app/api/v1/bookmarks/route.ts46
-rw-r--r--apps/web/app/api/v1/bookmarks/search/route.ts44
-rw-r--r--apps/web/app/api/v1/bookmarks/singlefile/route.ts54
10 files changed, 0 insertions, 371 deletions
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/[assetId]/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/[assetId]/route.ts
deleted file mode 100644
index 88e203de..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/[assetId]/route.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-import { z } from "zod";
-
-export const dynamic = "force-dynamic";
-
-export const PUT = (
- req: NextRequest,
- params: { params: { bookmarkId: string; assetId: string } },
-) =>
- buildHandler({
- req,
- bodySchema: z.object({ assetId: z.string() }),
- handler: async ({ api, body }) => {
- await api.assets.replaceAsset({
- bookmarkId: params.params.bookmarkId,
- oldAssetId: params.params.assetId,
- newAssetId: body!.assetId,
- });
- return { status: 204 };
- },
- });
-
-export const DELETE = (
- req: NextRequest,
- params: { params: { bookmarkId: string; assetId: string } },
-) =>
- buildHandler({
- req,
- handler: async ({ api }) => {
- await api.assets.detachAsset({
- bookmarkId: params.params.bookmarkId,
- assetId: params.params.assetId,
- });
- return { status: 204 };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/route.ts
deleted file mode 100644
index 6c7c70d7..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/assets/route.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-
-import { zAssetSchema } from "@karakeep/shared/types/bookmarks";
-
-export const dynamic = "force-dynamic";
-
-export const GET = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- handler: async ({ api }) => {
- const resp = await api.bookmarks.getBookmark({
- bookmarkId: params.params.bookmarkId,
- });
- return { status: 200, resp: { assets: resp.assets } };
- },
- });
-
-export const POST = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- bodySchema: zAssetSchema,
- handler: async ({ api, body }) => {
- const asset = await api.assets.attachAsset({
- bookmarkId: params.params.bookmarkId,
- asset: body!,
- });
- return { status: 201, resp: asset };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/highlights/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/highlights/route.ts
deleted file mode 100644
index 4e1f87a0..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/highlights/route.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-
-export const dynamic = "force-dynamic";
-
-export const GET = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- handler: async ({ api }) => {
- const resp = await api.highlights.getForBookmark({
- bookmarkId: params.params.bookmarkId,
- });
- return { status: 200, resp };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/lists/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/lists/route.ts
deleted file mode 100644
index ad3052c9..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/lists/route.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-
-export const dynamic = "force-dynamic";
-
-export const GET = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- handler: async ({ api }) => {
- const resp = await api.lists.getListsOfBookmark({
- bookmarkId: params.params.bookmarkId,
- });
- return { status: 200, resp };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/route.ts
deleted file mode 100644
index 9ad18fd3..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/route.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-
-import { zUpdateBookmarksRequestSchema } from "@karakeep/shared/types/bookmarks";
-
-import { zGetBookmarkQueryParamsSchema } from "../../utils/types";
-
-export const dynamic = "force-dynamic";
-
-export const GET = (
- req: NextRequest,
- { params }: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- searchParamsSchema: zGetBookmarkQueryParamsSchema,
- handler: async ({ api, searchParams }) => {
- const bookmark = await api.bookmarks.getBookmark({
- bookmarkId: params.bookmarkId,
- includeContent: searchParams.includeContent,
- });
- 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 };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/summarize/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/summarize/route.ts
deleted file mode 100644
index ea41cad4..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/summarize/route.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-
-export const dynamic = "force-dynamic";
-
-export const POST = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- handler: async ({ api }) => {
- const bookmark = await api.bookmarks.summarizeBookmark({
- bookmarkId: params.params.bookmarkId,
- });
-
- return { status: 200, resp: bookmark };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/[bookmarkId]/tags/route.ts b/apps/web/app/api/v1/bookmarks/[bookmarkId]/tags/route.ts
deleted file mode 100644
index 00c28afa..00000000
--- a/apps/web/app/api/v1/bookmarks/[bookmarkId]/tags/route.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { NextRequest } from "next/server";
-import { buildHandler } from "@/app/api/v1/utils/handler";
-import { z } from "zod";
-
-import { zManipulatedTagSchema } from "@karakeep/shared/types/bookmarks";
-
-export const dynamic = "force-dynamic";
-
-export const POST = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- bodySchema: z.object({
- tags: z.array(zManipulatedTagSchema),
- }),
- handler: async ({ api, body }) => {
- const resp = await api.bookmarks.updateTags({
- bookmarkId: params.params.bookmarkId,
- attach: body!.tags,
- detach: [],
- });
- return { status: 200, resp: { attached: resp.attached } };
- },
- });
-
-export const DELETE = (
- req: NextRequest,
- params: { params: { bookmarkId: string } },
-) =>
- buildHandler({
- req,
- bodySchema: z.object({
- tags: z.array(zManipulatedTagSchema),
- }),
- handler: async ({ api, body }) => {
- const resp = await api.bookmarks.updateTags({
- bookmarkId: params.params.bookmarkId,
- detach: body!.tags,
- attach: [],
- });
- return { status: 200, resp: { detached: resp.detached } };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/route.ts b/apps/web/app/api/v1/bookmarks/route.ts
deleted file mode 100644
index 4df4f6ad..00000000
--- a/apps/web/app/api/v1/bookmarks/route.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import { NextRequest } from "next/server";
-import { z } from "zod";
-
-import {
- zNewBookmarkRequestSchema,
- zSortOrder,
-} from "@karakeep/shared/types/bookmarks";
-
-import { buildHandler } from "../utils/handler";
-import { adaptPagination, zPagination } from "../utils/pagination";
-import { zStringBool } from "../utils/types";
-
-export const dynamic = "force-dynamic";
-
-export const GET = (req: NextRequest) =>
- buildHandler({
- req,
- searchParamsSchema: z
- .object({
- favourited: zStringBool.optional(),
- archived: zStringBool.optional(),
- sortOrder: zSortOrder
- .exclude([zSortOrder.Enum.relevance])
- .optional()
- .default(zSortOrder.Enum.desc),
- // TODO: Change the default to false in a couple of releases.
- includeContent: zStringBool.optional().default("true"),
- })
- .and(zPagination),
- handler: async ({ api, searchParams }) => {
- const bookmarks = await api.bookmarks.getBookmarks({
- ...searchParams,
- });
- return { status: 200, resp: adaptPagination(bookmarks) };
- },
- });
-
-export const POST = (req: NextRequest) =>
- buildHandler({
- req,
- bodySchema: zNewBookmarkRequestSchema,
- handler: async ({ api, body }) => {
- const bookmark = await api.bookmarks.createBookmark(body!);
- return { status: 201, resp: bookmark };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/search/route.ts b/apps/web/app/api/v1/bookmarks/search/route.ts
deleted file mode 100644
index e85c7954..00000000
--- a/apps/web/app/api/v1/bookmarks/search/route.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { NextRequest } from "next/server";
-import { z } from "zod";
-
-import { buildHandler } from "../../utils/handler";
-import { zGetBookmarkSearchParamsSchema } from "../../utils/types";
-
-export const dynamic = "force-dynamic";
-
-export const GET = (req: NextRequest) =>
- buildHandler({
- req,
- searchParamsSchema: z
- .object({
- q: z.string(),
- limit: z.coerce.number().optional(),
- cursor: z
- .string()
- // Search cursor V1 is just a number
- .pipe(z.coerce.number())
- .transform((val) => {
- return { ver: 1 as const, offset: val };
- })
- .optional(),
- })
- .and(zGetBookmarkSearchParamsSchema),
- handler: async ({ api, searchParams }) => {
- const bookmarks = await api.bookmarks.searchBookmarks({
- text: searchParams.q,
- cursor: searchParams.cursor,
- sortOrder: searchParams.sortOrder,
- limit: searchParams.limit,
- includeContent: searchParams.includeContent,
- });
- return {
- status: 200,
- resp: {
- bookmarks: bookmarks.bookmarks,
- nextCursor: bookmarks.nextCursor
- ? `${bookmarks.nextCursor.offset}`
- : null,
- },
- };
- },
- });
diff --git a/apps/web/app/api/v1/bookmarks/singlefile/route.ts b/apps/web/app/api/v1/bookmarks/singlefile/route.ts
deleted file mode 100644
index 7c1d7201..00000000
--- a/apps/web/app/api/v1/bookmarks/singlefile/route.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { createContextFromRequest } from "@/server/api/client";
-import { TRPCError } from "@trpc/server";
-
-import serverConfig from "@karakeep/shared/config";
-import { BookmarkTypes } from "@karakeep/shared/types/bookmarks";
-import { createCallerFactory } from "@karakeep/trpc";
-import { appRouter } from "@karakeep/trpc/routers/_app";
-
-import { uploadFromPostData } from "../../../assets/route";
-
-export const dynamic = "force-dynamic";
-
-export async function POST(req: Request) {
- const ctx = await createContextFromRequest(req);
- if (!ctx.user) {
- return Response.json({ error: "Unauthorized" }, { status: 401 });
- }
- if (serverConfig.demoMode) {
- throw new TRPCError({
- message: "Mutations are not allowed in demo mode",
- code: "FORBIDDEN",
- });
- }
- const formData = await req.formData();
- const up = await uploadFromPostData(ctx.user, ctx.db, formData);
-
- if ("error" in up) {
- return Response.json({ error: up.error }, { status: up.status });
- }
-
- const url = formData.get("url");
- if (!url) {
- throw new TRPCError({
- message: "URL is required",
- code: "BAD_REQUEST",
- });
- }
- if (typeof url !== "string") {
- throw new TRPCError({
- message: "URL must be a string",
- code: "BAD_REQUEST",
- });
- }
-
- const createCaller = createCallerFactory(appRouter);
- const api = createCaller(ctx);
-
- const bookmark = await api.bookmarks.createBookmark({
- type: BookmarkTypes.LINK,
- url,
- precrawledArchiveId: up.assetId,
- });
- return Response.json(bookmark, { status: 201 });
-}