import { unstable_cache } from "next/cache" import { type CacheTime, type DataCache, getCacheTimeInSeconds, } from "@/services/dataCache/Cache" import { cacheLogger } from "../../logger" export const cacheOrGet: DataCache["cacheOrGet"] = async ( key: string | string[], callback: () => Promise, ttl: CacheTime ): Promise => { if (!Array.isArray(key)) { key = [key] } const perf = performance.now() const res = await unstable_cache(callback, key, { revalidate: getCacheTimeInSeconds(ttl), tags: key, })() cacheLogger.debug(`'${key}' took ${(performance.now() - perf).toFixed(2)}ms`) return res }