Revisione/server/api/courses/[id]/generate.post.ts

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" };
});