courseworx/backend/models/Enrollment.js

77 lines
No EOL
1.4 KiB
JavaScript

const { DataTypes } = require('sequelize');
const { sequelize } = require('../config/database');
const Enrollment = sequelize.define('Enrollment', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
status: {
type: DataTypes.ENUM('pending', 'active', 'completed', 'cancelled'),
allowNull: false,
defaultValue: 'pending'
},
enrolledAt: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: DataTypes.NOW
},
completedAt: {
type: DataTypes.DATE,
allowNull: true
},
progress: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
validate: {
min: 0,
max: 100
}
},
paymentStatus: {
type: DataTypes.ENUM('pending', 'paid', 'failed', 'refunded'),
allowNull: false,
defaultValue: 'pending'
},
paymentAmount: {
type: DataTypes.DECIMAL(10, 2),
allowNull: false,
defaultValue: 0.00
},
paymentDate: {
type: DataTypes.DATE,
allowNull: true
},
certificateIssued: {
type: DataTypes.BOOLEAN,
defaultValue: false
},
certificateIssuedAt: {
type: DataTypes.DATE,
allowNull: true
},
notes: {
type: DataTypes.TEXT,
allowNull: true
}
}, {
tableName: 'enrollments',
indexes: [
{
fields: ['userId']
},
{
fields: ['courseId']
},
{
fields: ['status']
},
{
fields: ['paymentStatus']
}
]
});
module.exports = Enrollment;