Revisione/server/plugins/resumeGeneration.ts

29 lines
1 KiB
TypeScript

import { db } from "../db/index";
import { courses } from "../db/schema";
import { eq } from "drizzle-orm";
import { generateCourseInBackground } from "../utils/generateCourse";
export default defineNitroPlugin(async () => {
console.log("[revisione] resumeGeneration plugin started");
try {
const stuck = await db.query.courses.findMany({
where: eq(courses.status, "processing"),
});
console.log(`[revisione] query complete — found ${stuck.length} course(s)`);
if (stuck.length === 0) return;
console.log(`[revisione] found ${stuck.length} course(s) stuck in processing — resuming`);
for (const course of stuck) {
console.log(`[revisione] resuming "${course.title}" (${course.id.slice(0, 8)})`);
generateCourseInBackground(course.id).catch((err) => {
console.error(`[revisione] background generation threw:`, err?.message ?? err);
});
}
} catch (err: any) {
console.error("[revisione] resumeGeneration plugin error:", err?.message ?? err);
}
});