import { NextResponse } from 'next/server' import { prisma } from '@/lib/db' // Ensure this route runs on the Node.js runtime (Prisma requires Node) export const runtime = 'nodejs' export async function GET(request: Request) { try { console.log('Books API called') const { searchParams } = new URL(request.url) const locale = searchParams.get('locale') || 'ro' const versionId = searchParams.get('version') // Optional specific version ID console.log('Locale:', locale, 'Version ID:', versionId) // Get the appropriate Bible version let bibleVersion const langCandidates = Array.from(new Set([locale, locale.toLowerCase(), locale.toUpperCase()])) if (versionId) { // Use specific version if provided bibleVersion = await prisma.bibleVersion.findFirst({ where: { id: versionId, language: { in: langCandidates } } }) } else { // Try default version for the language bibleVersion = await prisma.bibleVersion.findFirst({ where: { language: { in: langCandidates }, isDefault: true } }) // Fallback: any version for the language if (!bibleVersion) { bibleVersion = await prisma.bibleVersion.findFirst({ where: { language: { in: langCandidates } }, orderBy: { createdAt: 'asc' } }) } // Fallback: use English default if requested locale not found if (!bibleVersion && locale !== 'en') { bibleVersion = await prisma.bibleVersion.findFirst({ where: { language: 'en', isDefault: true } }) } } if (!bibleVersion) { return NextResponse.json({ success: false, error: `No Bible version found for language: ${locale}`, books: [] }, { status: 404 }) } // Get books for this version const books = await prisma.bibleBook.findMany({ where: { versionId: bibleVersion.id }, orderBy: { orderNum: 'asc' }, include: { chapters: { orderBy: { chapterNum: 'asc' }, include: { _count: { select: { verses: true } } } } } }) return NextResponse.json({ success: true, version: { id: bibleVersion.id, name: bibleVersion.name, abbreviation: bibleVersion.abbreviation, language: bibleVersion.language }, books: books.map(book => ({ id: book.id, name: book.name, testament: book.testament, orderNum: book.orderNum, bookKey: book.bookKey, chapters: book.chapters.map(chapter => ({ id: chapter.id, chapterNum: chapter.chapterNum, verseCount: chapter._count.verses })) })) }) } catch (error) { console.error('Error fetching books:', error) return NextResponse.json( { success: false, error: 'Failed to fetch books', books: [] }, { status: 500 } ) } }