import type { Cache } from 'cache-manager';

/**
 * Caché del catálogo de la tienda (bootstrap) en Redis.
 *
 * Next cachea el catálogo 60 s, pero no guarda respuestas de más de 2 MB: una tienda
 * grande (más de ~3.000 productos) recalculaba todo el catálogo en cada visita. El
 * backend lo guarda 60 s —el mismo margen de Next— y lo invalida cambiando la
 * «generación» de la empresa al publicar, cambiar el estado o tocar imágenes.
 */
export const CATALOGO_TTL_MS = 60_000;

export const claveGeneracionCatalogo = (empresaId: string) => `store:catalogo:gen:${empresaId}`;

export async function invalidarCatalogoTienda(cache: Cache, empresaId: string): Promise<void> {
  await cache.set(claveGeneracionCatalogo(empresaId), Date.now(), 7 * 24 * 3600 * 1000).catch(() => undefined);
}
