import { NextResponse } from 'next/server'; import { Prisma } from '@prisma/client'; import prisma from '@/lib/prisma'; export async function GET(request: Request) { try { // Test raw query first try { console.log('Testing database connection...'); const rawResult = await prisma.$queryRaw`SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public'`; console.log('Available tables:', rawResult); } catch (connectionError) { console.error('Raw query test failed:', connectionError); throw new Error('Database connection test failed'); } // Basic query with explicit types try { const queryResult = await prisma.$transaction(async (tx) => { // Count total parks const totalCount = await tx.park.count(); console.log('Total parks count:', totalCount); // Fetch parks with minimal fields const parks = await tx.park.findMany({ take: 10, select: { id: true, name: true, slug: true, status: true, owner: { select: { id: true, name: true } } }, orderBy: { name: 'asc' } } satisfies Prisma.ParkFindManyArgs); return { totalCount, parks }; }); return NextResponse.json({ success: true, data: queryResult.parks, meta: { total: queryResult.totalCount } }); } catch (queryError) { if (queryError instanceof Prisma.PrismaClientKnownRequestError) { console.error('Known Prisma error:', { code: queryError.code, meta: queryError.meta, message: queryError.message }); throw new Error(`Database query failed: ${queryError.code}`); } throw queryError; } } catch (error) { console.error('Error in /api/parks:', { name: error instanceof Error ? error.name : 'Unknown', message: error instanceof Error ? error.message : 'Unknown error', stack: error instanceof Error ? error.stack : undefined }); return NextResponse.json( { success: false, error: error instanceof Error ? error.message : 'Failed to fetch parks' }, { status: 500, headers: { 'Cache-Control': 'no-store, must-revalidate', 'Content-Type': 'application/json' } } ); } }