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 live_orders WHERE settled = true'; const vars = {}; if (strategyFilter) { query += ' AND strategy = $strategy'; vars.strategy = strategyFilter; } query += ' ORDER BY settleTime DESC LIMIT 50'; const result = await client.query(query, vars); return NextResponse.json({ trades: normalizeRows(result) }); } catch (e) { return NextResponse.json({ trades: [], error: e.message }); } finally { try { await client?.close?.(); } catch {} } }