video-flow-toon/src/routes/novel/event/generateEvents.ts
2026-03-23 21:05:40 +08:00

36 lines
1.0 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({
projectId: z.number(),
novelIds: z.array(z.number()),
}),
async (req, res) => {
const { projectId, novelIds } = req.body;
const [allChapters, novel] = await Promise.all([
u.db("o_novel").where("projectId", projectId).whereIn("id", novelIds),
Promise.resolve(new u.cleanNovel()),
]);
await u.db("o_novel").where("projectId", projectId).update({ eventState: 0, event: null });
novel.emitter.on("item", async (item) => {
await u
.db("o_novel")
.where("id", item.id)
.update({ event: item.event, eventState: item.event ? 1 : -1 });
});
novel.start(allChapters, projectId);
return res.status(200).send(success("生成事件成功"));
},
);