aboutsummaryrefslogtreecommitdiffstats
path: root/packages/open-api/lib/pagination.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/open-api/lib/pagination.ts')
-rw-r--r--packages/open-api/lib/pagination.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/open-api/lib/pagination.ts b/packages/open-api/lib/pagination.ts
new file mode 100644
index 00000000..fe98cd62
--- /dev/null
+++ b/packages/open-api/lib/pagination.ts
@@ -0,0 +1,24 @@
+import { extendZodWithOpenApi } from "@asteasolutions/zod-to-openapi";
+import { z } from "zod";
+
+import { zBookmarkSchema } from "@hoarder/shared/types/bookmarks";
+
+extendZodWithOpenApi(z);
+
+export const BookmarkSchema = zBookmarkSchema.openapi("Bookmark");
+
+export const PaginatedBookmarksSchema = z
+ .object({
+ bookmarks: z.array(BookmarkSchema),
+ nextCursor: z.string().nullable(),
+ })
+ .openapi("PaginatedBookmarks");
+
+export const CursorSchema = z.string().openapi("Cursor");
+
+export const PaginationSchema = z
+ .object({
+ limit: z.number().optional(),
+ cursor: CursorSchema.optional(),
+ })
+ .openapi("Pagination");