import { PrismaClient, Role, Department, ArrivalMode, EventType, EventStatus } from '@prisma/client'; const prisma = new PrismaClient(); async function main() { console.log('🌱 Seeding database...'); // Clean up existing data (careful in production!) await prisma.scheduleEvent.deleteMany({}); await prisma.flight.deleteMany({}); await prisma.driver.deleteMany({}); await prisma.vIP.deleteMany({}); await prisma.user.deleteMany({}); console.log('āœ… Cleared existing data'); // Create sample users const admin = await prisma.user.create({ data: { auth0Id: 'auth0|admin-sample-id', email: 'admin@example.com', name: 'Admin User', role: Role.ADMINISTRATOR, isApproved: true, }, }); const coordinator = await prisma.user.create({ data: { auth0Id: 'auth0|coordinator-sample-id', email: 'coordinator@example.com', name: 'Coordinator User', role: Role.COORDINATOR, isApproved: true, }, }); console.log('āœ… Created sample users'); // Create sample drivers const driver1 = await prisma.driver.create({ data: { name: 'John Smith', phone: '+1 (555) 123-4567', department: Department.OFFICE_OF_DEVELOPMENT, }, }); const driver2 = await prisma.driver.create({ data: { name: 'Jane Doe', phone: '+1 (555) 987-6543', department: Department.ADMIN, }, }); console.log('āœ… Created sample drivers'); // Create sample VIPs const vip1 = await prisma.vIP.create({ data: { name: 'Dr. Robert Johnson', organization: 'Tech Corporation', department: Department.OFFICE_OF_DEVELOPMENT, arrivalMode: ArrivalMode.FLIGHT, airportPickup: true, venueTransport: true, notes: 'Prefers window seat, dietary restriction: vegetarian', flights: { create: [ { flightNumber: 'AA123', flightDate: new Date('2026-02-15'), segment: 1, departureAirport: 'JFK', arrivalAirport: 'LAX', scheduledDeparture: new Date('2026-02-15T08:00:00'), scheduledArrival: new Date('2026-02-15T11:30:00'), status: 'scheduled', }, ], }, }, }); const vip2 = await prisma.vIP.create({ data: { name: 'Ms. Sarah Williams', organization: 'Global Foundation', department: Department.ADMIN, arrivalMode: ArrivalMode.SELF_DRIVING, expectedArrival: new Date('2026-02-16T14:00:00'), airportPickup: false, venueTransport: true, notes: 'Bringing assistant', }, }); console.log('āœ… Created sample VIPs'); // Create sample events await prisma.scheduleEvent.create({ data: { vipId: vip1.id, title: 'Airport Pickup', location: 'LAX Terminal 4', startTime: new Date('2026-02-15T11:30:00'), endTime: new Date('2026-02-15T12:30:00'), description: 'Pick up Dr. Johnson from LAX', type: EventType.TRANSPORT, status: EventStatus.SCHEDULED, driverId: driver1.id, }, }); await prisma.scheduleEvent.create({ data: { vipId: vip1.id, title: 'Welcome Dinner', location: 'Grand Hotel Restaurant', startTime: new Date('2026-02-15T19:00:00'), endTime: new Date('2026-02-15T21:00:00'), description: 'Welcome dinner with board members', type: EventType.MEAL, status: EventStatus.SCHEDULED, driverId: driver2.id, }, }); await prisma.scheduleEvent.create({ data: { vipId: vip2.id, title: 'Conference Transport', location: 'Convention Center', startTime: new Date('2026-02-16T14:30:00'), endTime: new Date('2026-02-16T15:00:00'), description: 'Transport to conference venue', type: EventType.TRANSPORT, status: EventStatus.SCHEDULED, driverId: driver1.id, }, }); console.log('āœ… Created sample events'); console.log('\nšŸŽ‰ Database seeded successfully!'); console.log('\nSample Users:'); console.log('- Admin: admin@example.com'); console.log('- Coordinator: coordinator@example.com'); console.log('\nSample VIPs:'); console.log('- Dr. Robert Johnson (Flight arrival)'); console.log('- Ms. Sarah Williams (Self-driving)'); console.log('\nSample Drivers:'); console.log('- John Smith'); console.log('- Jane Doe'); } main() .catch((e) => { console.error('āŒ Error seeding database:', e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });