Fix BigInt JSON serialization error in media API
This commit is contained in:
1 parent
da0cd9491c
commit
38703e86fd
2 files changed
+4
-60
No files matched your search
@@ -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 });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in new issue
Block a user