import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { sqlPreview, sqlExport } from "../api/sql"; import { PreviewGrid } from "./PreviewGrid"; interface Props { sessionId: string; } export function ResultsPanel({ sessionId }: Props) { const [limit, setLimit] = useState(10); const { data, isLoading, error } = useQuery({ queryKey: ["preview", sessionId, limit], queryFn: () => sqlPreview(sessionId, { limit, offset: 0 }), }); async function handleExport() { await sqlExport(sessionId); } const isScalar = data != null && data.columns.length === 1 && data.rows.length === 1; return (
{/* Limit selector */}
{/* Loading / error states */} {isLoading &&
Loading…
} {error &&
Error: {String(error)}
} {/* Scalar result: 1 col × 1 row → bold value */} {data && isScalar && ( {String(data.rows[0][0])} )} {/* Grid for everything else */} {data && !isScalar && ( <> {data.truncated &&
(results truncated)
} )}
); }