import { NextRequest, NextResponse } from "next/server"; import { auth } from "@clerk/nextjs/server"; import { getDatabase } from "@/lib/database"; // Helper to add CORS headers function corsHeaders() { return { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS", "Access-Control-Allow-Headers": "Content-Type, Authorization", }; } // OPTIONS - Handle preflight requests export async function OPTIONS() { return NextResponse.json({}, { headers: corsHeaders() }); } // POST - Mark goal as complete export async function POST( req: NextRequest, { params }: { params: Promise<{ id: string }> }, ) { try { const { userId } = await auth(); if (!userId) { return NextResponse.json( { error: "Unauthorized" }, { status: 401, headers: corsHeaders() }, ); } 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, headers: corsHeaders() }, ); } if (existingGoal.userId !== userId) { return NextResponse.json( { error: "Forbidden" }, { status: 403, headers: corsHeaders() }, ); } // Mark as completed const completedGoal = await db.completeGoal(id); return NextResponse.json(completedGoal, { headers: corsHeaders() }); } catch (error) { console.error("Error completing fitness goal:", error); return NextResponse.json( { error: "Internal server error" }, { status: 500, headers: corsHeaders() }, ); } }