diff --git a/frontends/dbal/app/api/cli/route.ts b/frontends/dbal/app/api/cli/route.ts index 48e57b3cf..00bf1fdb6 100644 --- a/frontends/dbal/app/api/cli/route.ts +++ b/frontends/dbal/app/api/cli/route.ts @@ -57,12 +57,14 @@ export async function POST(request: NextRequest) { env: env as NodeJS.ProcessEnv, }) - // Try to parse stdout as JSON + // Try to parse stdout as JSON, otherwise return as structured text let data: unknown try { data = JSON.parse(stdout) } catch { - data = stdout || stderr || '(no output)' + const output = (stdout || '').trim() + const err = (stderr || '').trim() + data = { output: output || err || '(no output)' } } return NextResponse.json({ @@ -78,7 +80,7 @@ export async function POST(request: NextRequest) { let data: unknown if (error.stdout) { - try { data = JSON.parse(error.stdout) } catch { data = error.stdout } + try { data = JSON.parse(error.stdout) } catch { data = { output: error.stdout.trim() } } } return NextResponse.json({ diff --git a/frontends/dbal/src/QueryConsole.tsx b/frontends/dbal/src/QueryConsole.tsx index 5a4bf0b20..a20b744e5 100644 --- a/frontends/dbal/src/QueryConsole.tsx +++ b/frontends/dbal/src/QueryConsole.tsx @@ -135,6 +135,10 @@ function syntaxHighlight(json: string): string { ) } +function isPlainOutput(data: unknown): boolean { + return typeof data === 'object' && data !== null && 'output' in data && typeof (data as { output: unknown }).output === 'string' +} + function loadHistory(): QueryHistoryEntry[] { if (typeof window === 'undefined') return [] try { @@ -505,10 +509,12 @@ export function QueryConsole() { {response.status} {response.statusText} -
+              
+                {isPlainOutput(response.data)
+                  ? (response.data as { output: string }).output
+                  : 
+                }
+              
)}