uhppoted-db-web/eventWatcher.js

40 lines
1.1 KiB
JavaScript

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;