const mongoose = require('mongoose'); // Define a simple sub-schema for replies const ReplySchema = new mongoose.Schema({ userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', default: null }, guestName: { type: String, default: 'Anonymous' }, content: { type: String, required: true, maxLength: 500 }, createdAt: { type: Date, default: Date.now } }); const ReviewSchema = new mongoose.Schema({ mediaId: { type: mongoose.Schema.Types.ObjectId, ref: 'Media', required: true, index: true }, userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', default: null }, guestName: { type: String, default: 'Anonymous Brutalist' }, rating: { type: Number, required: true, min: 1, max: 10 }, content: { type: String, required: true, maxLength: 2000 }, isSpoiler: { type: Boolean, default: false }, // Array of embedded replies replies: [ReplySchema], upvotes: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }], downvotes: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }], weight: { type: Number, default: 1.0 } }, { timestamps: true }); ReviewSchema.index({ mediaId: 1, createdAt: -1 }); module.exports = mongoose.model('Review', ReviewSchema);