ai-chatbot/lib/site-settings/public-cache.ts
Your Name bd98282bc5
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
fix: invalidate cached public site settings
2026-05-18 17:52:16 +08:00

53 lines
1.3 KiB
TypeScript

const PUBLIC_SITE_SETTINGS_CACHE_TTL_MS = 30_000;
const PUBLIC_SITE_SETTINGS_CACHE_KEY = Symbol.for(
"ai-chatbot.public-site-settings-cache",
);
type PublicSiteSettingsCacheEntry = {
data: Record<string, unknown>;
expiresAt: number;
};
function getPublicSiteSettingsCacheStore() {
const globalCache = globalThis as typeof globalThis & {
[PUBLIC_SITE_SETTINGS_CACHE_KEY]?: Map<
string,
PublicSiteSettingsCacheEntry
>;
};
if (!globalCache[PUBLIC_SITE_SETTINGS_CACHE_KEY]) {
globalCache[PUBLIC_SITE_SETTINGS_CACHE_KEY] = new Map<
string,
PublicSiteSettingsCacheEntry
>();
}
return globalCache[PUBLIC_SITE_SETTINGS_CACHE_KEY]!;
}
export function getScopedSiteSettingsCache(cacheKey: string) {
return getPublicSiteSettingsCacheStore().get(cacheKey) ?? null;
}
export function setScopedSiteSettingsCache(
cacheKey: string,
data: Record<string, unknown>,
ttlMs: number = PUBLIC_SITE_SETTINGS_CACHE_TTL_MS,
) {
getPublicSiteSettingsCacheStore().set(cacheKey, {
data,
expiresAt: Date.now() + ttlMs,
});
}
export function deleteScopedSiteSettingsCache(cacheKey: string) {
getPublicSiteSettingsCacheStore().delete(cacheKey);
}
export function clearScopedSiteSettingsCache() {
getPublicSiteSettingsCacheStore().clear();
}
export { PUBLIC_SITE_SETTINGS_CACHE_TTL_MS };