Fix BigInt JSON serialization error in media API

This commit is contained in:
Jannik committed 2026-09-20 22:59:39 +02:00
1 parent da0cd9491c
commit 38703e86fd
2 files changed
+4 -60

No files matched your search

-59
View File
@@ -1,59 +0,0 @@
import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/db';
import { requireAuth } from '@/lib/auth/session';
import { scheduleZipRebuild } from '@/lib/jobs/queue';
export async function PATCH(
request: NextRequest,
{ params }: { params: { id: string } }
) {
const authError = await requireAuth(request);
if (authError) return authError;
const id = parseInt(params.id, 10);
if (isNaN(id)) {
return NextResponse.json({ error: 'Invalid ID' }, { status: 400 });
}
try {
const body = await request.json();
const {
published,
featured,
placementMode,
gridColumn,
gridRow,
gridWidth,
gridHeight,
sortOrder
} = body;
const currentItem = await prisma.mediaItem.findUnique({ where: { id } });
if (!currentItem) {
return NextResponse.json({ error: 'Not found' }, { status: 404 });
}
const updated = await prisma.mediaItem.update({
where: { id },
data: {
...(published !== undefined && { published }),
...(featured !== undefined && { featured }),
...(placementMode !== undefined && { placementMode }),
...(gridColumn !== undefined && { gridColumn }),
...(gridRow !== undefined && { gridRow }),
...(gridWidth !== undefined && { gridWidth }),
...(gridHeight !== undefined && { gridHeight }),
...(sortOrder !== undefined && { sortOrder }),
}
});
if (published !== undefined && published !== currentItem.published) {
await scheduleZipRebuild();
}
return NextResponse.json(updated);
} catch (error) {
console.error('Error updating media item:', error);
return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
}
}
+4 -1
View File
@@ -60,7 +60,9 @@ export async function GET(request: NextRequest) {
const settings = await prisma.appSettings.findUnique({ where: { id: 1 } }); const settings = await prisma.appSettings.findUnique({ where: { id: 1 } });
return NextResponse.json({ return NextResponse.json({
items, items: JSON.parse(JSON.stringify(items, (_key, value) =>
typeof value === 'bigint' ? Number(value) : value
)),
nextCursor, nextCursor,
votingOpen: settings?.votingOpen ?? false, votingOpen: settings?.votingOpen ?? false,
}); });
@@ -69,3 +71,4 @@ export async function GET(request: NextRequest) {
return NextResponse.json({ error: 'Internal server error' }, { status: 500 }); return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
} }
} }