Revisione/server/api/topics/[id]/dev/regenerate-lesson.post.ts

31 lines
No EOL
1.1 KiB
TypeScript

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