From 1e9dca106d851a5b3ad519bb2b10b82e87f3066c Mon Sep 17 00:00:00 2001 From: Marcel <65048232+dromzeh@users.noreply.github.com> Date: Sun, 17 Mar 2024 06:57:29 +0000 Subject: [PATCH] comment offset and limit, sort by creation date (for now) --- src/v2/routes/asset/get-asset-comments.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/v2/routes/asset/get-asset-comments.ts b/src/v2/routes/asset/get-asset-comments.ts index 9411bd5..a26ac36 100644 --- a/src/v2/routes/asset/get-asset-comments.ts +++ b/src/v2/routes/asset/get-asset-comments.ts @@ -5,7 +5,7 @@ import { z } from "@hono/zod-openapi" import { AppHandler } from "../handler" import { assetComments, assetCommentsLikes } from "@/v2/db/schema" import { selectAssetCommentsSchema } from "@/v2/db/schema" -import { sql, eq } from "drizzle-orm" +import { sql, eq, desc } from "drizzle-orm" const getAssetCommentsSchema = z.object({ id: z.string().openapi({ @@ -18,6 +18,20 @@ const getAssetCommentsSchema = z.object({ }), }) +const getAssetCommentsOffsetSchema = z.object({ + offset: z + .string() + .optional() + .openapi({ + param: { + name: "offset", + in: "query", + description: "The offset to start from.", + required: false, + }, + }), +}) + const getAssetCommentsResponseSchema = z.object({ success: z.literal(true), comments: z.array( @@ -42,6 +56,7 @@ const getAssetCommentsRoute = createRoute({ tags: ["Asset"], request: { params: getAssetCommentsSchema, + query: getAssetCommentsOffsetSchema, }, responses: { 200: { @@ -59,6 +74,7 @@ const getAssetCommentsRoute = createRoute({ export const ViewAssetCommentsRoute = (handler: AppHandler) => { handler.openapi(getAssetCommentsRoute, async (ctx) => { const assetId = ctx.req.valid("param").id + const offset = parseInt(ctx.req.valid("query").offset) || 0 const { drizzle } = await getConnection(ctx.env) @@ -78,6 +94,9 @@ export const ViewAssetCommentsRoute = (handler: AppHandler) => { eq(assetComments.id, assetCommentsLikes.commentId) ) .groupBy(assetComments.id) + .offset(offset) + .limit(10) + .orderBy(desc(assetComments.createdAt)) return ctx.json( {