43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { NextResponse } from 'next/server';
|
|
import { testProjectConnection } from '@/lib/db';
|
|
import { verifySuperAdmin } from '@/lib/project-auth';
|
|
|
|
export async function POST(request: Request) {
|
|
try {
|
|
// 验证超管权限
|
|
const authResult = await verifySuperAdmin();
|
|
if (!authResult.success) {
|
|
return authResult.response;
|
|
}
|
|
|
|
const body = await request.json();
|
|
const { dbHost, dbPort, dbName, dbUser, dbPassword, dbSchema } = body;
|
|
|
|
// 验证必填字段
|
|
if (!dbHost || !dbName || !dbUser || !dbPassword) {
|
|
return NextResponse.json(
|
|
{ success: false, error: '缺少必填字段' },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
|
|
// 测试连接
|
|
const result = await testProjectConnection({
|
|
dbHost,
|
|
dbPort: dbPort || 5432,
|
|
dbName,
|
|
dbUser,
|
|
dbPassword,
|
|
dbSchema: dbSchema || 'public',
|
|
});
|
|
|
|
return NextResponse.json(result);
|
|
} catch (error) {
|
|
console.error('测试连接失败:', error);
|
|
return NextResponse.json(
|
|
{ success: false, error: '服务器错误' },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|