import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { AiSqlTableVO, AiSqlTableForm, AiSqlTableQuery,DbTableQuery,DbTableVO } from '@/api/ai/base/aiSqlTable/types';

/**
 * 查询AI生成sql信息列表
 * @param query
 * @returns {*}
 */

export const listAiSqlTable = (query?: AiSqlTableQuery): AxiosPromise<AiSqlTableVO[]> => {
  return request({
    url: '/ai/aiSqlTable/list',
    method: 'get',
    params: query
  });
};

/**
 * 查询AI生成sql信息详细
 * @param tableId
 */
export const getAiSqlTable = (tableId: string | number): AxiosPromise<AiSqlTableVO> => {
  return request({
    url: '/ai/aiSqlTable/' + tableId,
    method: 'get'
  });
};

/**
 * 新增AI生成sql信息
 * @param data
 */
export const addAiSqlTable = (data: AiSqlTableForm) => {
  return request({
    url: '/ai/aiSqlTable',
    method: 'post',
    data: data
  });
};

/**
 * 修改AI生成sql信息
 * @param data
 */
export const updateAiSqlTable = (data: AiSqlTableForm) => {
  return request({
    url: '/ai/aiSqlTable',
    method: 'put',
    data: data
  });
};

/**
 * 删除AI生成sql信息
 * @param tableId
 */
export const delAiSqlTable = (tableId: string | number | Array<string | number>) => {
  return request({
    url: '/ai/aiSqlTable/' + tableId,
    method: 'delete'
  });
};


/**
 * 下拉框查询AI生成sql信息列表
 * @param query
 * @returns {*}
 */
export function getAiSqlTableList (query) {
    return request({
        url: '/ai/aiSqlTable/getAiSqlTableList',
        method: 'get',
        params: query
    });
};


// 查询db数据库列表
export const listDbTable = (query: DbTableQuery): AxiosPromise<DbTableVO[]> => {
  return request({
    url: '/ai/aiSqlTable/db/list',
    method: 'get',
    params: query
  });
};


// 导入表
export const importTable = (aiSqlTableList: AiSqlTableVO[]): AxiosPromise<AiSqlTableVO> => {
  return request({
    url: '/ai/aiSqlTable/importTable',
    method: 'post',
    data: aiSqlTableList
  });
};


// 获取数据源名称
export const getDataNames = () => {
  return request({
    url: '/ai/aiSqlTable/getDataNames',
    method: 'get'
  });
};

/**
 * 删除AI生成sql信息
 * @param tableId
 */
export const deleteAiSqlTable = (data) => {
  return request({
    url: '/ai/aiSqlTable/deleteAiSqlTable',
    method: 'delete',
    data: data
  });
};

// 获取数据源名称
export const refreshCache = () => {
  return request({
    url: '/ai/aiSqlTable/refreshCache',
    method: 'post'
  });
};
