import { NextRequest, NextResponse } from 'next/server'; import { getFirmById, createAccountConfig } from '@/lib/db'; export async function POST( req: NextRequest, { params }: { params: Promise<{ id: string }> } ) { const { id: idStr } = await params; const firmId = parseInt(idStr, 10); if (isNaN(firmId)) { return NextResponse.json({ error: 'Invalid firm id' }, { status: 400 }); } if (!getFirmById(firmId)) { return NextResponse.json({ error: 'Firm not found' }, { status: 404 }); } const body = await req.json() as { prefix?: string; profitTarget?: number; consistency?: number; minDayPnL?: number; minTradingDays?: number; accountSize?: number; maxLoss?: number; maxPositionSize?: number; targetSameEquity?: boolean; withdrawalStages?: { profit: number; consistency: number; minTradingDays: number }[]; }; const { prefix, profitTarget, consistency, minDayPnL, minTradingDays, accountSize, maxLoss, maxPositionSize, targetSameEquity, withdrawalStages } = body; if ( typeof prefix !== 'string' || !prefix.trim() || typeof profitTarget !== 'number' || typeof consistency !== 'number' || typeof minDayPnL !== 'number' || typeof minTradingDays !== 'number' || typeof accountSize !== 'number' ) { return NextResponse.json({ error: 'Invalid body' }, { status: 400 }); } try { const row = createAccountConfig(firmId, { prefix: prefix.trim(), profitTarget, consistency, minDayPnL, minTradingDays, accountSize, maxLoss: maxLoss ?? 0, maxPositionSize: maxPositionSize ?? 0, targetSameEquity: targetSameEquity ?? false, withdrawalStages: withdrawalStages ?? [], }); return NextResponse.json({ id: row.id, prefix: row.prefix, profitTarget: row.profit_target, consistency: row.consistency, minDayPnL: row.min_day_pnl, minTradingDays: row.min_trading_days, accountSize: row.account_size, maxLoss: row.max_loss, maxPositionSize: row.max_position_size, targetSameEquity: row.target_same_equity === 1, withdrawalStages: (() => { try { return JSON.parse(row.withdrawal_stages ?? '[]') as { profit: number; consistency: number; minTradingDays: number }[]; } catch { return []; } })(), }, { status: 201 }); } catch (err) { console.error('[POST /api/firms/:id/accounts]', err); return NextResponse.json({ error: 'Failed to create account type' }, { status: 500 }); } }