TransHub_backend / seed-database.js
linguabot's picture
Upload folder using huggingface_hub
da819ac verified
const mongoose = require('mongoose');
const bcrypt = require('bcryptjs');
const User = require('./models/User');
const SourceText = require('./models/SourceText');
// MongoDB connection
const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/transcreation-sandbox';
async function seedDatabase() {
try {
console.log('🌱 Starting database seeding...');
console.log('Connecting to MongoDB...');
await mongoose.connect(MONGODB_URI);
console.log('✅ Connected to MongoDB');
// Create admin user
console.log('👤 Creating admin user...');
const adminPassword = await bcrypt.hash('admin123', 10);
const adminUser = await User.findOneAndUpdate(
{ email: 'admin@example.com' },
{
email: 'admin@example.com',
password: adminPassword,
username: 'admin',
role: 'admin',
isActive: true
},
{ upsert: true, new: true }
);
console.log('✅ Admin user created:', adminUser.email);
// Create student user
console.log('👤 Creating student user...');
const studentPassword = await bcrypt.hash('student123', 10);
const studentUser = await User.findOneAndUpdate(
{ email: 'student@example.com' },
{
email: 'student@example.com',
password: studentPassword,
username: 'student',
role: 'student',
isActive: true
},
{ upsert: true, new: true }
);
console.log('✅ Student user created:', studentUser.email);
// Clear existing source texts
console.log('🗑️ Clearing existing source texts...');
await SourceText.deleteMany({});
console.log('✅ Cleared existing source texts');
// Create tutorial tasks for Week 1
console.log('📚 Creating tutorial tasks for Week 1...');
const tutorialTasks = [
{
title: 'Tutorial Task 1',
content: 'The early bird catches the worm.',
category: 'tutorial',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'beginner',
translationBrief: 'Translate this proverb into Chinese, maintaining its cultural meaning.'
},
{
title: 'Tutorial Task 2',
content: 'Actions speak louder than words.',
category: 'tutorial',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'beginner',
translationBrief: 'Translate this saying into Chinese, preserving its idiomatic nature.'
},
{
title: 'Tutorial Task 3',
content: 'A picture is worth a thousand words.',
category: 'tutorial',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'beginner',
translationBrief: 'Translate this expression into Chinese, keeping its metaphorical meaning.'
}
];
for (const task of tutorialTasks) {
await SourceText.create(task);
}
console.log('✅ Created', tutorialTasks.length, 'tutorial tasks');
// Create tutorial tasks for Week 2 (with images)
console.log('📚 Creating tutorial tasks for Week 2...');
const tutorialTasksWeek2 = [
{
title: 'Tutorial Task 1 - Week 2',
content: 'A picture is worth a thousand words.',
category: 'tutorial',
weekNumber: 2,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate',
translationBrief: 'Translate this saying into Chinese, considering the visual context of the image.',
imageUrl: 'https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=800&h=600&fit=crop',
imageAlt: 'A beautiful landscape photograph showing mountains and lake'
},
{
title: 'Tutorial Task 2 - Week 2',
content: 'The early bird catches the worm.',
category: 'tutorial',
weekNumber: 2,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate',
translationBrief: 'Translate this proverb into Chinese, considering the visual elements in the image.',
imageUrl: 'https://images.unsplash.com/photo-1444464666168-49d633b86797?w=800&h=600&fit=crop',
imageAlt: 'A bird perched on a branch during sunrise'
},
{
title: 'Tutorial Task 3 - Week 2',
content: 'Actions speak louder than words.',
category: 'tutorial',
weekNumber: 2,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate',
translationBrief: 'Translate this saying into Chinese, considering the visual context provided.',
imageUrl: 'https://images.unsplash.com/photo-1557804506-669a67965ba0?w=800&h=600&fit=crop',
imageAlt: 'People working together in a collaborative environment'
}
];
for (const task of tutorialTasksWeek2) {
await SourceText.create(task);
}
console.log('✅ Created', tutorialTasksWeek2.length, 'tutorial tasks for Week 2');
// Create weekly practice tasks for Week 1
console.log('📝 Creating weekly practice tasks for Week 1...');
const weeklyPracticeTasks = [
{
title: 'Week 1 Practice 1',
content: '为什么睡前一定要吃夜宵?因为这样才不会做饿梦。',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'Chinese',
sourceCulture: 'Chinese',
difficulty: 'intermediate',
translationBrief: 'Translate this humorous Chinese text into English, maintaining its wordplay and cultural humor.'
},
{
title: 'Week 1 Practice 2',
content: '女娲用什么补天?强扭的瓜。',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'Chinese',
sourceCulture: 'Chinese',
difficulty: 'intermediate',
translationBrief: 'Translate this Chinese riddle into English, preserving its clever wordplay.'
},
{
title: 'Week 1 Practice 3',
content: '你知道如何区分真假大象吗?把他们仍进水中,真相会浮出水面的。',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'Chinese',
sourceCulture: 'Chinese',
difficulty: 'intermediate',
translationBrief: 'Translate this Chinese joke into English, maintaining its pun and humor.'
},
{
title: 'Week 1 Practice 4',
content: 'What if Soy milk is just regular milk introducing itself in Spanish.',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate',
translationBrief: 'Translate this English joke into Chinese, preserving its linguistic humor.'
},
{
title: 'Week 1 Practice 5',
content: 'I can\'t believe I got fired from the calendar factory. All I did was take a day off.',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate',
translationBrief: 'Translate this English joke into Chinese, maintaining its wordplay humor.'
},
{
title: 'Week 1 Practice 6',
content: 'When life gives you melons, you might be dyslexic.',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate',
translationBrief: 'Translate this English wordplay into Chinese, preserving its linguistic cleverness.'
}
];
for (const task of weeklyPracticeTasks) {
await SourceText.create(task);
}
console.log('✅ Created', weeklyPracticeTasks.length, 'weekly practice tasks');
// Create practice examples (legacy support)
console.log('📖 Creating practice examples...');
const practiceExamples = [
{
title: 'Practice Example 1',
content: '为什么睡前一定要吃夜宵?因为这样才不会做饿梦。',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'Chinese',
sourceCulture: 'Chinese',
difficulty: 'intermediate'
},
{
title: 'Practice Example 2',
content: '女娲用什么补天?强扭的瓜。',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'Chinese',
sourceCulture: 'Chinese',
difficulty: 'intermediate'
},
{
title: 'Practice Example 3',
content: '你知道如何区分真假大象吗?把他们仍进水中,真相会浮出水面的。',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'Chinese',
sourceCulture: 'Chinese',
difficulty: 'intermediate'
},
{
title: 'Practice Example 4',
content: 'What if Soy milk is just regular milk introducing itself in Spanish.',
category: 'weekly-practice',
weekNumber: 1,
sourceLanguage: 'English',
sourceCulture: 'Western',
difficulty: 'intermediate'
}
];
for (const example of practiceExamples) {
await SourceText.create(example);
}
console.log('✅ Created', practiceExamples.length, 'practice examples');
console.log('🎉 Database seeding completed successfully!');
console.log('');
console.log('📋 Created:');
console.log(' 👤 Admin user: admin@example.com / admin123');
console.log(' 👤 Student user: student@example.com / student123');
console.log(' 📚 Tutorial tasks: 3 tasks for Week 1');
console.log(' 📝 Weekly practice: 6 tasks for Week 1');
console.log(' 📖 Practice examples: 4 examples');
console.log('');
console.log('🔗 You can now:');
console.log(' 1. Log in with admin@example.com / admin123');
console.log(' 2. Log in with student@example.com / student123');
console.log(' 3. View tutorial tasks and weekly practice');
console.log(' 4. Create submissions and test the voting system');
} catch (error) {
console.error('❌ Database seeding failed:', error);
process.exit(1);
} finally {
await mongoose.disconnect();
console.log('🔌 Disconnected from MongoDB');
}
}
// Run the seeding
seedDatabase();