// prisma/seed.ts import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); async function main() { console.log("🌱 Seeding database…"); // --- Create a test course --- const course = await prisma.course.upsert({ where: { code: "ANIM101" }, update: {}, create: { code: "ANIM101", title: "3D Animation | Character Design", description: "Introductory course for animation students.", }, }); // --- Create playlists for this course --- const playlist1 = await prisma.playlist.create({ data: { title: "Introduction to Character Design", description: "Basic foundations and workflow.", sortOrder: 0, courseId: course.id, videos: { create: [ { title: "Welcome + Overview", index: 0, durationSec: 300, url: "/videos/test.mp4", thumbnail: "/01.jpg", }, { title: "Understanding Silhouette", index: 1, durationSec: 420, url: "/videos/test.mp4", thumbnail: "/01.jpg", }, { title: "Gesture & Appeal", index: 2, durationSec: 380, url: "/videos/test.mp4", thumbnail: "/01.jpg", }, ], }, }, include: { videos: true }, }); const playlist2 = await prisma.playlist.create({ data: { title: "Advanced Character Techniques", description: "Secondary forms, expression & posing.", sortOrder: 1, courseId: course.id, videos: { create: [ { title: "Secondary Motion", index: 0, durationSec: 400, url: "/videos/test.mp4", thumbnail: "/01.jpg", }, { title: "Expressions & Acting Choices", index: 1, durationSec: 600, url: "/videos/test.mp4", thumbnail: "/01.jpg", locked: true, }, { title: "Polish & Finishing", index: 2, durationSec: 500, url: "/videos/test.mp4", thumbnail: "/01.jpg", }, ], }, }, include: { videos: true }, }); // --- Create a test user --- const user = await prisma.user.upsert({ where: { email: "student@example.com" }, update: {}, create: { email: "student@example.com", name: "Test Student", image: null, }, }); // --- Enroll test user into the course --- await prisma.enrollment.upsert({ where: { userId_courseId: { userId: user.id, courseId: course.id, }, }, update: {}, create: { userId: user.id, courseId: course.id, }, }); console.log("🌱 Seed complete!"); console.log("Test user:", user.email); console.log("Course created:", course.title); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });