lomavuokraus/app/api/images/[id]/route.ts
2025-11-26 14:27:55 +02:00

33 lines
959 B
TypeScript

import { NextResponse } from 'next/server';
import { prisma } from '../../../../lib/prisma';
export async function GET(_req: Request, { params }: { params: { id: string } }) {
const image = await prisma.listingImage.findUnique({
where: { id: params.id },
select: { data: true, mimeType: true, url: true, updatedAt: true },
});
if (!image) {
return NextResponse.json({ error: 'Not found' }, { status: 404 });
}
if (image.data) {
const res = new NextResponse(image.data, {
status: 200,
headers: {
'Content-Type': image.mimeType || 'application/octet-stream',
'Cache-Control': 'public, max-age=86400',
},
});
if (image.updatedAt) {
res.headers.set('Last-Modified', image.updatedAt.toUTCString());
}
return res;
}
if (image.url) {
return NextResponse.redirect(image.url, { status: 302 });
}
return NextResponse.json({ error: 'Image missing' }, { status: 404 });
}