ready to test

Testing

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-06-22 10:06:58 +08:00
parent bf48c95467
commit 439bb33f77
189 changed files with 17559 additions and 686 deletions
+24
View File
@@ -0,0 +1,24 @@
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;