const { DataTypes } = require("sequelize"); const sequelize = require("../../config/db.config"); const QuizAttempt = sequelize.define("QuizAttempt", { attempt_id: { type: DataTypes.BIGINT, primaryKey: true, autoIncrement: true }, uuid: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, unique: true }, user_id: { type: DataTypes.BIGINT, allowNull: false }, // polymorphic: belongs to either unit_quiz OR course_assessment quiz_id: { type: DataTypes.BIGINT, allowNull: true }, // → unit_quizzes assessment_id: { type: DataTypes.BIGINT, allowNull: true }, // → course_assessments course_id: { type: DataTypes.BIGINT, allowNull: true }, // denormalized — for fast per-course queries answers: { type: DataTypes.JSONB, allowNull: false, defaultValue: {} }, attempt_number: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 1 }, // 1-based per user+quiz total_points: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0 }, earned_points: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0 }, score: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0 }, // percentage 0-100 passing_score: { type: DataTypes.INTEGER, allowNull: true }, // snapshot at submit time passed: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, }, { tableName: "quiz_attempts", timestamps: true, }); module.exports = QuizAttempt;