import { and, eq } from 'drizzle-orm' import { z } from 'zod' /** 切换章节的当前版本 */ export default defineEventHandler(async (event) => { const chapter = getChapter(param(event)) const { versionId } = await readJson(event, z.object({ versionId: z.string() })) const v = useDb().select().from(tables.chapterVersions) .where(and(eq(tables.chapterVersions.id, versionId), eq(tables.chapterVersions.chapterId, chapter.id))).get() if (!v) throw createError({ statusCode: 404, message: '版本不存在' }) if (v.status === 'writing') throw createError({ statusCode: 400, message: '该版本仍在写作中' }) useDb().update(tables.chapters).set({ activeVersionId: v.id, // 切换版本后需要重新确认,以便重新生成摘要 status: chapter.status === 'approved' ? 'written' : chapter.status === 'writing' ? chapter.status : 'written' }).where(eq(tables.chapters.id, chapter.id)).run() emitProject(chapter.projectId, { type: 'chapter', chapterId: chapter.id }) return { ok: true } })