diff --git a/app/api/routes-f/categories/[slug]/route.ts b/app/api/routes-f/categories/[slug]/route.ts index 8089c7f..6f00629 100644 --- a/app/api/routes-f/categories/[slug]/route.ts +++ b/app/api/routes-f/categories/[slug]/route.ts @@ -64,6 +64,15 @@ async function requireAdmin(req: NextRequest) { return { ok: true as const, session }; } +function isUniqueViolation(err: unknown): boolean { + if (!err || typeof err !== "object") { + return false; + } + + const code = "code" in err ? (err as { code?: unknown }).code : undefined; + return code === "23505"; +} + export async function GET( _req: NextRequest, { params }: { params: Promise<{ slug: string }> } @@ -187,6 +196,13 @@ export async function PATCH( return NextResponse.json(rows[0]); } catch (err) { + if (isUniqueViolation(err)) { + return NextResponse.json( + { error: "Category already exists" }, + { status: 409 } + ); + } + console.error("[categories/:slug] PATCH error:", err); return NextResponse.json( { error: "Internal server error" }, diff --git a/app/api/routes-f/mock/route.ts b/app/api/routes-f/mock/route.ts index 0fe4cea..692dcda 100644 --- a/app/api/routes-f/mock/route.ts +++ b/app/api/routes-f/mock/route.ts @@ -1,4 +1,4 @@ -import { NextRequest, NextResponse } from "next/server"; +import { NextResponse } from "next/server"; import { sql } from "@vercel/postgres"; const SCENARIOS = [ @@ -47,7 +47,7 @@ export async function GET(): Promise { return NextResponse.json({ scenarios: SCENARIOS }); } -export async function DELETE(_req: NextRequest): Promise { +export async function DELETE(): Promise { if (isMainnet()) { return NextResponse.json( { error: "Not available in production" },