import { json, type RequestEvent } from '@sveltejs/kit'; import prisma from '$lib/prisma'; /** @type {import('./$types').RequestHandler} */ export async function GET({ params, url } : RequestEvent) { const id = params.id; const filter = url.searchParams.get('filter') || 'new' const search = url.searchParams.get('search') || '' const gallery = await prisma.gallery.findFirst({ where: { id, }, select: { image: true, id: true, prompt: true, createdAt: true, user: { select: { id: true, name: true, sub: true, picture: true, preferred_username: true, } }, model: { select: { title: true, image: true, id: true, } }, reactions: { select: { id: true, emoji: true, userId: true, user: { select: { id: true, name: true, sub: true, picture: true, preferred_username: true, } } } } } }) if (!gallery) { return json({ error: { token: "Gallery not found" } }, { status: 404 }) } const next = await prisma.gallery.findFirst({ where: { isPublic: true, createdAt: { lt: gallery.createdAt }, OR: [ { prompt: { contains: search } }, ], }, orderBy: { ...(filter === 'new' ? { createdAt: 'desc' } : { reactions: { _count: 'desc' } } ) }, select: { id: true, } }) const previous = await prisma.gallery.findFirst({ where: { isPublic: true, createdAt: { gt: gallery.createdAt }, OR: [ { prompt: { contains: search } }, ], }, orderBy: { ...(filter === 'new' ? { createdAt: 'desc' } : { reactions: { _count: 'desc' } } ) }, select: { id: true, } }) return json({ gallery, next: next ? next.id : undefined, previous: previous ? previous.id : undefined, }) }