import { z } from "zod"; import { delCache } from "#server/utils/context"; import { validate } from "#server/utils/validation"; import { createCard, CardTypes } from "../../service/card"; const createSchema = z.object({ type: z.enum(CardTypes), title: z.string().min(1, "标题不能为空").max(60, "标题不能超过 60 字"), description: z.string().max(200, "描述不能超过 200 字").nullable().optional(), aspectRatio: z.number().min(0).max(99).nullable().optional(), categoryId: z.string().nullable().optional(), images: z .array( z.object({ url: z.string().min(1, "图片地址不能为空").max(500), sortOrder: z.number().int().optional(), }), ) .nullable() .optional(), tagIds: z.array(z.number().int().positive()).nullable().optional(), }); export default defineWrappedResponseHandler(async (event) => { const body = await readBody(event); const data = validate(createSchema, body); const card = await createCard(data); await delCache("categories:tree"); return R.success(card); });