import { PrismaClient } from '@prisma/client'; import bcrypt from 'bcrypt'; const prisma = new PrismaClient(); async function main() { console.log('Seeding database...'); // Create default tenant const tenant = await prisma.tenant.upsert({ where: { slug: 'default' }, update: {}, create: { name: 'Default Workspace', slug: 'default' } }); // Map localhost to default tenant const hostnames = ['localhost', '127.0.0.1']; for (const hostname of hostnames) { await prisma.tenantHostname.upsert({ where: { hostname }, update: {}, create: { hostname, tenantId: tenant.id, isPrimary: hostname === 'localhost' } }); } // Create admin user const passwordHash = await bcrypt.hash('admin123', 12); await prisma.user.upsert({ where: { tenantId_email: { tenantId: tenant.id, email: 'admin@example.com' } }, update: {}, create: { tenantId: tenant.id, email: 'admin@example.com', name: 'Admin', passwordHash, globalRole: 'SITE_ADMIN', tenantRole: 'ADMIN' } }); console.log('Seed complete.'); console.log(` Tenant: ${tenant.name} (${tenant.id})`); console.log(' Hostnames: localhost, 127.0.0.1'); console.log(' Admin: admin@example.com / admin123'); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(async () => { await prisma.$disconnect(); });