package com.ozs.mdm.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ozs.mdm.dto.MdmCreateTableDTO;
import com.ozs.mdm.dto.MdmDimColumnType;
import com.ozs.mdm.dto.MdmDimCreateOption;
import com.ozs.mdm.dto.MdmInfoColumn;
import com.ozs.mdm.dto.MdmInfoDatabase;
import com.ozs.mdm.dto.MdmInfoTable;
import com.ozs.mdm.dto.UpdateColumnDTO;
import com.ozs.mdm.dto.UpdateTableDTO;

public interface StorageManageMapper {

	List<MdmInfoDatabase> listDatabaseOption(@Param("resourceName") String resourceName);

	List<MdmInfoDatabase> listDatabaseOptionAll(@Param("resourceName") String resourceName);

	List<MdmDimCreateOption> listCreateTableOption();

	List<MdmDimColumnType> listColumnTypeByIds(@Param("list") List<?> columns);

	MdmInfoDatabase getDatabaseById(@Param("databaseId") String databaseId);

	String getCharsetNameById(@Param("charsetId") Integer charsetId);

	void saveTable(MdmCreateTableDTO tableDto);

	void saveColumns(@Param("list") List<MdmInfoColumn> columns);

	int getMaxColumnCode();

	String[] listColumnsTypeName(@Param("resourceType") Integer resourceType);

	List<MdmDimColumnType> listColumnTypeByNames(@Param("list") List<MdmInfoColumn> columns);

	List<MdmInfoTable> listTable(@Param("tableName") String tableName, @Param("tableComment") String tableComment,
			@Param("databaseId") String databaseId);

	List<MdmInfoTable> listTableScan(@Param("tableName") String tableName, @Param("tableComment") String tableComment,
			@Param("databaseId") String databaseId);

	MdmCreateTableDTO getTableInfoById(@Param("tableId") String tableId);

	void removeTableById(@Param("tableId") String tableId);

	void removeColumnByTableId(@Param("tableId") String tableId);

	List<String> listColumnIdByTableId(String tableId);

	void saveUpdateColumn(@Param("list") List<UpdateColumnDTO> aColumns);

	void removeUpdateColumn(@Param("list") List<UpdateColumnDTO> dColumns);

	void updateUpdateColumn(@Param("list") List<UpdateColumnDTO> mColumns);

	void updateTableInfo(UpdateTableDTO uTableDto);

	List<MdmInfoColumn> listColumsByTableId(@Param("tableId") String tableId);

	List<MdmDimColumnType> listColumTypeByDatabaseType(@Param("resourceType") Integer resourceType);

	MdmInfoDatabase getDatabaseByTableId(@Param("tableId") String tableId);

	List<MdmCreateTableDTO> listCreateTableByIds(@Param("list") List<String> tableIds);

	List<MdmInfoColumn> listColumnByTableIds(@Param("list") List<String> tableIds);

	List<String> listTableNameByDatabaseId(@Param("databaseId") String databaseId);

	void saveCopyTables(@Param("list") List<MdmCreateTableDTO> tableDtos);

	List<MdmDimColumnType> listColumnTypeAll();

	List<MdmCreateTableDTO> listTableByDatabaseId(@Param("databaseId") String databaseId);

	List<MdmInfoColumn> listColumnByDatabaseId(@Param("databaseId") String databaseId);

	Integer removeColumnById(@Param("id") String id);

	// void saveCopyColumns(@Param("list") List<MdmInfoColumn> columns);

}
