Files

27 lines
1.0 KiB
JavaScript

const mdl_UserActivity = require('../models/users/user_activity.mdl');
/**
* Fire-and-forget activity logger. Never throws — failures are console-logged only.
*
* @param {number} userId
* @param {string} action — e.g. 'login', 'submit_task', 'deactivate_user'
* @param {Object} [opts]
* @param {string} [opts.entityType] — e.g. 'user', 'task', 'lesson'
* @param {number} [opts.entityId]
* @param {number} [opts.sessionId]
* @param {Object} [opts.details] — free-form JSONB context
*/
function logActivity(userId, action, { entityType = null, entityId = null, sessionId = null, details = null } = {}) {
const numericId = entityId !== null ? Number(entityId) : null;
mdl_UserActivity.create({
user_id: userId,
action,
entity_type: entityType,
entity_id: Number.isFinite(numericId) ? numericId : null,
session_id: sessionId,
details,
}).catch((err) => console.error('[USER_ACTIVITY] Failed to log:', action, err.message));
}
module.exports = logActivity;