// /components/activityLogs/activityLogModel.js 'use strict'; const mongoose = require('mongoose'); const ACTIVITY_ACTIONS = [ 'create', 'update', 'delete', 'login', 'logout', 'enroll', 'attendance', 'upload', 'retry', 'other' ]; const activityLogSchema = new mongoose.Schema( { actor: { type: mongoose.Schema.Types.ObjectId, ref: 'User', default: null, index: true }, actorUsername: { type: String, default: null, index: true }, actorName: { type: String, default: null }, action: { type: String, enum: ACTIVITY_ACTIONS, required: true, index: true }, resource: { type: String, required: true, index: true }, resourceId: { type: String, default: null }, method: { type: String, required: true }, path: { type: String, required: true }, statusCode: { type: Number, default: null }, ip: { type: String, default: null }, userAgent: { type: String, default: null }, description: { type: String, default: '' }, metadata: { type: mongoose.Schema.Types.Mixed, default: {} } }, { timestamps: true } ); activityLogSchema.index({ createdAt: -1 }); activityLogSchema.index({ action: 1, createdAt: -1 }); module.exports = mongoose.model('ActivityLog', activityLogSchema); module.exports.ACTIVITY_ACTIONS = ACTIVITY_ACTIONS;