import { NextRequest, NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' export async function GET( request: NextRequest, { params }: { params: Promise<{ slug: string }> } ) { try { const { slug } = await params const { searchParams } = new URL(request.url) const limit = parseInt(searchParams.get('limit') || '50') const genre = await prisma.genre.findUnique({ where: { slug }, }) if (!genre) { return NextResponse.json({ error: 'Genre not found' }, { status: 404 }) } const songGenres = await prisma.songGenre.findMany({ where: { genreId: genre.id, song: { isPublic: true, }, }, include: { song: { include: { artist: { select: { id: true, name: true, slug: true, avatarUrl: true, verified: true, }, }, album: { select: { id: true, title: true, slug: true, coverUrl: true, }, }, genres: { include: { genre: true, }, }, }, }, }, take: limit, orderBy: { song: { createdAt: 'desc', }, }, }) const songs = songGenres.map((sg: (typeof songGenres)[number]) => sg.song) return NextResponse.json({ genre, songs, }) } catch (error) { console.error('Error fetching songs by genre:', error) return NextResponse.json({ error: 'Failed to fetch songs by genre' }, { status: 500 }) } }