director-ai / server /src /seed.ts
algorembrant's picture
Upload 79 files
11f4e50 verified
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');
// 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();