Your Name 817309ade9
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
feat: add sqlserver admin connection settings
2026-03-24 17:01:50 +08:00

51 lines
1.4 KiB
TypeScript

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 },
);
}
}