41 lines
901 B
TypeScript
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;
|
|
}
|