'use server';

import { ResultDto } from '@/types/response/common';
import { MacroIndicatorsResponse } from '@/types/macro';
import { fetchJson } from '@/lib/utils/server';

// 공통 헤더 (익명 · JSON)
const JSON_HEADERS = { 'Accept': 'application/json' } as const;

// 거시경제지표 (KOSIS) — codes CSV(미지정 시 적재된 전 지표) · limit = 지표당 최근 시점 수 (백엔드 기본 60 · 최대 240)
export async function fetchMacroIndicators(params: { codes?: string[]; limit?: number }): Promise<ResultDto<MacroIndicatorsResponse>>
{
	const queryParams = new URLSearchParams();

	if (params.codes && params.codes.length > 0) queryParams.set('codes', params.codes.join(','));
	if (params.limit) queryParams.set('limit', String(params.limit));

	const qs = queryParams.toString();

	return await fetchJson<MacroIndicatorsResponse>(`/api/market/macro${qs ? `?${qs}` : ''}`, {
		method: 'GET',
		headers: JSON_HEADERS
	});
}