const { PrismaClient } = require('@prisma/client'); const bcrypt = require('bcryptjs'); const prisma = new PrismaClient(); const DEFAULT_HOMEOWNERS = [ 'Anderson, 217', 'Bakos', 'Beckstead, 111', 'Bentley, 310', 'Best, 103', 'Caraway, 132', 'Carmichael, M, 216', 'Casa Blanca', 'Chapin, 106', 'Conner, 309', 'Cook, 118', 'Coyle, 109', 'Davis, 114a', 'Dimmitt, 213', 'Dockery, 502', 'Fassett, 303C', 'Gypsy Wind', 'Hager, 108', 'Hanford, 308', 'Hitchcox – Clarry, 218', 'Hughes, 215', 'Kaufman 129 (Blue View)', 'Kuchman, 104', 'Lockhart, 301A', 'Lokey, 136', 'McColgan, 312', 'Mercurio, 523', 'Moff – Dean Elect', 'Rogers, 501', 'Rusten, 204A', 'Ryan, 301B', 'Salas, 144', 'Sear 128 (Twin Shores)', 'Shimp, 517', 'Sipprelle, 202', 'Trino, 131', 'Useppa Fire', 'Vogt', 'Weinsz, 141', 'Wendorf, 306', 'White (Rogan)', 'Williams, Bob, 140', 'Williams, Dan, 137B', 'Williamson-Whetstone, 102', 'Wilson, George, 516', 'Wright, 137A', ]; async function main() { console.log('🌱 Seeding database...'); // Create admin user const passwordHash = await bcrypt.hash('CoastalAdmin2026!', 12); const admin = await prisma.user.upsert({ where: { email: 'admin@coastal.com' }, update: {}, create: { email: 'admin@coastal.com', name: 'Admin', role: 'super_admin', passwordHash, }, }); console.log(`✅ Admin user created: ${admin.email}`); // Create homeowners let created = 0; let skipped = 0; for (const name of DEFAULT_HOMEOWNERS) { try { await prisma.homeowner.upsert({ where: { name }, update: {}, create: { name }, }); created++; } catch (err) { console.warn(`⚠️ Skipped homeowner "${name}": ${err.message}`); skipped++; } } console.log(`✅ Homeowners: ${created} created, ${skipped} skipped`); console.log('🌱 Seed complete!'); } main() .catch((err) => { console.error('❌ Seed failed:', err); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });