| import mongoose from 'mongoose';
|
| import { User, Preset } from './models';
|
| import { config } from './config';
|
| import { logger } from './utils/logger';
|
|
|
| async function seed(): Promise<void> {
|
| try {
|
| await mongoose.connect(config.mongodb.uri);
|
| logger.info('Connected to MongoDB for seeding');
|
|
|
|
|
| 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');
|
| }
|
|
|
|
|
| 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();
|
|
|
|
|
| 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();
|
|
|