import { NextRequest, NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' import { bikeSchema } from '@/lib/validations' export async function GET( request: NextRequest, { params }: { params: { id: string } } ) { try { const bike = await prisma.bike.findUnique({ where: { id: params.id }, include: { wearParts: { include: { maintenanceHistory: { orderBy: { date: 'desc', }, }, }, orderBy: { createdAt: 'desc', }, }, }, }) if (!bike) { return NextResponse.json( { error: 'Fahrrad nicht gefunden' }, { status: 404 } ) } return NextResponse.json(bike) } catch (error) { console.error('Error fetching bike:', error) return NextResponse.json( { error: 'Fehler beim Laden des Fahrrads' }, { status: 500 } ) } } export async function PUT( request: NextRequest, { params }: { params: { id: string } } ) { try { const body = await request.json() const validatedData = bikeSchema.parse(body) const bike = await prisma.bike.update({ where: { id: params.id }, data: { name: validatedData.name, brand: validatedData.brand, model: validatedData.model, purchaseDate: validatedData.purchaseDate || null, currentMileage: validatedData.currentMileage ?? 0, notes: validatedData.notes, }, }) return NextResponse.json(bike) } catch (error) { console.error('Error updating bike:', error) if (error instanceof Error && error.name === 'ZodError') { return NextResponse.json( { error: 'Ungültige Daten', details: error }, { status: 400 } ) } if ( error instanceof Error && error.message.includes('Record to update does not exist') ) { return NextResponse.json( { error: 'Fahrrad nicht gefunden' }, { status: 404 } ) } return NextResponse.json( { error: 'Fehler beim Aktualisieren des Fahrrads' }, { status: 500 } ) } } export async function DELETE( request: NextRequest, { params }: { params: { id: string } } ) { try { await prisma.bike.delete({ where: { id: params.id }, }) return NextResponse.json({ message: 'Fahrrad gelöscht' }) } catch (error) { console.error('Error deleting bike:', error) if ( error instanceof Error && error.message.includes('Record to delete does not exist') ) { return NextResponse.json( { error: 'Fahrrad nicht gefunden' }, { status: 404 } ) } return NextResponse.json( { error: 'Fehler beim Löschen des Fahrrads' }, { status: 500 } ) } }