// /components/sessions/sessionModel.js const mongoose = require('mongoose'); const attendanceRecordSchema = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }, status: { type: String, enum: ['present', 'absent', 'late', 'excused'], default: 'present' }, note: { type: String, trim: true }, recordedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } }, { _id: false }); const sessionSchema = new mongoose.Schema({ course: { type: mongoose.Schema.Types.ObjectId, ref: 'Course', required: true, index: true }, class: { type: mongoose.Schema.Types.ObjectId, ref: 'Class', required: true, index: true }, professor: { type: mongoose.Schema.Types.ObjectId, ref: 'Professor', index: true }, day: { type: Date, required: true, index: true }, startTime: { type: String, required: true, trim: true }, endTime: { type: String, required: true, trim: true }, place: { type: String, trim: true }, topic: { type: String, trim: true }, note: { type: String, trim: true, maxlength: 5000 }, status: { type: String, enum: ['scheduled', 'held', 'cancelled'], default: 'scheduled' }, attendanceList: [attendanceRecordSchema], reminderSentAt: { type: Date, default: null }, adminNotes: { type: [String], default: [] }, isDeleted: { type: Boolean, default: false, index: true }, deletedAt: { type: Date, default: null } }, { timestamps: true }); module.exports = mongoose.model('Session', sessionSchema);