import { useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { Database, CheckCircle, AlertTriangle, Loader2, RefreshCw } from "lucide-react"; import { api } from "@/shared/config/database"; import { toast } from "sonner"; interface TestResult { name: string; status: 'success' | 'error' | 'pending'; message: string; duration?: number; } export default function DatabaseTest() { const [testing, setTesting] = useState(false); const [results, setResults] = useState([]); const runTests = async () => { setTesting(true); setResults([]); const tests: Array<{ name: string; test: () => Promise }> = [ { name: "数据库连接测试", test: async () => { const start = Date.now(); await api.getProjectStats(); return { duration: Date.now() - start }; } }, { name: "项目数据查询", test: async () => { const start = Date.now(); const projects = await api.getProjects(); return { duration: Date.now() - start, count: projects.length }; } }, { name: "审计任务查询", test: async () => { const start = Date.now(); const tasks = await api.getAuditTasks(); return { duration: Date.now() - start, count: tasks.length }; } }, { name: "用户配置查询", test: async () => { const start = Date.now(); const count = await api.getProfilesCount(); return { duration: Date.now() - start, count }; } } ]; for (const { name, test } of tests) { try { // 添加pending状态 setResults(prev => [...prev, { name, status: 'pending', message: '测试中...' }]); const result = await test(); // 更新为成功状态 setResults(prev => prev.map(r => r.name === name ? { name, status: 'success', message: `测试通过 (${result.duration}ms)${result.count !== undefined ? ` - 数据量: ${result.count}` : ''}`, duration: result.duration } : r )); } catch (error: any) { // 更新为错误状态 setResults(prev => prev.map(r => r.name === name ? { name, status: 'error', message: `测试失败: ${error.message || '未知错误'}` } : r )); } // 添加延迟避免过快执行 await new Promise(resolve => setTimeout(resolve, 500)); } setTesting(false); const successCount = results.filter(r => r.status === 'success').length; const totalCount = tests.length; if (successCount === totalCount) { toast.success("所有数据库测试通过!"); } else { toast.error(`${totalCount - successCount} 个测试失败`); } }; const getStatusIcon = (status: TestResult['status']) => { switch (status) { case 'success': return ; case 'error': return ; case 'pending': return ; default: return null; } }; const getStatusBadge = (status: TestResult['status']) => { switch (status) { case 'success': return 通过; case 'error': return 失败; case 'pending': return 测试中; default: return null; } }; return ( 数据库连接测试

测试数据库连接状态和基本功能

{results.length > 0 && (
{results.map((result, index) => (
{getStatusIcon(result.status)}

{result.name}

{result.message}

{getStatusBadge(result.status)}
))}
)} {results.length > 0 && !testing && ( 测试完成!成功: {results.filter(r => r.status === 'success').length} / 总计: {results.length} )} {results.length === 0 && !testing && ( 点击"开始测试"按钮来检查数据库连接状态 )}
); }