package com.zkqy.datamodeling.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.DataSource;
import com.zkqy.datamodeling.domain.TableInfo;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;
import java.util.Map;

public interface ITableInfoService {

    //---------------------------------mysql------------------------------------------

    /**
     * 创建mysql表
     */
    void createMysqlTable(Map<String,Object> map);

    /**
     * 查询mysql数据库是否存在
     */
//    int mysqlDataBaseExist(String dataBaseName);

    /**
     * 查询数据库表是否存在
     */
    int mysqlTableExist(String dataBaseName,String tableName);


    /**
     * 查询数据库中的表信息
     */
    AjaxResult tableInfoList(Map<String,Object> map);

    /**
     * 删除表
     */
    AjaxResult dropTable(Map<String,Object> map);

    /**
     * 创建表
     */
    AjaxResult createTable(Map<String,Object> map);

    /**
     * 修改表
     */
    AjaxResult updateTable(Map<String,Object> map);
    /**
     * 查询表中有没有数据
     */
    int selectDataCount(String tableName);

    /**
     * 获取表字段信息
     */
    List<TableInfo> tableFieldInfo(Map<String,Object> map);

    /**
     * 修改mysql数据表
     */
    void updateMysqlTable(Map<String,Object> map);

    //---------------------------------sqlServer------------------------------------------

    /**
     * 创建salServer数据库和表
     */
    void createSqlServerDataBase(Map<String,Object> map);

    /**
     * 查询数据库表是否存在
     */
    int sqlServerTableExist(String dataBaseName,String tableName);

    /**
     * 查询表中是否有数据
     */
    int selectSqlServerDataCount(String tableName);

    /**
     * 删除当前库中表
     */
    void dropSqlserverTable(String tableName);

    /**
     * 修改sqlserver数据表
     */
    void updateSqlserverTable(Map<String, Object> map);

//    /**
//     * 根据数据库名称获取当前数据源所有表info
//     */
//    List<Map<String,Object>> getDataBasesInfo(@Param("DBname") String DBname);

    //---------------------------------DM------------------------------------------

    /**
     * 查询数据库表是否存在
     */
    int dmTableExist(String dataBaseName,String tableName);

    /**
     * 创建dm数据库和表
     */
    void createDmDataBase(Map<String,Object> map);

    /**
     * 修改sqlserver数据表
     */
    void updateDmTable(Map<String, Object> map);

    /**
     * 查询数据库中表数量
     */
//    int queryDmTableCount(Map<String,Object> map);

    //---------------------------------oracle------------------------------------------

    /**
     * 判断当前用户下表是否存在
     */
    int oracleTableExist(String tableName);

    /**
     * 创建oracle表
     */
    void createOracleTable(Map<String,Object> map);


    /**
     * 初始化数据库
     */
    AjaxResult initDatabase(DataSource dataSource);
}
