/**
 * 请求工具函数
 * 统一处理数据源请求逻辑
 */

import request from '@/utils/request';
import { handleDataSourceError } from './errorHandler';

/**
 * 通用请求加载函数
 * @param url 请求地址
 * @param params 请求参数
 * @param context 错误上下文（用于错误日志）
 * @returns 数据数组
 */
export async function loadData<T>(
  url: string,
  params?: Record<string, any>,
  context?: string
): Promise<T[]> {
  return handleDataSourceError(
    async () => {
      const response = await request.get(url, { params });
      // request 拦截器已经提取了 data 字段，response 直接是数组
      return (response || []) as T[];
    },
    {
      context: context || `加载数据 (${url})`,
      fallbackValue: []
    }
  );
}

