fix: 渠道 PUT schema 兼容字符串类型的 models/features 字段
前端 linesToJsonString 传的是 JSON 字符串,而 .strict() schema 只接受数组/对象,导致所有渠道编辑保存失败"参数校验失败"。 移除 .strict(),models/features 改为 union 接受 string | array/record。
This commit is contained in:
@@ -3,19 +3,17 @@ import { z } from 'zod';
|
|||||||
import { verifyAdminToken, unauthorizedResponse } from '@/lib/admin-auth';
|
import { verifyAdminToken, unauthorizedResponse } from '@/lib/admin-auth';
|
||||||
import { prisma } from '@/lib/db';
|
import { prisma } from '@/lib/db';
|
||||||
|
|
||||||
const updateChannelSchema = z
|
const updateChannelSchema = z.object({
|
||||||
.object({
|
group_id: z.number().int().positive().optional(),
|
||||||
group_id: z.number().int().positive().optional(),
|
name: z.string().min(1).max(100).optional(),
|
||||||
name: z.string().min(1).max(100).optional(),
|
platform: z.string().min(1).max(50).optional(),
|
||||||
platform: z.string().min(1).max(50).optional(),
|
rate_multiplier: z.number().positive().optional(),
|
||||||
rate_multiplier: z.number().positive().optional(),
|
description: z.string().max(500).nullable().optional(),
|
||||||
description: z.string().max(500).nullable().optional(),
|
models: z.union([z.array(z.string()), z.string()]).nullable().optional(),
|
||||||
models: z.array(z.string()).nullable().optional(),
|
features: z.union([z.record(z.string(), z.unknown()), z.string()]).nullable().optional(),
|
||||||
features: z.record(z.string(), z.unknown()).nullable().optional(),
|
sort_order: z.number().int().min(0).optional(),
|
||||||
sort_order: z.number().int().min(0).optional(),
|
enabled: z.boolean().optional(),
|
||||||
enabled: z.boolean().optional(),
|
});
|
||||||
})
|
|
||||||
.strict();
|
|
||||||
|
|
||||||
export async function PUT(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
export async function PUT(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
||||||
if (!(await verifyAdminToken(request))) return unauthorizedResponse(request);
|
if (!(await verifyAdminToken(request))) return unauthorizedResponse(request);
|
||||||
|
|||||||
Reference in New Issue
Block a user