macro.ts 950 B

123456789101112131415161718192021222324
  1. 'use server';
  2. import { ResultDto } from '@/types/response/common';
  3. import { MacroIndicatorsResponse } from '@/types/macro';
  4. import { fetchJson } from '@/lib/utils/server';
  5. // 공통 헤더 (익명 · JSON)
  6. const JSON_HEADERS = { 'Accept': 'application/json' } as const;
  7. // 거시경제지표 (KOSIS) — codes CSV(미지정 시 적재된 전 지표) · limit = 지표당 최근 시점 수 (백엔드 기본 60 · 최대 240)
  8. export async function fetchMacroIndicators(params: { codes?: string[]; limit?: number }): Promise<ResultDto<MacroIndicatorsResponse>>
  9. {
  10. const queryParams = new URLSearchParams();
  11. if (params.codes && params.codes.length > 0) queryParams.set('codes', params.codes.join(','));
  12. if (params.limit) queryParams.set('limit', String(params.limit));
  13. const qs = queryParams.toString();
  14. return await fetchJson<MacroIndicatorsResponse>(`/api/market/macro${qs ? `?${qs}` : ''}`, {
  15. method: 'GET',
  16. headers: JSON_HEADERS
  17. });
  18. }