import { PrismaClient, UserRole, LicensePlan } from '@prisma/client'; import bcrypt from 'bcrypt'; import { v4 as uuidv4 } from 'uuid'; const prisma = new PrismaClient(); async function main() { console.log('🌱 Seeding database...'); const hashedPassword = await bcrypt.hash('Password123!', 12); // 1. Create ADMIN const admin = await prisma.user.upsert({ where: { email: 'admin@marketscope.com' }, update: {}, create: { email: 'admin@marketscope.com', password: hashedPassword, name: 'System Admin', role: 'ADMIN', isEmailVerified: true, }, }); console.log(`✅ Admin created: ${admin.email}`); // 2. Create PRO User const proUser = await prisma.user.upsert({ where: { email: 'pro@marketscope.com' }, update: {}, create: { email: 'pro@marketscope.com', password: hashedPassword, name: 'Pro User', role: 'USER_PRO', isEmailVerified: true, }, }); console.log(`✅ Pro User created: ${proUser.email}`); // 3. Create FREE User const freeUser = await prisma.user.upsert({ where: { email: 'user@marketscope.com' }, update: {}, create: { email: 'user@marketscope.com', password: hashedPassword, name: 'Free User', role: 'USER_FREE', isEmailVerified: true, }, }); console.log(`✅ Free User created: ${freeUser.email}`); // 4. Create Licenses for them const licenses = [ { key: 'MS-ADMIN-DEV-001', userId: admin.id, plan: 'PRO_YEARLY' as LicensePlan, maxScan: -1 }, { key: 'MS-PRO-MONTHLY-002', userId: proUser.id, plan: 'PRO_MONTHLY' as LicensePlan, maxScan: 500 }, { key: 'MS-FREE-TRIAL-003', userId: freeUser.id, plan: 'FREE' as LicensePlan, maxScan: 50 }, ]; for (const lic of licenses) { await prisma.license.upsert({ where: { key: lic.key }, update: {}, create: lic, }); } console.log('✅ Licenses created'); console.log('🚀 Seeding completed!'); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });