| 12345678910111213141516171819 |
- 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<ResultDto<Config|null>> => {
- return await fetchPublicJson<Config>('/api/config', { revalidate: CONFIG_REVALIDATE, tags: CONFIG_TAGS });
- });
- // 관리자 관리형 상단 메뉴 조회 (노출 항목만 정렬순)
- export const fetchNavMenu = cache(async (): Promise<ResultDto<{ items: NavMenuLink[] }|null>> => {
- return await fetchPublicJson<{ items: NavMenuLink[] }>('/api/config/nav-menu', { revalidate: CONFIG_REVALIDATE, tags: CONFIG_TAGS });
- });
|