import mongoose from 'mongoose'; import { User, Preset } from './models'; import { config } from './config'; import { logger } from './utils/logger'; async function seed(): Promise { try { await mongoose.connect(config.mongodb.uri); logger.info('Connected to MongoDB for seeding'); // Create admin user const adminExists = await User.findOne({ email: 'admin@director.ai' }); if (!adminExists) { const admin = new User({ email: 'admin@director.ai', password: 'admin12345', role: 'admin', subscription: 'studio', }); await admin.save(); logger.info('Admin user created: admin@director.ai'); } // Create demo user const demoExists = await User.findOne({ email: 'demo@director.ai' }); if (!demoExists) { const demo = new User({ email: 'demo@director.ai', password: 'demo12345', role: 'user', subscription: 'free', }); await demo.save(); // Create sample presets for demo user const presets = [ { userId: demo._id, name: 'Minimal Clean', voice: { type: 'neutral', language: 'en', tone: 'calm', speed: 1.0 }, fonts: { primary: 'Playfair Display', secondary: 'Montserrat' }, colors: { primary: '#1A1A1A', secondary: '#F5F5F5', accent: '#D4AF37' }, transitions: 'fade', videoStyle: 'minimal', }, { userId: demo._id, name: 'Dynamic Bold', voice: { type: 'energetic', language: 'en', tone: 'upbeat', speed: 1.2 }, fonts: { primary: 'Montserrat', secondary: 'Inter' }, colors: { primary: '#0A0A0A', secondary: '#FFFFFF', accent: '#FF6B35' }, transitions: 'slide', videoStyle: 'dynamic', }, { userId: demo._id, name: 'Cinematic Elegant', voice: { type: 'deep', language: 'en', tone: 'dramatic', speed: 0.9 }, fonts: { primary: 'Playfair Display', secondary: 'Lora' }, colors: { primary: '#0D1117', secondary: '#E6E6E6', accent: '#C9A55C' }, transitions: 'dissolve', videoStyle: 'cinematic', }, ]; for (const presetData of presets) { const preset = new Preset(presetData); await preset.save(); demo.presets.push(preset._id as any); } await demo.save(); logger.info('Demo user and presets created: demo@director.ai'); } logger.info('Seeding complete'); process.exit(0); } catch (error) { logger.error('Seeding failed:', error); process.exit(1); } } seed();