import { NextRequest, NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' import { wearPartSchema } from '@/lib/validations' export async function GET( request: NextRequest, { params }: { params: { id: string } } ) { try { const part = await prisma.wearPart.findUnique({ where: { id: params.id }, include: { bike: true, maintenanceHistory: { orderBy: { date: 'desc', }, }, }, }) if (!part) { return NextResponse.json( { error: 'Verschleißteil nicht gefunden' }, { status: 404 } ) } return NextResponse.json(part) } catch (error) { console.error('Error fetching part:', error) return NextResponse.json( { error: 'Fehler beim Laden des Verschleißteils' }, { status: 500 } ) } } export async function PUT( request: NextRequest, { params }: { params: { id: string } } ) { try { const body = await request.json() const validatedData = wearPartSchema.parse(body) const part = await prisma.wearPart.update({ where: { id: params.id }, data: { type: validatedData.type, brand: validatedData.brand, model: validatedData.model, installDate: new Date(validatedData.installDate), installMileage: validatedData.installMileage, serviceInterval: validatedData.serviceInterval, status: validatedData.status, cost: validatedData.cost, notes: validatedData.notes, }, }) return NextResponse.json(part) } catch (error) { console.error('Error updating part:', 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: 'Verschleißteil nicht gefunden' }, { status: 404 } ) } return NextResponse.json( { error: 'Fehler beim Aktualisieren des Verschleißteils' }, { status: 500 } ) } } export async function DELETE( request: NextRequest, { params }: { params: { id: string } } ) { try { await prisma.wearPart.delete({ where: { id: params.id }, }) return NextResponse.json({ message: 'Verschleißteil gelöscht' }) } catch (error) { console.error('Error deleting part:', error) if ( error instanceof Error && error.message.includes('Record to delete does not exist') ) { return NextResponse.json( { error: 'Verschleißteil nicht gefunden' }, { status: 404 } ) } return NextResponse.json( { error: 'Fehler beim Löschen des Verschleißteils' }, { status: 500 } ) } }