import { NextRequest, NextResponse } from 'next/server'; import { createCreditTransaction, getUser, updateUserCredits, } from '@/lib/firestore'; import { Timestamp } from 'firebase/firestore'; export async function GET(request: NextRequest) { try { // TODO: Get userId from auth token const userId = 'test-user-id'; // Replace with actual auth const user = await getUser(userId); return NextResponse.json({ balance: user?.creditBalance ?? 0 }); } catch (error) { console.error('Error fetching credit balance:', error); return NextResponse.json({ error: 'Failed to fetch balance' }, { status: 500 }); } } export async function POST(request: NextRequest) { try { const body = await request.json(); // TODO: Get userId from auth token const userId = 'test-user-id'; // Replace with actual auth const amount = Number(body?.amount); if (!Number.isFinite(amount) || amount <= 0) { return NextResponse.json({ error: 'Invalid amount' }, { status: 400 }); } const user = await getUser(userId); if (!user) { return NextResponse.json({ error: 'User not found' }, { status: 404 }); } const newBalance = user.creditBalance + amount; await updateUserCredits(userId, newBalance); await createCreditTransaction({ userId, amount, type: 'purchase', balanceAfter: newBalance, createdAt: Timestamp.now(), }); return NextResponse.json({ balance: newBalance }); } catch (error) { console.error('Error adding credits:', error); return NextResponse.json({ error: 'Failed to add credits' }, { status: 500 }); } }