Spaces:
Sleeping
Sleeping
| const env = require('../config/env'); | |
| const { syncDueReminderOccurrencesForAll } = require('../services/reminders.service'); | |
| let intervalHandle = null; | |
| let isRunning = false; | |
| async function runOnce() { | |
| if (isRunning) { | |
| return; | |
| } | |
| isRunning = true; | |
| try { | |
| const synced = await syncDueReminderOccurrencesForAll({ limit: 120 }); | |
| if (synced.length > 0) { | |
| console.log(`[push-worker] Synced due reminder occurrences: ${synced.length}`); | |
| } | |
| } catch (error) { | |
| console.error('[push-worker] Failed to sync due reminders.'); | |
| console.error(error); | |
| } finally { | |
| isRunning = false; | |
| } | |
| } | |
| function startReminderPushWorker() { | |
| if (intervalHandle || !env.pushReminderWorkerEnabled) { | |
| return; | |
| } | |
| const intervalMs = Math.max(env.pushReminderWorkerIntervalSeconds, 15) * 1000; | |
| setTimeout(() => { | |
| runOnce(); | |
| }, 2000); | |
| intervalHandle = setInterval(() => { | |
| runOnce(); | |
| }, intervalMs); | |
| console.log(`[push-worker] Reminder push worker started (${Math.floor(intervalMs / 1000)}s interval).`); | |
| } | |
| module.exports = { | |
| startReminderPushWorker, | |
| }; | |