"use client"; import { useEffect, useState } from "react"; interface DbInfoData { exists: boolean; path: string; documents: number; chunks: number; documents_bytes: number; chunks_bytes: number; has_vector_index: boolean; } function formatBytes(bytes: number): string { if (bytes === 0) return "0 B"; const k = 1024; const sizes = ["B", "KB", "MB", "GB"]; const i = Math.floor(Math.log(bytes) / Math.log(k)); return `${Number.parseFloat((bytes / k ** i).toFixed(1))} ${sizes[i]}`; } export default function DbInfo() { const [info, setInfo] = useState(null); const [error, setError] = useState(null); useEffect(() => { fetch("/api/info") .then((res) => res.json()) .then(setInfo) .catch((err) => setError(err.message)); }, []); if (error) { return (
Database unavailable
); } if (!info) { return (
Loading...
); } if (!info.exists) { return (
No database found
); } return (
{info.documents} documents
{info.chunks} chunks
{formatBytes(info.documents_bytes + info.chunks_bytes)} total
{info.has_vector_index ? "indexed" : "no index"}
); }