Files
hikmettan 4eb90615e8
Quality gates / test-build (push) Canceled after 0s
Quality gates / container (push) Canceled after 0s
yenilemede ihale detay onbelleğini tazele
2026-09-06 21:23:45 +03:00

31 lines
1.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Resmî ihale detayları için süreli, sınırlı bellek önbelleği.
*
* Liste yenilense bile detay metni ayrı bir kaynaktan geldiği için sınırsız
* süre saklanamaz; zeyilname veya tarih değişikliği eski ayrıntıyı geçersiz
* kılmalıdır. Saat bağımlılığını test edebilmek için now parametresi açıktır.
*/
export function createDetailCache({ maxEntries = 500, ttlMs = 10 * 60 * 1000 } = {}) {
if (!Number.isInteger(maxEntries) || maxEntries < 1) throw new Error('Detay önbelleği sınırı geçersiz.');
if (!Number.isFinite(ttlMs) || ttlMs <= 0) throw new Error('Detay önbelleği süresi geçersiz.');
const entries = new Map();
return {
get(key, now = Date.now()) {
const entry = entries.get(key);
if (!entry) return undefined;
if (now - entry.fetchedAt >= ttlMs) {
entries.delete(key);
return undefined;
}
return entry.value;
},
set(key, value, now = Date.now()) {
entries.delete(key);
entries.set(key, { value, fetchedAt: now });
while (entries.size > maxEntries) entries.delete(entries.keys().next().value);
},
clear() { entries.clear(); },
get size() { return entries.size; },
};
}