Release 2.8.0
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
const { fetchAppSettings } = require('#src/data/app-settings');
|
||||
|
||||
const TASK = {
|
||||
key: 'audit-log-sweep',
|
||||
title: 'Audit log cleanup',
|
||||
category: 'cleanup',
|
||||
intervalMs: 24 * 60 * 60 * 1000
|
||||
};
|
||||
|
||||
function registerAuditLogSweepTask(options) {
|
||||
const backgroundTaskQueue = options && options.backgroundTaskQueue;
|
||||
const pool = options && options.pool;
|
||||
if (!backgroundTaskQueue || !pool) {
|
||||
throw new Error('registerAuditLogSweepTask requires audit cleanup dependencies.');
|
||||
}
|
||||
backgroundTaskQueue.registerRecurringTask({
|
||||
key: TASK.key,
|
||||
title: TASK.title,
|
||||
category: TASK.category,
|
||||
intervalMs: TASK.intervalMs,
|
||||
metadata: {},
|
||||
run: async function () {
|
||||
const settings = await fetchAppSettings(pool);
|
||||
const retentionDays = Number(settings['audit.retention_days']);
|
||||
if (!Number.isInteger(retentionDays) || retentionDays <= 0) {
|
||||
return;
|
||||
}
|
||||
const cutoff = new Date(Date.now() - retentionDays * 24 * 60 * 60 * 1000);
|
||||
await pool.query('DELETE FROM o_audit_events WHERE occurred_at < ?', [cutoff]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = { registerAuditLogSweepTask };
|
||||
@@ -0,0 +1,31 @@
|
||||
const TASK = {
|
||||
key: 'expired-session-sweep',
|
||||
title: 'Expired session cleanup',
|
||||
category: 'cleanup',
|
||||
trigger: 'scheduled recurring task, hourly',
|
||||
purpose: 'remove expired authentication sessions and their metadata.',
|
||||
taskType: 'recurring-run',
|
||||
intervalMs: 60 * 60 * 1000
|
||||
};
|
||||
|
||||
function registerExpiredSessionSweepTask(options) {
|
||||
const backgroundTaskQueue = options && options.backgroundTaskQueue;
|
||||
const pool = options && options.pool;
|
||||
|
||||
if (!backgroundTaskQueue || !pool) {
|
||||
throw new Error('registerExpiredSessionSweepTask requires the session cleanup dependencies.');
|
||||
}
|
||||
|
||||
backgroundTaskQueue.registerRecurringTask({
|
||||
key: TASK.key,
|
||||
title: TASK.title,
|
||||
category: TASK.category,
|
||||
intervalMs: TASK.intervalMs,
|
||||
metadata: {},
|
||||
run: async function () {
|
||||
await pool.query('DELETE FROM a_sessions WHERE expires_at <= NOW()');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = { registerExpiredSessionSweepTask };
|
||||
Reference in New Issue
Block a user