import { NextRequest, NextResponse } from 'next/server' import { createRouteHandlerClient } from '@supabase/auth-helpers-nextjs' import { cookies } from 'next/headers' import { IncrementUsageRequest } from '@/lib/types/usage-tracking' export async function POST(request: NextRequest) { try { const supabase = createRouteHandlerClient({ cookies }) // Get current user const { data: { user }, error: userError } = await supabase.auth.getUser() if (userError || !user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } // Parse request body const body: IncrementUsageRequest & { user_id?: string } = await request.json() // Validate required fields if (!body.feature_type) { return NextResponse.json({ error: 'feature_type is required' }, { status: 400 }) } // Use authenticated user's ID, not the one from request body const userId = user.id const amount = body.amount || 1 const metadata = body.metadata || {} // Validate amount is positive if (amount < 0) { return NextResponse.json({ error: 'Amount must be positive' }, { status: 400 }) } // Call the database function to increment usage const { data, error } = await supabase .rpc('increment_usage', { user_uuid: userId, feature_type_param: body.feature_type, amount_param: amount, metadata_param: metadata, skip_limit_check: false }) if (error) { console.error('Error incrementing usage:', error) return NextResponse.json({ error: 'Failed to increment usage' }, { status: 500 }) } return NextResponse.json({ success: true, usage: data }, { status: 200 }) } catch (error) { console.error('Unexpected error in usage increment:', error) return NextResponse.json({ error: 'Internal server error' }, { status: 500 }) } }