HmzaH
Convex Community17mo ago
21 replies
Hmza

convex x hono

i'm not able to make the hono .notfound endpoint work.

i get errors if i just visit a wrong path rather it showing a message of not found or something.

import { Hono } from "hono";
import { HonoWithConvex, HttpRouterWithHono } from "convex-helpers/server/hono";
import { ActionCtx } from "./_generated/server";
import { internal } from "./_generated/api";
import { z } from "zod";

const app: HonoWithConvex<ActionCtx> = new Hono();

const mySchema = z.object({
  number: z.string().min(1),
  cursor: z.string().optional(),
  numItems: z.number().int().min(1).max(100).default(10),
});

app.get("/", (c) => c.json({ message: "Welcome to the cool stuff!" }));

app.get("/number/:number", async (c) => {
  try {
    const params = mySchema.parse({
      //my params
    });

    const data = await c.env.runQuery(my internalquery with param and pagination);

    if (data === null) {
      return c.json({ error: " not found" }, 404);
    }

    return c.json({
      status: "success",
      data: data.items,
      pagination: {
        hasMore: data.paginationInfo.hasMore,
        nextCursor: data.paginationInfo.continueCursor,
      },
      metadata: {
       //metadata
      },
    }, 200);
  } catch (error) {
    console.error("Error processing:", error);
    if (error instanceof z.ZodError) {
      return c.json({ status: "error", error: "Invalid input", details: error }, 400);
    }
    return c.json({ status: "error", error: "Internal server error" }, 500);
  }
});

app.notFound((c) => c.json({ status: "error", error: "Not found" }, 404));

export default new HttpRouterWithHono(app);
Was this page helpful?