sanket3280/code-execution
0
1const mongoose = require('mongoose');2const Schema = mongoose.Schema;3 4const ChallengeMessageSchema = new Schema({5 challenge: {6 type: Schema.Types.ObjectId,7 ref: 'Challenge',8 required: true9 },10 sender: {11 type: Schema.Types.ObjectId,12 ref: 'User',13 required: true14 },15 content: {16 type: String,17 required: true18 },19 createdAt: {20 type: Date,21 default: Date.now22 }23});24 25// Virtual to get sender name (populated from User)26ChallengeMessageSchema.virtual('senderName', {27 ref: 'User',28 localField: 'sender',29 foreignField: '_id',30 justOne: true,31 get: function (user) {32 return user ? user.username : 'Unknown User';33 }34});35 36// Configure toJSON and toObject to include virtuals37ChallengeMessageSchema.set('toJSON', { virtuals: true });38ChallengeMessageSchema.set('toObject', { virtuals: true });39 40// TTL index - automatically delete challenge messages after 2 days (172800 seconds)41ChallengeMessageSchema.index({ createdAt: 1 }, { expireAfterSeconds: 172800 });42 43module.exports = mongoose.model('ChallengeMessage', ChallengeMessageSchema);