import { z } from "zod"; import { requireAdmin } from "@/lib/middleware/admin"; import { getSystemSetting } from "@/lib/db/queries"; import { ChatSDKError } from "@/lib/errors"; import { THIRD_PARTY_SQLSERVER_CONFIG_KEY, thirdPartySqlServerConfigSchema, } from "@/lib/sqlserver/config"; import { testSqlServerConnection } from "@/lib/sqlserver/client"; export const runtime = "nodejs"; const requestSchema = z.object({ config: thirdPartySqlServerConfigSchema.optional(), }); export async function POST(request: Request) { try { await requireAdmin(); const body = requestSchema.parse(await request.json().catch(() => ({}))); const savedSetting = !body.config ? await getSystemSetting({ key: THIRD_PARTY_SQLSERVER_CONFIG_KEY }).catch(() => null) : null; const config = body.config ?? savedSetting?.value ?? {}; const result = await testSqlServerConnection(config); return Response.json({ success: true, ...result, }); } catch (error) { if (error instanceof ChatSDKError) { return error.toResponse(); } if (error instanceof z.ZodError) { return new ChatSDKError("bad_request:api", error.message).toResponse(); } return Response.json( { code: "bad_request:api", message: error instanceof Error ? error.message : "SQL Server 连接测试失败", }, { status: 400 }, ); } }