import * as Sentry from "@sentry/nextjs" import { env } from "../../env/server" import { safeTry } from "../../utils/safeTry" import { type CacheTime, getCacheTimeInSeconds } from "../Cache" import { getCacheEndpoint } from "./endpoints" const API_KEY = env.REDIS_API_KEY ?? "" export async function set(key: string, value: T, ttl: CacheTime) { const [response, error] = await safeTry( fetch(getCacheEndpoint(key), { method: "PUT", headers: { "Content-Type": "application/json", "x-api-key": API_KEY, }, body: JSON.stringify({ data: value, ttl: getCacheTimeInSeconds(ttl) }), cache: "no-cache", signal: AbortSignal.timeout(3_000), }) ) if (!response || !response.ok || error) { Sentry.captureException(error ?? new Error("Unable to SET cachekey"), { extra: { cacheKey: key, statusCode: response?.status, statusText: response?.statusText, }, }) } }