Files
ln-bi/src/server/routes/mileage/manual-snapshot.ts
T

41 lines
901 B
TypeScript

import type { RangeMileageResult } from './cache.js';
const MANUAL_SNAPSHOT_TTL_MS = 60 * 1000;
interface ManualSnapshot {
result: RangeMileageResult;
updatedAt: string;
expiresAt: number;
}
let snapshot: ManualSnapshot | null = null;
export function storeManualMonitoringSnapshot(
result: RangeMileageResult,
now = Date.now(),
): ManualSnapshot {
snapshot = {
result,
updatedAt: new Date(now).toISOString(),
expiresAt: now + MANUAL_SNAPSHOT_TTL_MS,
};
return snapshot;
}
export function getManualMonitoringSnapshot(
start: string,
end: string,
now = Date.now(),
): ManualSnapshot | null {
if (!snapshot || snapshot.expiresAt <= now) {
snapshot = null;
return null;
}
if (snapshot.result.start !== start || snapshot.result.end !== end) return null;
return snapshot;
}
export function clearManualMonitoringSnapshot(): void {
snapshot = null;
}