mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
25 lines
1.4 KiB
JavaScript
25 lines
1.4 KiB
JavaScript
const { DataTypes } = require("sequelize");
|
|
const sequelize = require("../../config/db.config");
|
|
|
|
const CourseAssessment = sequelize.define("CourseAssessment", {
|
|
assessment_id: { type: DataTypes.BIGINT, primaryKey: true, autoIncrement: true },
|
|
uuid: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, unique: true },
|
|
course_id: { type: DataTypes.BIGINT, allowNull: false, unique: true }, // one per course
|
|
title: { type: DataTypes.STRING(255), allowNull: true },
|
|
is_required: { type: DataTypes.BOOLEAN, defaultValue: false },
|
|
passing_score: { type: DataTypes.INTEGER, defaultValue: 70 },
|
|
time_limit_minutes: { type: DataTypes.INTEGER, allowNull: true }, // null = no limit
|
|
max_questions: { type: DataTypes.INTEGER, allowNull: true }, // null = show all
|
|
max_attempts: { type: DataTypes.INTEGER, defaultValue: 3 }, // failed attempts before cooldown
|
|
cooldown_hours: { type: DataTypes.INTEGER, defaultValue: 24 }, // hours locked after hitting max_attempts
|
|
shuffle_questions: { type: DataTypes.BOOLEAN, defaultValue: false },
|
|
createdBy: { type: DataTypes.BIGINT, allowNull: true },
|
|
updatedBy: { type: DataTypes.BIGINT, allowNull: true },
|
|
deletedBy: { type: DataTypes.BIGINT, allowNull: true },
|
|
}, {
|
|
tableName: "course_assessments",
|
|
timestamps: true,
|
|
paranoid: true,
|
|
});
|
|
|
|
module.exports = CourseAssessment |