"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Upload, FolderOpen, Loader2 } from "lucide-react" export default function AdminPage() { const [fileUploadLoading, setFileUploadLoading] = useState(false) const [pathUploadLoading, setPathUploadLoading] = useState(false) const [selectedFile, setSelectedFile] = useState(null) const [folderPath, setFolderPath] = useState("/app/documents/") const [uploadStatus, setUploadStatus] = useState("") const handleFileUpload = async (e: React.FormEvent) => { e.preventDefault() if (!selectedFile) return setFileUploadLoading(true) setUploadStatus("") try { const formData = new FormData() formData.append("file", selectedFile) const response = await fetch("/api/upload", { method: "POST", body: formData, }) const result = await response.json() if (response.ok) { setUploadStatus(`File uploaded successfully! ID: ${result.id}`) setSelectedFile(null) // Reset the file input const fileInput = document.getElementById("file-input") as HTMLInputElement if (fileInput) fileInput.value = "" } else { setUploadStatus(`Error: ${result.error || "Upload failed"}`) } } catch (error) { setUploadStatus(`Error: ${error instanceof Error ? error.message : "Upload failed"}`) } finally { setFileUploadLoading(false) } } const handlePathUpload = async (e: React.FormEvent) => { e.preventDefault() if (!folderPath.trim()) return setPathUploadLoading(true) setUploadStatus("") try { const response = await fetch("/api/upload_path", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ path: folderPath }), }) const result = await response.json() if (response.ok) { const successful = result.results.filter((r: {status: string}) => r.status === "indexed").length const total = result.results.length setUploadStatus(`Path processed successfully! ${successful}/${total} files indexed.`) setFolderPath("") } else { setUploadStatus(`Error: ${result.error || "Path upload failed"}`) } } catch (error) { setUploadStatus(`Error: ${error instanceof Error ? error.message : "Path upload failed"}`) } finally { setPathUploadLoading(false) } } return (

Ingest

Upload and manage documents in your database

{uploadStatus && (

{uploadStatus}

)}
Upload File Upload a single document to be indexed and searchable
setSelectedFile(e.target.files?.[0] || null)} accept=".pdf,.doc,.docx,.txt,.md" className="cursor-pointer" />
Upload Folder Process all documents in a folder path on the server
setFolderPath(e.target.value)} />
) }