video-flow-toon/src/routes/setting/updateSetting.ts

80 lines
2.2 KiB
TypeScript

import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
// 修改全局配置
export default router.post(
"/",
validateFields({
userId: z.number(),
imageModel: z.object().optional(),
videoModel: z.array(z.object()).optional(),
languageModel: z.object().optional(),
name: z.string().optional(),
password: z.string().optional(),
}),
async (req, res) => {
const { userId, imageModel, videoModel, languageModel, name, password } = req.body;
await u
.db("t_setting")
.where("userId", userId)
.update({
imageModel: JSON.stringify(imageModel),
languageModel: JSON.stringify(languageModel),
});
if (videoModel) {
await u.db("t_config").where("type", "video").delete();
for (const item of videoModel) {
await u.db("t_config").insert({
type: "video",
name: item.model,
model: item.model,
apiKey: item.apiKey,
baseUrl: item.baseUrl,
createTime: Date.now(),
userId,
manufacturer: item.manufacturer,
});
}
}
if (languageModel) {
await u.db("t_config").where("type", "text").delete();
await u.db("t_config").insert({
type: "text",
name: languageModel.model,
model: languageModel.model,
apiKey: languageModel.apiKey,
baseUrl: languageModel.baseUrl,
createTime: Date.now(),
userId,
manufacturer: languageModel.manufacturer,
});
}
if (imageModel) {
await u.db("t_config").where("type", "image").delete();
await u.db("t_config").insert({
type: "image",
name: imageModel.model,
model: imageModel.model,
apiKey: imageModel.apiKey,
baseUrl: imageModel.baseUrl,
createTime: Date.now(),
userId,
manufacturer: imageModel.manufacturer,
});
}
await u.db("t_user").where("id", userId).update({
name,
password,
});
res.status(200).send(success({ message: "修改全局配置成功" }));
},
);