53 lines
1.3 KiB
TypeScript
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 };
|