import { NextRequest, NextResponse } from 'next/server'; import { auth } from '@clerk/nextjs/server'; import { getDatabase } from '@/lib/database'; // GET - Get specific goal export async function GET( req: NextRequest, { params }: { params: { id: string } } ) { try { const { userId } = await auth(); if (!userId) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const { id } = await params; const db = await getDatabase(); const goal = await db.getFitnessGoalById(id); if (!goal) { return NextResponse.json({ error: 'Goal not found' }, { status: 404 }); } // Verify ownership if (goal.userId !== userId) { return NextResponse.json({ error: 'Forbidden' }, { status: 403 }); } return NextResponse.json(goal); } catch (error) { console.error('Error fetching fitness goal:', error); return NextResponse.json( { error: 'Internal server error' }, { status: 500 } ); } } // PUT - Update goal export async function PUT( req: NextRequest, { params }: { params: { id: string } } ) { try { const { userId } = await auth(); if (!userId) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const { id } = await params; const db = await getDatabase(); // Verify goal exists and user owns it const existingGoal = await db.getFitnessGoalById(id); if (!existingGoal) { return NextResponse.json({ error: 'Goal not found' }, { status: 404 }); } if (existingGoal.userId !== userId) { return NextResponse.json({ error: 'Forbidden' }, { status: 403 }); } const updates = await req.json(); // Don't allow changing userId or id delete updates.userId; delete updates.id; delete updates.createdAt; const updatedGoal = await db.updateFitnessGoal(id, updates); return NextResponse.json(updatedGoal); } catch (error) { console.error('Error updating fitness goal:', error); return NextResponse.json( { error: 'Internal server error' }, { status: 500 } ); } } // DELETE - Delete goal export async function DELETE( req: NextRequest, { params }: { params: { id: string } } ) { try { const { userId } = await auth(); if (!userId) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const { id } = await params; const db = await getDatabase(); // Verify goal exists and user owns it const existingGoal = await db.getFitnessGoalById(id); if (!existingGoal) { return NextResponse.json({ error: 'Goal not found' }, { status: 404 }); } if (existingGoal.userId !== userId) { return NextResponse.json({ error: 'Forbidden' }, { status: 403 }); } const deleted = await db.deleteFitnessGoal(id); if (deleted) { return NextResponse.json({ success: true }); } else { return NextResponse.json({ error: 'Failed to delete goal' }, { status: 500 }); } } catch (error) { console.error('Error deleting fitness goal:', error); return NextResponse.json( { error: 'Internal server error' }, { status: 500 } ); } }