// Generated, do not edit. sha256:8bd40013f30173c4395fe482f251f8d822b2781e68ecf02d880e6748f3e5817a import * as db from '../db.js'; import { CONFIG } from '../../shared/config.js'; import { nowIso } from './_shared.js'; import { takeChanges } from './_events.js'; export function flushChanges() { const namen = takeChanges(); if (!namen.length) return []; const at = nowIso(); for (const naam of namen) { db.run(`INSERT INTO BusSignal (name, occurredAt) VALUES (?,?)`, [naam, at]); } pruneChanges(); return namen; } export function pruneChanges(uren = CONFIG.BUS.RETENTION_HOURS) { const grens = new Date(Date.now() - Math.max(1, Number(uren) || CONFIG.BUS.RETENTION_HOURS) * 3600_000) .toISOString(); const r = db.one(`SELECT COUNT(*) AS n FROM BusSignal WHERE occurredAt < ?`, [grens]); const aantal = r ? r.n : 0; if (aantal) db.run(`DELETE FROM BusSignal WHERE occurredAt < ?`, [grens]); return aantal; } export function changesSince(cursor) { const vanaf = Number.isInteger(cursor) && cursor >= 0 ? cursor : null; const grens = db.one(`SELECT MIN(id) AS eerste, MAX(id) AS laatste FROM BusSignal`); const laatste = grens && grens.laatste != null ? grens.laatste : (vanaf ?? 0); if (vanaf === null) return { cursor: laatste, names: [], reset: false }; const eerste = grens ? grens.eerste : null; if (eerste != null && vanaf < eerste - 1) return { cursor: laatste, names: [], reset: true }; const rijen = db.all(`SELECT DISTINCT name FROM BusSignal WHERE id > ? ORDER BY name`, [vanaf]); return { cursor: laatste, names: rijen.map(r => r.name), reset: false }; }