import request from '@/service/request'

/**
 * API列表分页查询
 * */
export function getApiTableList (params) {
  return request({
    url: '/apiCenter/page',
    method: 'GET',
    params
  })
}

/**
 * API列表编辑弹框修改
 */
export async function updateApiTableItem (data) {
  return request({
    url: '/apiCenter',
    method: 'PUT',
    data
  })
}

/**
 * 根据serviceId获取详情
 * 用appId获取
 */
export async function getDetailById (data) {
  return request({
    url: `/apiCenter?id=${data.id}&serviceId=${data.serviceId}${data.vid ? ('&vId=' + data.vid) : ''}`,
    method: 'GET'
  })
}

/**
 * 根据id删除api
 */
export function delDataById (id: string) {
  return request({
    url: `/apiCenter/${id}`,
    method: 'DELETE'
  })
}

/**
 * API新增
 */
export function addApi (data) {
  return request({
    url: '/apiCenter',
    method: 'POST',
    data
  })
}

/**
 * 根据serviceId获取api使用情况
 */
export function usagListById (apiId) {
  return request({
    url: `/apiCenter/usage?apiId=${apiId}`,
    method: 'GET'
  })
}

/**
 * 根据serviceId获取api使用情况
 */
export function copyApiById (params) {
  return request({
    url: '/apiCenter/copy',
    method: 'GET',
    params
  })
}

/**
 * 根据serviceId获取api使用情况
 */
export function saveReqAndRsp (data) {
  return request({
    url: '/apiCenter/saveReqAndRsp',
    method: 'POST',
    data
  })
}

/**
 * 服务编排批量删除
 */
export function delApiCenterBatch (data) {
  return request({
    url: '/apiCenter/batchDelete',
    method: 'POST',
    data
  })
}

/**
 * API分组列表
 */
export function treeGroupList () {
  return request({
    url: '/apiCenterGroup/tree',
    method: 'GET'
  })
}

/**
 * API分组节点详情
 */
export function treeGroupNodeInfo (id: string) {
  return request({
    url: `/apiCenterGroup/${id}`,
    method: 'GET'
  })
}

/**
 * API分组添加
 */
export function addGroupTree (data) {
  return request({
    url: '/apiCenterGroup',
    method: 'POST',
    data
  })
}

/**
 * API分组删除
 */
export function delTree (id: string) {
  return request({
    url: `/apiCenterGroup/${id}`,
    method: 'DELETE'
  })
}

/**
 * API分组修改
 */
export function editorTree (data) {
  return request({
    url: '/apiCenterGroup',
    method: 'PUT',
    data
  })
}

/**
 * 根据服务ID查询对应版本
 */
export function apiCenterRevision (serviceId: string) {
  return request({
    url: `/apiCenterRevision?serviceId=${serviceId}`,
    method: 'GET'
  })
}

/**
 * 版本管理 新增版本
 * @apiId  API主键 必须
 * @snapshot 快照号 必须
 * @version 版本号 必须
 * @remark 版本说明 非必须
 */
export function apiVersion (data) {
  return request({
    url: 'apiVersion',
    method: 'GET',
    data
  })
}

/**
 * 版本管理分页查询
 * @apiId API主键
 * @pageNum 当前页
 * @pageSize 页数大小
 * @remark 版本描述
 */
export function apiVersionPage (params) {
  return request({
    url: '/apiVersion/page',
    method: 'GET',
    params
  })
}

/**
 * 启用版本
 * @id api 版本主键
 */
export function enableVersion (id: string) {
  return request({
    url: `/apiVersion/enable/${id}`,
    method: 'PUT'
  })
}

/**
 * 停用版本
 * @id api 版本主键
 */
export function disableVersion (id: string) {
  return request({
    url: `/apiVersion/disable/${id}`,
    method: 'PUT'
  })
}

/**
 * 发布
 * @id api 版本主键
 */
export function disableVersionPush (id: string) {
  return request({
    url: `/apiVersion/publish/${id}`,
    method: 'PUT'
  })
}

/**
 * 复制发布地址
 * @id api 版本主键
 */
export function versionCopyPushPath (id: string) {
  return request({
    url: `/apiCenter/getPublishPath/${id}`,
    method: 'GET'
  })
}

/**
 * 导出源码
 * id: api的ID
 * vid: 版本ID
 */
export function exportCode (id: string, vid: string) {
  return request({
    url: `/apiCode/${id}/${vid}`,
    method: 'GET',
    headers: {
      responseType: 'blob'
    }
  })
}

/**
 * 查询数据源
 */
export function appDsPage (params) {
  return request({
    url: '/apiCenter/qryAppDsPage',
    method: 'GET',
    params
  })
}

/**
 * 查询模型
 */
export function appTableByAppDs (params) {
  return request({
    url: '/apiCenter/qryAppTableByAppDs',
    method: 'GET',
    params
  })
}

/**
 * 查询模型字段
 */
export function modelColumns (params) {
  return request({
    url: '/apiCenter/qryModelColumns',
    method: 'GET',
    params
  })
}

/**
 * 查询数据类型
 */
export function appTableDataType (params) {
  return request({
    url: '/apiCenter/qryAppTableDataType',
    method: 'GET',
    params
  })
}

/**
 * 查询主表关联的表
 */
export function associative (params) {
  return request({
    url: '/apiCenter/qryAppTableRelationListByMainTableId',
    method: 'GET',
    params
  })
}
