EventBuzz_Backend/src/models/Question.js

47 lines
1.5 KiB
JavaScript

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);