b6b345f245
- Refactor email verification and password reset utilities to use new email service. - Introduce email delivery queue and notification delivery model for better tracking. - Enhance file validation and storage services for improved security and ownership management. - Add cron job for cleaning inactive notifications with retention policy. - Update document worker to handle document generation and storage more efficiently. - Implement logging improvements in activity and log workers. - Create comprehensive documentation for new API endpoints and services. - Add unit tests for file validation and notification policies to ensure robustness.
42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
/**
|
|
* Copyright (c) 2026 Niolla
|
|
* All rights reserved.
|
|
*
|
|
* This source code is proprietary and confidential.
|
|
* Unauthorized copying, modification, distribution, or use
|
|
* of this file, via any medium, is strictly prohibited.
|
|
*/
|
|
|
|
// app/workers/activity.worker.js
|
|
|
|
const { Worker } = require("bullmq");
|
|
const connection = require("../config/redisClient");
|
|
const db = require("../models");
|
|
|
|
const UserActivity = db.UserActivity;
|
|
|
|
const createActivityWorker = () => {
|
|
const worker = new Worker(
|
|
"activity-queue",
|
|
async (job) => {
|
|
try { await UserActivity.create(job.data); }
|
|
catch (error) { if (error.name === "SequelizeUniqueConstraintError" && job.data.event_id) return { duplicate: true }; throw error; }
|
|
},
|
|
{
|
|
connection,
|
|
},
|
|
);
|
|
|
|
worker.on("completed", (job) => {
|
|
console.log(`✅ Activity logged: ${job.id}`);
|
|
});
|
|
|
|
worker.on("failed", (job, err) => {
|
|
console.error(`❌ Activity failed: ${job.id}`, err.message);
|
|
});
|
|
|
|
return worker;
|
|
};
|
|
|
|
module.exports = createActivityWorker;
|