51 lines
1.5 KiB
TypeScript
51 lines
1.5 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(),
|
|
data: z.array(
|
|
z.object({
|
|
index: z.number(),
|
|
reel: z.string(),
|
|
chapter: z.string(),
|
|
chapterData: z.string(),
|
|
}),
|
|
),
|
|
}),
|
|
async (req, res) => {
|
|
const { projectId, data } = req.body;
|
|
const totalNovelId = [];
|
|
for (const item of data) {
|
|
const [id] = await u.db("o_novel").insert({
|
|
projectId,
|
|
chapterIndex: item.index,
|
|
reel: item.reel,
|
|
chapter: item.chapter,
|
|
chapterData: item.chapterData,
|
|
createTime: Date.now(),
|
|
eventState: 0,
|
|
});
|
|
totalNovelId.push(id);
|
|
}
|
|
const chapterAllList = await u.db("o_novel").where("projectId", projectId).whereIn("id", totalNovelId);
|
|
const novelClass = new u.cleanNovel();
|
|
novelClass.emitter.on("item", async (item) => {
|
|
console.log("%c Line:40 🍇 item", "background:#6ec1c2", item);
|
|
await u
|
|
.db("o_novel")
|
|
.where("id", item.id)
|
|
.update({ event: item.event, eventState: item.event ? 1 : -1, errorReason: item?.errReason ?? null });
|
|
});
|
|
novelClass.start(chapterAllList, projectId);
|
|
|
|
res.status(200).send(success({ message: "新增原文成功" }));
|
|
},
|
|
);
|