const db = global.db; const { EventEmitter } = require('events'); const log = require("./logger"); log.info("Starting event watcher..."); const emitter = new EventEmitter(); var lastEventIndex = 0; async function getLastEventIndex() { const result = await db.query('SELECT EventIndex FROM Events ORDER BY EventIndex DESC LIMIT 1'); if (result && result.length > 0) { lastEventIndex = result[0].EventIndex; log.info(`Last event index: ${lastEventIndex}`); } } getLastEventIndex(); async function fetchEvents() { try { const events = await db.query('SELECT * FROM Events WHERE EventIndex > ? ORDER BY EventIndex ASC', [lastEventIndex]); if (events && events.length > 0) { log.debug(`Fetched ${events.length} new event(s)`); events.forEach(event => { emitter.emit('event', event); lastEventIndex = event.EventIndex; log.debug(`Processed event index: ${lastEventIndex}; ${JSON.stringify(event)}`); }); } } catch (err) { log.error(`Error fetching events: ${err}`); } setTimeout(fetchEvents, 1000); } fetchEvents(); module.exports = emitter;