36 lines
1.0 KiB
TypeScript
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("生成事件成功"));
|
|
},
|
|
);
|