import { PrismaClient } from '@prisma/client'; import bcrypt from 'bcryptjs'; const prisma = new PrismaClient(); async function main() { console.log('🌱 Seeding database...'); // Seed Areas const areas = await Promise.all([ prisma.area.upsert({ where: { name: 'Petra' }, update: {}, create: { name: 'Petra' } }), prisma.area.upsert({ where: { name: 'Jarash' }, update: {}, create: { name: 'Jarash' } }), prisma.area.upsert({ where: { name: 'Rum' }, update: {}, create: { name: 'Rum' } }) ]); // Seed DredgerLocations const dredgerLocations = await Promise.all([ prisma.dredgerLocation.upsert({ where: { name: 'SP1-1' }, update: {}, create: { name: 'SP1-1', class: 'SP' } }), prisma.dredgerLocation.upsert({ where: { name: 'SP1-2' }, update: {}, create: { name: 'SP1-2', class: 'SP' } }), prisma.dredgerLocation.upsert({ where: { name: 'C01' }, update: {}, create: { name: 'C01', class: 'C' } }), prisma.dredgerLocation.upsert({ where: { name: 'D1' }, update: {}, create: { name: 'D1', class: 'D' } }) ]); // Seed ReclamationLocations const reclamationLocations = await Promise.all([ prisma.reclamationLocation.upsert({ where: { name: 'Eastern Shoreline' }, update: {}, create: { name: 'Eastern Shoreline' } }), prisma.reclamationLocation.upsert({ where: { name: 'Western Shoreline' }, update: {}, create: { name: 'Western Shoreline' } }) ]); // Seed Super Admin Employee const superAdminUsername = process.env.SUPER_ADMIN || 'superadmin'; const superAdminEmail = process.env.SUPER_ADMIN_EMAIL || 'admin@example.com'; const superAdminPassword = process.env.SUPER_ADMIN_PASSWORD || 'P@ssw0rd123'; await prisma.employee.upsert({ where: { username: superAdminUsername }, update: {}, create: { name: 'Super Admin User', authLevel: 3, username: superAdminUsername, email: superAdminEmail, password: bcrypt.hashSync(superAdminPassword, 10) } }); // Seed Foreman await prisma.foreman.upsert({ where: { id: 1 }, update: {}, create: { name: 'John Smith' } }); // Seed Equipment const equipment = await Promise.all([ prisma.equipment.upsert({ where: { id: 1 }, update: {}, create: { id: 1, category: 'Dozer', model: 'Dozer6', number: 1 } }), prisma.equipment.upsert({ where: { id: 2 }, update: {}, create: { id: 2, category: 'Dozer', model: 'Dozer6', number: 2 } }), prisma.equipment.upsert({ where: { id: 3 }, update: {}, create: { id: 3, category: 'Dozer', model: 'Dozer7', number: 1 } }), prisma.equipment.upsert({ where: { id: 4 }, update: {}, create: { id: 4, category: 'Dozer', model: 'Dozer8', number: 1 } }), prisma.equipment.upsert({ where: { id: 5 }, update: {}, create: { id: 5, category: 'Loader', model: 'Loader', number: 1 } }), prisma.equipment.upsert({ where: { id: 6 }, update: {}, create: { id: 6, category: 'Excavator', model: 'Exc.', number: 1 } }), prisma.equipment.upsert({ where: { id: 7 }, update: {}, create: { id: 7, category: 'Excavator', model: 'Exc.', number: 9 } }) ]); console.log('✅ Database seeded successfully!'); console.log(`Created ${areas.length} areas`); console.log(`Created ${dredgerLocations.length} dredger locations`); console.log(`Created ${reclamationLocations.length} reclamation locations`); console.log(`Created 1 employee`); console.log(`Created 1 foreman`); console.log(`Created ${equipment.length} equipment records`); } main() .catch((e) => { console.error('❌ Error seeding database:', e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });