const mongoose = require('mongoose'); const answerSchema = new mongoose.Schema({ answeredBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, answer: String, answeredAt: { type: Date, default: Date.now }, isOfficial: { type: Boolean, default: false }, }); const questionSchema = new mongoose.Schema( { event: { type: mongoose.Schema.Types.ObjectId, ref: 'Event', required: true, }, session: { type: mongoose.Schema.Types.ObjectId, ref: 'Session' }, participant: { type: mongoose.Schema.Types.ObjectId, ref: 'Participant' }, user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, question: { type: String, required: true }, isAnonymous: { type: Boolean, default: false }, status: { type: String, enum: ['pending', 'answered', 'archived'], default: 'pending', }, upvotes: { type: Number, default: 0 }, downvotes: { type: Number, default: 0 }, /** * Audience votes: `key` is browser voterKey (anonymous) or participant ObjectId string (logged-in visitor). */ audienceVotes: [ { key: { type: String, required: true }, dir: { type: String, enum: ['up', 'down'], required: true }, }, ], upvotedBy: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }], answers: [answerSchema], }, { timestamps: true } ); questionSchema.index({ event: 1 }); questionSchema.index({ session: 1 }); module.exports = mongoose.model('Question', questionSchema);