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;