zyc c8a8560175
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 5s
Isolate user configuration data
2026-05-28 17:14:09 +08:00

58 lines
1.8 KiB
TypeScript

import express from "express";
import { success, error } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
import u from "@/utils";
import { z } from "zod";
import { getEditableVendorModels, requireRequestUserId, setUserVendorConfig } from "@/lib/userConfig";
const router = express.Router();
export default router.post(
"/",
validateFields({
id: z.string(),
model: z.discriminatedUnion("type", [
z.object({
name: z.string(),
modelName: z.string(),
type: z.literal("text"),
think: z.boolean(),
}),
z.object({
name: z.string(),
modelName: z.string(),
type: z.literal("image"),
mode: z.array(z.enum(["text", "singleImage", "multiReference"])),
}),
z.object({
name: z.string(),
modelName: z.string(),
type: z.literal("video"),
mode: z.array(
z.union([
z.enum(["singleImage", "startEndRequired", "endFrameOptional", "startFrameOptional", "text", "audioReference", "videoReference"]),
z.array(z.string().regex(/^(videoReference|imageReference|audioReference):\d+$/)),
]),
),
audio: z.union([z.literal("optional"), z.boolean()]),
durationResolutionMap: z.array(
z.object({
duration: z.array(z.number()),
resolution: z.array(z.string()),
}),
),
}),
]),
}),
async (req, res) => {
const { id, model } = req.body;
const userId = requireRequestUserId(req);
const existingModels = await getEditableVendorModels(userId, id);
existingModels.push(model);
await setUserVendorConfig(userId, id, {
models: JSON.stringify(existingModels),
});
res.status(200).send(success("更新成功"));
},
);