import { cache } from 'react'; import { ResultDto } from '@/types/response/common'; import { fetchPublicJson } from '@/lib/utils/publicFetch'; import Config, { NavMenuLink } from '@/types/config'; // 전역 익명 설정 — 모든 사용자 공통이라 Data Cache 안전. React.cache(요청 내 dedupe) + tag 'site-config'(요청 간). // 설정 변경 즉시 반영이 필요하면 POST /api/revalidate?tag=site-config (REVALIDATE_SECRET 설정 시). const CONFIG_REVALIDATE = 3600; const CONFIG_TAGS = ['site-config']; // Config 값 조회 export const fetchConfig = cache(async (): Promise> => { return await fetchPublicJson('/api/config', { revalidate: CONFIG_REVALIDATE, tags: CONFIG_TAGS }); }); // 관리자 관리형 상단 메뉴 조회 (노출 항목만 정렬순) export const fetchNavMenu = cache(async (): Promise> => { return await fetchPublicJson<{ items: NavMenuLink[] }>('/api/config/nav-menu', { revalidate: CONFIG_REVALIDATE, tags: CONFIG_TAGS }); });