Brutale-api / src /models /Review.js
rohanshaw's picture
Upload 16 files
e557560 verified
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);