20 lines
864 B
TypeScript
20 lines
864 B
TypeScript
import { db } from "../../../db/index";
|
|
import { courses } from "../../../db/schema";
|
|
import { eq } from "drizzle-orm";
|
|
import { generateCourseInBackground } from "../../../utils/generateCourse";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const id = getRouterParam(event, "id")!;
|
|
|
|
const course = await db.query.courses.findFirst({ where: eq(courses.id, id) });
|
|
if (!course) throw createError({ statusCode: 404, message: "Course not found" });
|
|
|
|
await db.update(courses).set({ status: "processing", stage: "parsing_pdfs" }).where(eq(courses.id, id));
|
|
|
|
// fire and forget — response returns immediately
|
|
console.log(`[revisione:${id.slice(0, 8)}] background generation triggered for "${course.title}"`);
|
|
generateCourseInBackground(id).catch(() => {});
|
|
|
|
setResponseStatus(event, 202);
|
|
return { message: "Course generation started" };
|
|
});
|