mirror of
https://github.com/multipleof4/KalBot.git
synced 2026-03-17 05:51:02 +00:00
Fix: parse Surreal query results safely
This commit is contained in:
@@ -3,23 +3,39 @@ import Surreal from 'surrealdb';
|
|||||||
|
|
||||||
export const dynamic = 'force-dynamic';
|
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() {
|
export async function GET() {
|
||||||
const url = process.env.SURREAL_URL;
|
const url = process.env.SURREAL_URL;
|
||||||
if (!url) {
|
if (!url) {
|
||||||
return NextResponse.json({ trades: [], error: 'No DB configured' });
|
return NextResponse.json({ trades: [], error: 'No DB configured' });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let client = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const client = new Surreal();
|
client = new Surreal();
|
||||||
await client.connect(url);
|
await client.connect(url);
|
||||||
await client.signin({ username: process.env.SURREAL_USER, password: process.env.SURREAL_PASS });
|
await client.signin({ username: process.env.SURREAL_USER, password: process.env.SURREAL_PASS });
|
||||||
await client.use({ namespace: 'kalbot', database: 'kalbot' });
|
await client.use({ namespace: 'kalbot', database: 'kalbot' });
|
||||||
|
|
||||||
const result = await client.query('SELECT * FROM paper_positions ORDER BY entryTime DESC LIMIT 50');
|
const result = await client.query('SELECT * FROM paper_positions ORDER BY entryTime DESC LIMIT 50');
|
||||||
const trades = result[0] || [];
|
const trades = normalizeRows(result);
|
||||||
|
|
||||||
return NextResponse.json({ trades });
|
return NextResponse.json({ trades });
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return NextResponse.json({ trades: [], error: e.message });
|
return NextResponse.json({ trades: [], error: e.message });
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
await client?.close?.();
|
||||||
|
} catch {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user