aboutsummaryrefslogtreecommitdiffstats
path: root/packages/api
diff options
context:
space:
mode:
Diffstat (limited to 'packages/api')
-rw-r--r--packages/api/routes/tags.ts23
1 files changed, 20 insertions, 3 deletions
diff --git a/packages/api/routes/tags.ts b/packages/api/routes/tags.ts
index 816e58b4..79e36e99 100644
--- a/packages/api/routes/tags.ts
+++ b/packages/api/routes/tags.ts
@@ -1,8 +1,11 @@
import { zValidator } from "@hono/zod-validator";
import { Hono } from "hono";
+import { z } from "zod";
import {
zCreateTagRequestSchema,
+ zTagListApiResultSchema,
+ zTagListQueryParamsSchema,
zUpdateTagRequestSchema,
} from "@karakeep/shared/types/tags";
@@ -14,9 +17,23 @@ const app = new Hono()
.use(authMiddleware)
// GET /tags
- .get("/", async (c) => {
- const tags = await c.var.api.tags.list();
- return c.json(tags, 200);
+ .get("/", zValidator("query", zTagListQueryParamsSchema), async (c) => {
+ const searchParams = c.req.valid("query");
+ const tags = await c.var.api.tags.list({
+ nameContains: searchParams.nameContains,
+ attachedBy: searchParams.attachedBy,
+ sortBy: searchParams.sort,
+ cursor: searchParams.cursor,
+ limit: searchParams.limit,
+ });
+
+ const resp: z.infer<typeof zTagListApiResultSchema> = {
+ tags: tags.tags,
+ nextCursor: tags.nextCursor
+ ? Buffer.from(JSON.stringify(tags.nextCursor)).toString("base64url")
+ : null,
+ };
+ return c.json(resp, 200);
})
// POST /tags