import { db } from "../../../../db/index"; import { topics, lessons } from "../../../../db/schema"; import { eq } from "drizzle-orm"; import { generateLesson } from "../../../../utils/generateLesson"; import { verifyLicenseKey } from "../../../../utils/license"; export default defineEventHandler(async (event) => { const key = getHeader(event, "x-license-key") ?? ""; if (!verifyLicenseKey(key)) { throw createError({ statusCode: 401, message: "Unauthorized" }); } const id = getRouterParam(event, "id")!; const topic = await db.query.topics.findFirst({ where: eq(topics.id, id) }); if (!topic) throw createError({ statusCode: 404, message: "Topic not found" }); // wipe existing lesson await db.delete(lessons).where(eq(lessons.topicId, id)); // reset topic status so generateLesson doesnt bail await db.update(topics).set({ status: "pending" }).where(eq(topics.id, id)); try { await generateLesson(id); return { status: "ready" }; } catch (err: any) { console.error(`[dev/regenerate-lesson] topic ${id}: ${err?.message ?? err}`); return { status: "error" }; } });