import type { TrainModeItem, TrainModePageQuery } from '#/views/x/tms/trainMode/types';

import { defHttp } from '#/api/request';
import {
  mockDeleteTrainMode,
  mockGetTrainMode,
  mockQueryTrainModes,
  mockSaveTrainMode,
  mockSetTrainModeEnabled,
} from '#/views/x/tms/trainMode/mock';

const USE_MOCK = true;
const prefix = '/api/tms/train-mode';

export function getTrainModeList(params: TrainModePageQuery) {
  if (USE_MOCK) return mockQueryTrainModes(params);
  return defHttp.get({ url: `${prefix}/list`, params });
}

export function getTrainModeInfo(id: string) {
  if (USE_MOCK) return mockGetTrainMode(id);
  return defHttp.get<TrainModeItem>({ url: `${prefix}/${id}` });
}

export function createTrainMode(data: Partial<TrainModeItem>) {
  if (USE_MOCK) return mockSaveTrainMode(data);
  return defHttp.post({ url: prefix, data });
}

export function updateTrainMode(data: Partial<TrainModeItem> & { id: string }) {
  if (USE_MOCK) return mockSaveTrainMode(data);
  return defHttp.put({ url: `${prefix}/${data.id}`, data });
}

export function setTrainModeEnabled(id: string, enabled: '0' | '1') {
  if (USE_MOCK) return mockSetTrainModeEnabled(id, enabled);
  return defHttp.put({ url: `${prefix}/${id}/enabled`, data: { enabled } });
}

export function deleteTrainMode(id: string) {
  if (USE_MOCK) return mockDeleteTrainMode(id);
  return defHttp.delete({ url: `${prefix}/${id}` });
}
