import { PrismaClient } from "../lib/generated/prisma-client"; const prisma = new PrismaClient(); async function main() { // Create 5 users await prisma.user.createMany({ data: [ { email: "alice@example.com", name: "Alice" }, { email: "bob@example.com", name: "Bob" }, { email: "charlie@example.com", name: "Charlie" }, { email: "diana@example.com", name: "Diana" }, { email: "edward@example.com", name: "Edward" }, ], }); // Find all users to get their IDs const userRecords = await prisma.user.findMany(); const userIdMapping = { alice: userRecords.find((user) => user.email === "alice@example.com")?.id, bob: userRecords.find((user) => user.email === "bob@example.com")?.id, charlie: userRecords.find((user) => user.email === "charlie@example.com") ?.id, diana: userRecords.find((user) => user.email === "diana@example.com")?.id, edward: userRecords.find((user) => user.email === "edward@example.com")?.id, }; // Create 15 posts distributed among users await prisma.post.createMany({ data: [ // Alice's posts { title: "Getting Started with TypeScript and Prisma", content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce id erat a lorem tincidunt ultricies. Vivamus porta bibendum nulla vel accumsan.", published: true, authorId: userIdMapping.alice!, }, { title: "How ORMs Simplify Complex Queries", content: "Duis sagittis urna ut sapien tristique convallis. Aenean vel ligula felis. Phasellus bibendum sem at elit dictum volutpat.", published: false, authorId: userIdMapping.alice!, }, // Bob's posts { title: "Mastering Prisma: Efficient Database Migrations", content: "Ut ullamcorper nec erat id auctor. Nullam nec ligula in ex feugiat tincidunt. Cras accumsan vehicula tortor ut eleifend.", published: true, authorId: userIdMapping.bob!, }, { title: "Best Practices for Type Safety in ORMs", content: "Aliquam erat volutpat. Suspendisse potenti. Maecenas fringilla elit vel eros laoreet, et tempor sapien vulputate.", published: true, authorId: userIdMapping.bob!, }, { title: "TypeScript Utility Types for Database Models", content: "Donec ac magna facilisis, vestibulum ligula at, elementum nisl. Morbi volutpat eget velit eu egestas.", published: false, authorId: userIdMapping.bob!, }, // Charlie's posts (no posts for Charlie) // Diana's posts { title: "Exploring Database Indexes and Their Performance Impact", content: "Vivamus ac velit tincidunt, sollicitudin erat quis, fringilla enim. Aenean posuere est a risus placerat suscipit.", published: true, authorId: userIdMapping.diana!, }, { title: "Choosing the Right Database for Your TypeScript Project", content: "Sed vel suscipit lorem. Duis et arcu consequat, sagittis justo quis, pellentesque risus. Curabitur sed consequat est.", published: false, authorId: userIdMapping.diana!, }, { title: "Designing Scalable Schemas with Prisma", content: "Phasellus ut erat nec elit ultricies egestas. Vestibulum rhoncus urna eget magna varius pharetra.", published: true, authorId: userIdMapping.diana!, }, { title: "Handling Relations Between Models in ORMs", content: "Integer luctus ac augue at tristique. Curabitur varius nisl vitae mi fringilla, vel tincidunt nunc dictum.", published: false, authorId: userIdMapping.diana!, }, // Edward's posts { title: "Why TypeORM Still Has Its Place in 2025", content: "Morbi non arcu nec velit cursus feugiat sit amet sit amet mi. Etiam porttitor ligula id sem molestie, in tempor arcu bibendum.", published: true, authorId: userIdMapping.edward!, }, { title: "NoSQL vs SQL: The Definitive Guide for Developers", content: "Suspendisse a ligula sit amet risus ullamcorper tincidunt. Curabitur tincidunt, sapien id fringilla auctor, risus libero gravida odio, nec volutpat libero orci nec lorem.", published: true, authorId: userIdMapping.edward!, }, { title: "Optimizing Queries with Prisma’s Select and Include", content: "Proin vel diam vel nisi facilisis malesuada. Sed vitae diam nec magna mollis commodo a vitae nunc.", published: false, authorId: userIdMapping.edward!, }, { title: "PostgreSQL Optimizations Every Developer Should Know", content: "Nullam mollis quam sit amet lacus interdum, at suscipit libero pellentesque. Suspendisse in mi vitae magna finibus pretium.", published: true, authorId: userIdMapping.edward!, }, { title: "Scaling Applications with Partitioned Tables in PostgreSQL", content: "Cras vitae tortor in mauris tristique elementum non id ipsum. Nunc vitae pulvinar purus.", published: true, authorId: userIdMapping.edward!, }, ], }); console.log("Seeding completed."); } main() .then(async () => { await prisma.$disconnect(); }) .catch(async (e) => { console.error(e); await prisma.$disconnect(); process.exit(1); });