import request from '@/axios'
import { REQUEST_BASE } from '@/constants'

/**
 * 获取菜单列表的API接口
 *
 * 该函数通过发送GET请求到'/menus'端点，获取系统中的菜单列表
 * 不需要任何参数，也不产生任何副作用
 *
 * @returns {Promise<any>} 返回一个Promise对象，解析为菜单列表的数据
 */
export const getMenuListApi = (params: any) => {
  return request.get({ url: `${REQUEST_BASE}/menus`, params })
}

/**
 * 创建新的菜单项
 *
 * 该函数通过发送POST请求到'/menus'端点，用于在服务器上创建一个新的菜单项
 * 它接受一个数据对象作为参数，该对象包含要创建的菜单项的相关信息
 *
 * @param data 要创建的菜单项的数据对象，包含菜单项的详细信息
 * @returns 返回一个Promise对象，表示菜单项创建的异步操作的结果
 */
export const newMenuApi = (data) => {
  return request.post({ url: `${REQUEST_BASE}/menus`, data })
}

/**
 * 更新菜单项的API
 * @param {Object} data - 包含菜单项ID和其它需要更新的信息的对象
 * @returns {Promise} - 返回一个Promise对象，表示异步操作
 *
 * 此函数通过发送PUT请求来更新服务器上的菜单项
 * URL中包含菜单项的ID，以确保更新的是正确的菜单项
 */
export const setMenuApi = (data) => {
  return request.put({ url: `${REQUEST_BASE}/menus/${data.id}`, data })
}

/**
 * 删除菜单项的API
 * @param {Object} data - 包含菜单项ID和其它需要删除的信息的对象
 * @returns {Promise} - 返回一个Promise对象，表示异步操作
 *
 * 此函数通过发送DELETE请求来更新服务器上的菜单项
 * URL中包含菜单项的ID，以确保删除的是正确的菜单项
 */
export const delMenuApi = (data: { id: number }) => {
  return request.delete({ url: `${REQUEST_BASE}/menus/${data.id}` })
}
/**
 * 获取未添加权限接口列表
 *
 * 通过发送GET请求到'/menus/ruleList'来获取规则列表
 * 此函数不需要任何参数
 * 返回一个Promise对象，未添加权限接口列表
 */
export const apiRuleList = () => {
  return request.get({ url: `${REQUEST_BASE}/menus/ruleList` })
}
