import { eq, inArray } from 'drizzle-orm' /** 启动时初始化数据库,并修复上次异常退出遗留的“进行中”状态 */ export default defineNitroPlugin(() => { const db = useDb() db.update(tables.jobs).set({ status: 'error', error: '服务重启,任务中断', finishedAt: new Date() }) .where(eq(tables.jobs.status, 'running')).run() db.update(tables.chapterVersions).set({ status: 'error' }) .where(eq(tables.chapterVersions.status, 'writing')).run() const stuck = db.select().from(tables.chapters).where(inArray(tables.chapters.status, ['writing'])).all() for (const c of stuck) { db.update(tables.chapters).set({ status: c.activeVersionId ? 'written' : (c.brief ? 'briefed' : 'planned') }) .where(eq(tables.chapters.id, c.id)).run() } console.log(`[novel] 数据目录:${dataDir()}`) })