import { http } from '@/utils/http';

/**
 * 查询机柜主板信息参数
 */
export interface SearchCabinetMainboardQuery extends BasePageQuery {
  /** 关联柜机ID */
  cabinetId?: number;
  /** 锁控板序号 */
  lockControlNo?: number;
}

/**
 * 机柜主板信息
 */
export interface CabinetMainboardDTO {
  /** 主板唯一ID */
  mainboardId?: number;
  /** 关联柜机ID */
  cabinetId: number;
  /** 锁控板序号 */
  lockControlNo: number;
  /** 创建时间 */
  createTime?: string;
  /** 更新时间 */
  updateTime?: string;
}

/**
 * 添加机柜主板信息参数
 */
export interface AddCabinetMainboardCommand {
  /** 关联柜机ID */
  cabinetId: number;
  /** 锁控板序号 */
  lockControlNo: number;
}

/**
 * 更新机柜主板信息参数
 */
export interface UpdateCabinetMainboardCommand {
  /** 主板唯一ID */
  mainboardId: number;
  /** 关联柜机ID */
  cabinetId?: number;
  /** 锁控板序号 */
  lockControlNo?: number;
}

/**
 * 获取机柜主板列表
 * @param params 查询参数
 */
export const getMainboardList = (params?: SearchCabinetMainboardQuery) => {
  return http.request<ResponseData<PageDTO<CabinetMainboardDTO>>>('get', '/cabinet/mainboards', {
    params
  });
};

/**
 * 添加机柜主板
 * @param data 主板信息
 */
export const addMainboard = (data: AddCabinetMainboardCommand) => {
  return http.request<ResponseData<void>>('post', '/cabinet/mainboards', {
    data
  });
};

/**
 * 更新机柜主板信息
 * @param id 主板ID
 * @param data 更新数据
 */
export const updateMainboard = (id: number, data: UpdateCabinetMainboardCommand) => {
  return http.request<ResponseData<void>>('put', `/cabinet/mainboards/${id}`, {
    data
  });
};

/**
 * 删除机柜主板
 * @param ids 主板ID(多个用逗号分隔)
 */
export const deleteMainboard = (ids: string) => {
  return http.request<ResponseData<void>>('delete', `/cabinet/mainboards/${ids}`);
};