From 7f9b0aab667523ea159d77c1ce1dfb82e391312f Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:17:01 +0330 Subject: [PATCH] Import source: vault/app/api/snippets/route Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- vault/app/api/snippets/route.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 vault/app/api/snippets/route.ts diff --git a/vault/app/api/snippets/route.ts b/vault/app/api/snippets/route.ts new file mode 100644 index 0000000..ee6343a --- /dev/null +++ b/vault/app/api/snippets/route.ts @@ -0,0 +1,32 @@ +import { NextResponse } from "next/server"; +import { createStoredSnippet, jsonError, purgeExpiredSnippets, publicSnippet, readJsonBody } from "@/lib/server-api"; +import { getCurrentUser } from "@/lib/server-security"; +import { readDb, writeDb } from "@/lib/server-db"; + +export async function GET() { + const user = await getCurrentUser(); + if (!user) return jsonError("Authentication required", 401); + + await purgeExpiredSnippets(); + const db = await readDb(); + const snippets = db.snippets + .filter((snippet) => snippet.ownerId === user.id) + .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()) + .map(publicSnippet); + + return NextResponse.json({ snippets }); +} + +export async function POST(request: Request) { + const user = await getCurrentUser(); + if (!user) return jsonError("Authentication required", 401); + + const snippet = await createStoredSnippet(user.id, await readJsonBody(request)); + if ("error" in snippet) return jsonError(snippet.error, 400); + + await writeDb((db) => { + db.snippets.unshift(snippet); + }); + + return NextResponse.json({ snippet: publicSnippet(snippet) }, { status: 201 }); +}