import mongoose, { Document, Schema, Types } from 'mongoose';

export interface IQuizAttemptDocument extends Document {
  quiz: Types.ObjectId;
  user: Types.ObjectId;
  questions: { question: Types.ObjectId; shuffled_options: string[] }[];
  startedAt: Date;
  expiresAt: Date;
  durationSeconds: number;
  status: 'in_progress' | 'submitted' | 'expired';
  createdAt: Date;
}

const quizAttemptSchema = new Schema<IQuizAttemptDocument>(
  {
    quiz: { type: Schema.Types.ObjectId, ref: 'Quiz', required: true },
    user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
    questions: [
      {
        question: { type: Schema.Types.ObjectId, ref: 'Question', required: true },
        shuffled_options: [{ type: String, required: true }],
      },
    ],
    startedAt: { type: Date, required: true },
    expiresAt: { type: Date, required: true },
    durationSeconds: { type: Number, required: true },
    status: { type: String, enum: ['in_progress', 'submitted', 'expired'], default: 'in_progress', required: true },
  },
  { timestamps: true },
);

quizAttemptSchema.index({ quiz: 1, user: 1 }, { unique: true });

export default mongoose.model<IQuizAttemptDocument>('QuizAttempt', quizAttemptSchema);
