Tristan Yu
Add separate 'Add New Image' function for week 3+ with size and alignment options
2186eb8
const mongoose = require('mongoose');
const culturalElementSchema = new mongoose.Schema({
element: { type: String, required: true },
description: { type: String, required: true },
significance: { type: String, required: true }
});
const sourceTextSchema = new mongoose.Schema({
title: { type: String, required: true },
content: { type: String, required: true },
sourceLanguage: { type: String, required: true },
sourceType: {
type: String,
enum: ['api', 'manual', 'practice', 'tutorial', 'weekly-practice'],
default: 'manual'
},
category: {
type: String,
enum: ['practice', 'tutorial', 'weekly-practice'],
required: true
},
weekNumber: {
type: Number,
required: function() { return this.category !== 'practice'; }
},
translationBrief: { type: String },
imageUrl: { type: String },
imageAlt: { type: String },
imageSize: { type: Number, default: 200 },
imageAlignment: { type: String, enum: ['left', 'center', 'right'], default: 'center' },
culturalElements: [culturalElementSchema],
difficulty: {
type: String,
enum: ['beginner', 'intermediate', 'advanced'],
default: 'intermediate'
},
tags: [String],
targetCultures: [String],
isActive: { type: Boolean, default: true },
usageCount: { type: Number, default: 0 },
averageRating: { type: Number, default: 0 },
ratingCount: { type: Number, default: 0 }
}, {
timestamps: true
});
module.exports = mongoose.model('SourceText', sourceTextSchema);