import { requestClient } from '#/api/request';

export namespace BiChartConfigApi {
  export interface ChartConfig {
    id?: number;
    dashboardId?: number;
    name?: string;
    chartType?: string;
    dataSourceId?: number;
    querySql?: string;
    position?: string;
    chartOptions?: string;
    refreshInterval?: number;
    sort?: number;
    status?: number;
    creator?: string;
    createTime?: string;
    updater?: string;
    updateTime?: string;
  }

  export interface PageParams {
    dashboardId?: number;
    pageNo?: number;
    pageSize?: number;
  }

  export interface PageResult {
    list: ChartConfig[];
    total: number;
  }
}

export function getChartConfigPage(params?: BiChartConfigApi.PageParams) {
  return requestClient.get<BiChartConfigApi.PageResult>('/bi/chart-config/page', { params });
}

export function getChartConfig(id: number) {
  return requestClient.get<BiChartConfigApi.ChartConfig>('/bi/chart-config/get', { params: { id } });
}

export function createChartConfig(data: BiChartConfigApi.ChartConfig) {
  return requestClient.post<number>('/bi/chart-config/create', data);
}

export function updateChartConfig(data: BiChartConfigApi.ChartConfig) {
  return requestClient.put<boolean>('/bi/chart-config/update', data);
}

export function deleteChartConfig(id: number) {
  return requestClient.delete<boolean>('/bi/chart-config/delete', { params: { id } });
}
