import { prisma } from "@/lib/prisma"; export async function listPublishedCourses() { return prisma.course.findMany({ where: { published: true }, orderBy: { updatedAt: "desc" }, include: { categories: { include: { category: true } }, modules: { orderBy: { sortOrder: "asc" }, include: { lessons: { where: { published: true }, orderBy: { sortOrder: "asc" }, select: { slug: true }, }, }, }, }, }); } export async function getCourseBySlug(slug: string) { return prisma.course.findFirst({ where: { slug, published: true }, include: { categories: { include: { category: true } }, modules: { orderBy: { sortOrder: "asc" }, include: { lessons: { where: { published: true }, orderBy: { sortOrder: "asc" } }, }, }, }, }); } export async function getLessonContext(courseSlug: string, lessonSlug: string) { const course = await prisma.course.findFirst({ where: { slug: courseSlug, published: true }, include: { modules: { orderBy: { sortOrder: "asc" }, include: { lessons: { where: { published: true }, orderBy: { sortOrder: "asc" } }, }, }, }, }); if (!course) return null; for (const mod of course.modules) { const lesson = mod.lessons.find((l) => l.slug === lessonSlug); if (lesson) return { course, module: mod, lesson }; } return null; } export function firstLessonPath(course: { slug: string; modules: { lessons: { slug: string }[] }[]; }): string | null { for (const m of course.modules) { const first = m.lessons[0]; if (first) return `/kurse/${course.slug}/lektionen/${first.slug}`; } return null; }