Spaces:
Build error
Build error
File size: 2,060 Bytes
ef73937 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | import { sessionRepository } from '@core/storage/repositories/sessions.js';
import { voteRepository } from '@core/storage/repositories/votes.js';
import { logRepository } from '@core/storage/repositories/logs.js';
import { scrapeQueueRepository } from '@core/storage/repositories/scrapeQueue.js';
import { config } from '@config/index.js';
import { sleep } from '@core/utils/helpers.js';
async function runCleanupWorker() {
console.log('🔄 Starting cleanup worker...');
await Promise.all([
sessionRepository.initialize(),
voteRepository.initialize(),
logRepository.initialize(),
scrapeQueueRepository.initialize(),
]);
let running = true;
process.on('SIGINT', () => { running = false; });
process.on('SIGTERM', () => { running = false; });
// Run immediately on start
await runCleanup();
// Then run every hour
while (running) {
await sleep(60 * 60 * 1000); // 1 hour
if (running) {
await runCleanup();
}
}
console.log('🛑 Cleanup worker stopped');
}
async function runCleanup() {
console.log('🧹 Running cleanup tasks...');
try {
const results = await Promise.allSettled([
sessionRepository.cleanupExpiredSessions(),
voteRepository.cleanupOldVotes?.() || Promise.resolve(0),
logRepository.cleanupOldLogs(30),
scrapeQueueRepository.cleanupOldItems(7),
]);
const [sessions, votes, logs, queueItems] = results.map(r =>
r.status === 'fulfilled' ? r.value : 0
);
console.log(`✅ Cleanup completed: ${sessions} sessions, ${votes} votes, ${logs} logs, ${queueItems} queue items removed`);
await logRepository.log({
level: 'info',
message: 'Cleanup completed',
context: { sessions, votes, logs, queueItems },
});
} catch (error) {
console.error('Cleanup worker error:', error);
await logRepository.log({
level: 'error',
message: 'Cleanup worker failed',
error: { name: 'Error', message: String(error), stack: String(error) },
});
}
}
runCleanupWorker().catch(console.error); |