import { NextResponse } from 'next/server'; import Surreal from 'surrealdb'; export const dynamic = 'force-dynamic'; function normalizeRows(result) { if (!Array.isArray(result) || !result.length) return []; const first = result[0]; if (Array.isArray(first)) return first; if (first && typeof first === 'object' && Array.isArray(first.result)) return first.result; return []; } export async function GET(req) { const url = process.env.SURREAL_URL; if (!url) { return NextResponse.json({ trades: [], error: 'No DB configured' }); } const { searchParams } = new URL(req.url); const strategyFilter = searchParams.get('strategy'); let client = null; try { client = new Surreal(); await client.connect(url); await client.signin({ username: process.env.SURREAL_USER, password: process.env.SURREAL_PASS }); await client.use({ namespace: 'kalbot', database: 'kalbot' }); let query = 'SELECT * FROM paper_positions'; const vars = {}; if (strategyFilter) { query += ' WHERE strategy = $strategy'; vars.strategy = strategyFilter; } query += ' ORDER BY entryTime DESC LIMIT 50'; const result = await client.query(query, vars); const trades = normalizeRows(result); return NextResponse.json({ trades }); } catch (e) { return NextResponse.json({ trades: [], error: e.message }); } finally { try { await client?.close?.(); } catch { // ignore } } }