Files
sexy/app/api/recordings/route.ts
T

25 lines
936 B
TypeScript
Raw Normal View History

import { NextResponse } from "next/server";
import { z } from "zod";
import { createRecording, listRecordings } from "@/lib/db/queries/recordings";
import { withRouteLogging } from "@/lib/api/with-route-logging";
const bodySchema = z.object({
sourcePlaySessionId: z.number().int().positive(),
name: z.string().min(1).max(160),
description: z.string().max(2000).optional(),
});
export const GET = withRouteLogging("recordings.list", async () => {
const rows = await listRecordings();
return NextResponse.json({ recordings: rows });
});
export const POST = withRouteLogging("recordings.create", async (req: Request) => {
const parsed = bodySchema.safeParse(await req.json().catch(() => null));
if (!parsed.success) {
return NextResponse.json({ error: parsed.error.message }, { status: 400 });
}
const recording = await createRecording(parsed.data);
return NextResponse.json({ recording }, { status: 201 });
});