Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,38 @@
|
||||
// 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 };
|
||||
}
|
||||
Reference in new issue
Block a user